@olafvv/ngx-dynamic-form 0.0.2 → 0.1.0
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/dynamic-form/dynamic-form.component.mjs +21 -15
- package/esm2022/lib/components/dynamic-form-field/dynamic-form-field.component.mjs +17 -3
- package/esm2022/lib/controls/button/dynamic-button.component.mjs +3 -3
- package/esm2022/lib/controls/button-toggles/dynamic-button-toggles.component.mjs +27 -0
- package/esm2022/lib/controls/button-toggles/dynamic-button-toggles.model.mjs +11 -0
- package/esm2022/lib/controls/checkbox/dynamic-checkbox.component.mjs +5 -11
- package/esm2022/lib/controls/index.mjs +2 -1
- package/esm2022/lib/controls/input/dynamic-input.component.mjs +12 -11
- package/esm2022/lib/controls/input/dynamic-input.model.mjs +2 -1
- package/esm2022/lib/controls/readonly/dynamic-readonly.component.mjs +3 -3
- package/esm2022/lib/controls/select/dynamic-select.component.mjs +5 -11
- package/esm2022/lib/controls/textarea/dynamic-textarea.component.mjs +12 -11
- package/esm2022/lib/models/classes/dynamic-form-field-base.mjs +28 -0
- package/esm2022/lib/models/classes/dynamic-form-field-model.mjs +1 -1
- package/esm2022/lib/models/constants/dynamic-relations.const.mjs +2 -15
- package/esm2022/lib/models/index.mjs +4 -3
- package/esm2022/lib/models/interfaces/dynamic-form-field-config.interface.mjs +1 -1
- package/esm2022/lib/models/interfaces/dynamic-form-field-event.interface.mjs +2 -0
- package/esm2022/lib/models/interfaces/dynamic-form-field-relation.interface.mjs +15 -0
- package/esm2022/lib/services/dynamic-form-relations.service.mjs +3 -2
- package/esm2022/lib/services/dynamic-form.service.mjs +12 -8
- package/fesm2022/olafvv-ngx-dynamic-form.mjs +186 -146
- package/fesm2022/olafvv-ngx-dynamic-form.mjs.map +1 -1
- package/lib/components/dynamic-form/dynamic-form.component.d.ts +15 -9
- package/lib/components/dynamic-form-field/dynamic-form-field.component.d.ts +6 -2
- package/lib/controls/button/dynamic-button.component.d.ts +2 -2
- package/lib/controls/button-toggles/dynamic-button-toggles.component.d.ts +13 -0
- package/lib/controls/button-toggles/dynamic-button-toggles.model.d.ts +12 -0
- package/lib/controls/checkbox/dynamic-checkbox.component.d.ts +3 -5
- package/lib/controls/index.d.ts +1 -0
- package/lib/controls/input/dynamic-input.component.d.ts +6 -6
- package/lib/controls/input/dynamic-input.model.d.ts +2 -0
- package/lib/controls/readonly/dynamic-readonly.component.d.ts +2 -2
- package/lib/controls/select/dynamic-select.component.d.ts +5 -6
- package/lib/controls/textarea/dynamic-textarea.component.d.ts +6 -6
- package/lib/models/classes/{dynamic-form-field-base-component.d.ts → dynamic-form-field-base.d.ts} +2 -8
- package/lib/models/classes/dynamic-form-field-model.d.ts +2 -3
- package/lib/models/constants/dynamic-relations.const.d.ts +1 -29
- package/lib/models/index.d.ts +3 -2
- package/lib/models/interfaces/dynamic-form-field-config.interface.d.ts +4 -5
- package/lib/models/interfaces/dynamic-form-field-event.interface.d.ts +10 -0
- package/lib/models/interfaces/dynamic-form-field-relation.interface.d.ts +29 -0
- package/lib/services/dynamic-form.service.d.ts +12 -8
- package/package.json +1 -1
- package/esm2022/lib/models/classes/dynamic-form-field-base-component.mjs +0 -34
- package/esm2022/lib/models/types/dynamic-form-hook.type.mjs +0 -2
- package/lib/models/types/dynamic-form-hook.type.d.ts +0 -1
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { NgClass, NgFor } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, EventEmitter,
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { DynamicFormService } from '../../services/dynamic-form.service';
|
|
5
5
|
import { DynamicFormFieldComponent } from '../dynamic-form-field/dynamic-form-field.component';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/forms";
|
|
8
7
|
export class DynamicFormComponent {
|
|
9
8
|
constructor() {
|
|
10
|
-
this.
|
|
11
|
-
this.dynamicFormService = inject(DynamicFormService);
|
|
9
|
+
this.change = new EventEmitter();
|
|
12
10
|
}
|
|
13
11
|
/**
|
|
14
12
|
* Get the formConfig as flat array.
|
|
@@ -16,10 +14,12 @@ export class DynamicFormComponent {
|
|
|
16
14
|
get flatFormConfig() {
|
|
17
15
|
return this.formConfig.reduce((acc, curr) => acc.concat(curr), []);
|
|
18
16
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
/**
|
|
18
|
+
* TrackBy Function for performance optimization
|
|
19
|
+
* @param _index
|
|
20
|
+
* @param field
|
|
21
|
+
* @returns
|
|
22
|
+
*/
|
|
23
23
|
trackByFn(_index, field) {
|
|
24
24
|
return field.id;
|
|
25
25
|
}
|
|
@@ -35,25 +35,31 @@ export class DynamicFormComponent {
|
|
|
35
35
|
* Provides an Observable to listen to changes of a specific field in the form.
|
|
36
36
|
*
|
|
37
37
|
* @param name Name of the field
|
|
38
|
-
* @returns Observable<
|
|
38
|
+
* @returns Observable<unknown>
|
|
39
39
|
*/
|
|
40
|
-
|
|
40
|
+
onControlChange(name) {
|
|
41
41
|
const field = this.group.get(name);
|
|
42
42
|
if (!field) {
|
|
43
43
|
throw new Error(`Cannot find a field with the name ${name} in the FormGroup`);
|
|
44
44
|
}
|
|
45
45
|
return field.valueChanges;
|
|
46
46
|
}
|
|
47
|
+
onChange(event) {
|
|
48
|
+
this.change.emit(event);
|
|
49
|
+
}
|
|
47
50
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicFormComponent, isStandalone: true, selector: "dynamic-form", inputs: { formConfig: "formConfig" }, outputs: {
|
|
51
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicFormComponent, isStandalone: true, selector: "dynamic-form", inputs: { group: "group", formConfig: "formConfig" }, outputs: { change: "change" }, providers: [DynamicFormService], ngImport: i0, template: "<div *ngFor=\"let row of formConfig\"\n class=\"dynamic-form-row\">\n <dynamic-form-field *ngFor=\"let field of row; trackBy: trackByFn\"\n class=\"dynamic-form-field\"\n [id]=\"field.id\"\n [hidden]=\"field.hidden\"\n [ngClass]=\"[field.type, 'form-field-width-'+field.width]\"\n [group]=\"group\"\n [model]=\"field\"\n (change)=\"onChange($event)\">\n </dynamic-form-field>\n</div>", styles: [".dynamic-form-row{display:flex}.dynamic-form-row .dynamic-form-field{width:100%;margin:4px 0}.dynamic-form-row .dynamic-form-field:not(:last-of-type){margin-right:12px}.dynamic-form-row .dynamic-form-field.button{flex:0}.dynamic-form-row .form-field-width-1{width:1%}.dynamic-form-row .form-field-width-2{width:2%}.dynamic-form-row .form-field-width-3{width:3%}.dynamic-form-row .form-field-width-4{width:4%}.dynamic-form-row .form-field-width-5{width:5%}.dynamic-form-row .form-field-width-6{width:6%}.dynamic-form-row .form-field-width-7{width:7%}.dynamic-form-row .form-field-width-8{width:8%}.dynamic-form-row .form-field-width-9{width:9%}.dynamic-form-row .form-field-width-10{width:10%}.dynamic-form-row .form-field-width-11{width:11%}.dynamic-form-row .form-field-width-12{width:12%}.dynamic-form-row .form-field-width-13{width:13%}.dynamic-form-row .form-field-width-14{width:14%}.dynamic-form-row .form-field-width-15{width:15%}.dynamic-form-row .form-field-width-16{width:16%}.dynamic-form-row .form-field-width-17{width:17%}.dynamic-form-row .form-field-width-18{width:18%}.dynamic-form-row .form-field-width-19{width:19%}.dynamic-form-row .form-field-width-20{width:20%}.dynamic-form-row .form-field-width-21{width:21%}.dynamic-form-row .form-field-width-22{width:22%}.dynamic-form-row .form-field-width-23{width:23%}.dynamic-form-row .form-field-width-24{width:24%}.dynamic-form-row .form-field-width-25{width:25%}.dynamic-form-row .form-field-width-26{width:26%}.dynamic-form-row .form-field-width-27{width:27%}.dynamic-form-row .form-field-width-28{width:28%}.dynamic-form-row .form-field-width-29{width:29%}.dynamic-form-row .form-field-width-30{width:30%}.dynamic-form-row .form-field-width-31{width:31%}.dynamic-form-row .form-field-width-32{width:32%}.dynamic-form-row .form-field-width-33{width:33%}.dynamic-form-row .form-field-width-34{width:34%}.dynamic-form-row .form-field-width-35{width:35%}.dynamic-form-row .form-field-width-36{width:36%}.dynamic-form-row .form-field-width-37{width:37%}.dynamic-form-row .form-field-width-38{width:38%}.dynamic-form-row .form-field-width-39{width:39%}.dynamic-form-row .form-field-width-40{width:40%}.dynamic-form-row .form-field-width-41{width:41%}.dynamic-form-row .form-field-width-42{width:42%}.dynamic-form-row .form-field-width-43{width:43%}.dynamic-form-row .form-field-width-44{width:44%}.dynamic-form-row .form-field-width-45{width:45%}.dynamic-form-row .form-field-width-46{width:46%}.dynamic-form-row .form-field-width-47{width:47%}.dynamic-form-row .form-field-width-48{width:48%}.dynamic-form-row .form-field-width-49{width:49%}.dynamic-form-row .form-field-width-50{width:50%}.dynamic-form-row .form-field-width-51{width:51%}.dynamic-form-row .form-field-width-52{width:52%}.dynamic-form-row .form-field-width-53{width:53%}.dynamic-form-row .form-field-width-54{width:54%}.dynamic-form-row .form-field-width-55{width:55%}.dynamic-form-row .form-field-width-56{width:56%}.dynamic-form-row .form-field-width-57{width:57%}.dynamic-form-row .form-field-width-58{width:58%}.dynamic-form-row .form-field-width-59{width:59%}.dynamic-form-row .form-field-width-60{width:60%}.dynamic-form-row .form-field-width-61{width:61%}.dynamic-form-row .form-field-width-62{width:62%}.dynamic-form-row .form-field-width-63{width:63%}.dynamic-form-row .form-field-width-64{width:64%}.dynamic-form-row .form-field-width-65{width:65%}.dynamic-form-row .form-field-width-66{width:66%}.dynamic-form-row .form-field-width-67{width:67%}.dynamic-form-row .form-field-width-68{width:68%}.dynamic-form-row .form-field-width-69{width:69%}.dynamic-form-row .form-field-width-70{width:70%}.dynamic-form-row .form-field-width-71{width:71%}.dynamic-form-row .form-field-width-72{width:72%}.dynamic-form-row .form-field-width-73{width:73%}.dynamic-form-row .form-field-width-74{width:74%}.dynamic-form-row .form-field-width-75{width:75%}.dynamic-form-row .form-field-width-76{width:76%}.dynamic-form-row .form-field-width-77{width:77%}.dynamic-form-row .form-field-width-78{width:78%}.dynamic-form-row .form-field-width-79{width:79%}.dynamic-form-row .form-field-width-80{width:80%}.dynamic-form-row .form-field-width-81{width:81%}.dynamic-form-row .form-field-width-82{width:82%}.dynamic-form-row .form-field-width-83{width:83%}.dynamic-form-row .form-field-width-84{width:84%}.dynamic-form-row .form-field-width-85{width:85%}.dynamic-form-row .form-field-width-86{width:86%}.dynamic-form-row .form-field-width-87{width:87%}.dynamic-form-row .form-field-width-88{width:88%}.dynamic-form-row .form-field-width-89{width:89%}.dynamic-form-row .form-field-width-90{width:90%}.dynamic-form-row .form-field-width-91{width:91%}.dynamic-form-row .form-field-width-92{width:92%}.dynamic-form-row .form-field-width-93{width:93%}.dynamic-form-row .form-field-width-94{width:94%}.dynamic-form-row .form-field-width-95{width:95%}.dynamic-form-row .form-field-width-96{width:96%}.dynamic-form-row .form-field-width-97{width:97%}.dynamic-form-row .form-field-width-98{width:98%}.dynamic-form-row .form-field-width-99{width:99%}.dynamic-form-row .form-field-width-100{width:100%}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: DynamicFormFieldComponent, selector: "dynamic-form-field", inputs: ["model", "group"], outputs: ["change"] }, { kind: "ngmodule", type: ReactiveFormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
49
52
|
}
|
|
50
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicFormComponent, decorators: [{
|
|
51
54
|
type: Component,
|
|
52
|
-
args: [{ standalone: true, imports: [NgFor, NgClass, DynamicFormFieldComponent, ReactiveFormsModule], selector: 'dynamic-form', providers: [DynamicFormService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
53
|
-
}], propDecorators: {
|
|
55
|
+
args: [{ standalone: true, imports: [NgFor, NgClass, DynamicFormFieldComponent, ReactiveFormsModule], selector: 'dynamic-form', providers: [DynamicFormService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngFor=\"let row of formConfig\"\n class=\"dynamic-form-row\">\n <dynamic-form-field *ngFor=\"let field of row; trackBy: trackByFn\"\n class=\"dynamic-form-field\"\n [id]=\"field.id\"\n [hidden]=\"field.hidden\"\n [ngClass]=\"[field.type, 'form-field-width-'+field.width]\"\n [group]=\"group\"\n [model]=\"field\"\n (change)=\"onChange($event)\">\n </dynamic-form-field>\n</div>", styles: [".dynamic-form-row{display:flex}.dynamic-form-row .dynamic-form-field{width:100%;margin:4px 0}.dynamic-form-row .dynamic-form-field:not(:last-of-type){margin-right:12px}.dynamic-form-row .dynamic-form-field.button{flex:0}.dynamic-form-row .form-field-width-1{width:1%}.dynamic-form-row .form-field-width-2{width:2%}.dynamic-form-row .form-field-width-3{width:3%}.dynamic-form-row .form-field-width-4{width:4%}.dynamic-form-row .form-field-width-5{width:5%}.dynamic-form-row .form-field-width-6{width:6%}.dynamic-form-row .form-field-width-7{width:7%}.dynamic-form-row .form-field-width-8{width:8%}.dynamic-form-row .form-field-width-9{width:9%}.dynamic-form-row .form-field-width-10{width:10%}.dynamic-form-row .form-field-width-11{width:11%}.dynamic-form-row .form-field-width-12{width:12%}.dynamic-form-row .form-field-width-13{width:13%}.dynamic-form-row .form-field-width-14{width:14%}.dynamic-form-row .form-field-width-15{width:15%}.dynamic-form-row .form-field-width-16{width:16%}.dynamic-form-row .form-field-width-17{width:17%}.dynamic-form-row .form-field-width-18{width:18%}.dynamic-form-row .form-field-width-19{width:19%}.dynamic-form-row .form-field-width-20{width:20%}.dynamic-form-row .form-field-width-21{width:21%}.dynamic-form-row .form-field-width-22{width:22%}.dynamic-form-row .form-field-width-23{width:23%}.dynamic-form-row .form-field-width-24{width:24%}.dynamic-form-row .form-field-width-25{width:25%}.dynamic-form-row .form-field-width-26{width:26%}.dynamic-form-row .form-field-width-27{width:27%}.dynamic-form-row .form-field-width-28{width:28%}.dynamic-form-row .form-field-width-29{width:29%}.dynamic-form-row .form-field-width-30{width:30%}.dynamic-form-row .form-field-width-31{width:31%}.dynamic-form-row .form-field-width-32{width:32%}.dynamic-form-row .form-field-width-33{width:33%}.dynamic-form-row .form-field-width-34{width:34%}.dynamic-form-row .form-field-width-35{width:35%}.dynamic-form-row .form-field-width-36{width:36%}.dynamic-form-row .form-field-width-37{width:37%}.dynamic-form-row .form-field-width-38{width:38%}.dynamic-form-row .form-field-width-39{width:39%}.dynamic-form-row .form-field-width-40{width:40%}.dynamic-form-row .form-field-width-41{width:41%}.dynamic-form-row .form-field-width-42{width:42%}.dynamic-form-row .form-field-width-43{width:43%}.dynamic-form-row .form-field-width-44{width:44%}.dynamic-form-row .form-field-width-45{width:45%}.dynamic-form-row .form-field-width-46{width:46%}.dynamic-form-row .form-field-width-47{width:47%}.dynamic-form-row .form-field-width-48{width:48%}.dynamic-form-row .form-field-width-49{width:49%}.dynamic-form-row .form-field-width-50{width:50%}.dynamic-form-row .form-field-width-51{width:51%}.dynamic-form-row .form-field-width-52{width:52%}.dynamic-form-row .form-field-width-53{width:53%}.dynamic-form-row .form-field-width-54{width:54%}.dynamic-form-row .form-field-width-55{width:55%}.dynamic-form-row .form-field-width-56{width:56%}.dynamic-form-row .form-field-width-57{width:57%}.dynamic-form-row .form-field-width-58{width:58%}.dynamic-form-row .form-field-width-59{width:59%}.dynamic-form-row .form-field-width-60{width:60%}.dynamic-form-row .form-field-width-61{width:61%}.dynamic-form-row .form-field-width-62{width:62%}.dynamic-form-row .form-field-width-63{width:63%}.dynamic-form-row .form-field-width-64{width:64%}.dynamic-form-row .form-field-width-65{width:65%}.dynamic-form-row .form-field-width-66{width:66%}.dynamic-form-row .form-field-width-67{width:67%}.dynamic-form-row .form-field-width-68{width:68%}.dynamic-form-row .form-field-width-69{width:69%}.dynamic-form-row .form-field-width-70{width:70%}.dynamic-form-row .form-field-width-71{width:71%}.dynamic-form-row .form-field-width-72{width:72%}.dynamic-form-row .form-field-width-73{width:73%}.dynamic-form-row .form-field-width-74{width:74%}.dynamic-form-row .form-field-width-75{width:75%}.dynamic-form-row .form-field-width-76{width:76%}.dynamic-form-row .form-field-width-77{width:77%}.dynamic-form-row .form-field-width-78{width:78%}.dynamic-form-row .form-field-width-79{width:79%}.dynamic-form-row .form-field-width-80{width:80%}.dynamic-form-row .form-field-width-81{width:81%}.dynamic-form-row .form-field-width-82{width:82%}.dynamic-form-row .form-field-width-83{width:83%}.dynamic-form-row .form-field-width-84{width:84%}.dynamic-form-row .form-field-width-85{width:85%}.dynamic-form-row .form-field-width-86{width:86%}.dynamic-form-row .form-field-width-87{width:87%}.dynamic-form-row .form-field-width-88{width:88%}.dynamic-form-row .form-field-width-89{width:89%}.dynamic-form-row .form-field-width-90{width:90%}.dynamic-form-row .form-field-width-91{width:91%}.dynamic-form-row .form-field-width-92{width:92%}.dynamic-form-row .form-field-width-93{width:93%}.dynamic-form-row .form-field-width-94{width:94%}.dynamic-form-row .form-field-width-95{width:95%}.dynamic-form-row .form-field-width-96{width:96%}.dynamic-form-row .form-field-width-97{width:97%}.dynamic-form-row .form-field-width-98{width:98%}.dynamic-form-row .form-field-width-99{width:99%}.dynamic-form-row .form-field-width-100{width:100%}\n"] }]
|
|
56
|
+
}], propDecorators: { group: [{
|
|
57
|
+
type: Input,
|
|
58
|
+
args: [{ required: true }]
|
|
59
|
+
}], formConfig: [{
|
|
54
60
|
type: Input,
|
|
55
61
|
args: [{ required: true }]
|
|
56
|
-
}],
|
|
62
|
+
}], change: [{
|
|
57
63
|
type: Output
|
|
58
64
|
}] } });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLG1CQUFtQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBS3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOztBQVcvRixNQUFNLE9BQU8sb0JBQW9CO0lBVGpDO1FBYVksV0FBTSxHQUF3QyxJQUFJLFlBQVksRUFBRSxDQUFDO0tBZ0Q1RTtJQTlDQzs7T0FFRztJQUNILElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxTQUFTLENBQUMsTUFBYyxFQUFFLEtBQTRCO1FBQzNELE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWSxDQUFjLHFCQUFxQixHQUFHLElBQUk7UUFDM0QsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBRXRGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGVBQWUsQ0FBQyxJQUFZO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxJQUFJLG1CQUFtQixDQUFDLENBQUM7U0FDL0U7UUFFRCxPQUFPLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFDNUIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUE0QjtRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDOytHQW5EVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixnSkFIcEIsQ0FBQyxrQkFBa0IsQ0FBQywwQkNoQmpDLHlaQVdNLDRpS0RDTSxLQUFLLG1IQUFFLE9BQU8sb0ZBQUUseUJBQXlCLCtHQUFFLG1CQUFtQjs7NEZBTzdELG9CQUFvQjtrQkFUaEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLG1CQUFtQixDQUFDLFlBQy9ELGNBQWMsYUFHYixDQUFDLGtCQUFrQixDQUFDLG1CQUNkLHVCQUF1QixDQUFDLE1BQU07OEJBR3BCLEtBQUs7c0JBQS9CLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLFVBQVU7c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUVmLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW50ZXJmYWNlcy9keW5hbWljLWZvcm0tZmllbGQtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3R5cGVzL2R5bmFtaWMtZm9ybS1jb25maWcudHlwZSc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZHluYW1pYy1mb3JtLWZpZWxkL2R5bmFtaWMtZm9ybS1maWVsZC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nRm9yLCBOZ0NsYXNzLCBEeW5hbWljRm9ybUZpZWxkQ29tcG9uZW50LCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdkeW5hbWljLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJ2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtEeW5hbWljRm9ybVNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbXBvbmVudCB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGdyb3VwITogVW50eXBlZEZvcm1Hcm91cDtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZm9ybUNvbmZpZyE6IER5bmFtaWNGb3JtQ29uZmlnO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUZpZWxkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZvcm1Db25maWcgYXMgZmxhdCBhcnJheS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZmxhdEZvcm1Db25maWcoKTogRHluYW1pY0Zvcm1GaWVsZE1vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWcucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYy5jb25jYXQoY3VyciksIFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFja0J5IEZ1bmN0aW9uIGZvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25cbiAgICogQHBhcmFtIF9pbmRleFxuICAgKiBAcGFyYW0gZmllbGRcbiAgICogQHJldHVybnNcbiAgICovXG4gIHB1YmxpYyB0cmFja0J5Rm4oX2luZGV4OiBudW1iZXIsIGZpZWxkOiBEeW5hbWljRm9ybUZpZWxkTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBmaWVsZC5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZvcm0uXG4gICAqIEBwYXJhbSBpbmNsdWRlRGlzYWJsZWRGaWVsZHMgSW5jbHVkZSB0aGUgZGlzYWJsZWQgZmllbGRzIG9mIHRoZSBmb3JtLCBpcyBlbmFibGVkIGJ5IGRlZmF1bHRcbiAgICovXG4gIHB1YmxpYyBnZXRGb3JtVmFsdWU8VCA9IHVua25vd24+KGluY2x1ZGVEaXNhYmxlZEZpZWxkcyA9IHRydWUpOiBUIHtcbiAgICBjb25zdCBmb3JtVmFsdWUgPSBpbmNsdWRlRGlzYWJsZWRGaWVsZHMgPyB0aGlzLmdyb3VwLmdldFJhd1ZhbHVlKCkgOiB0aGlzLmdyb3VwLnZhbHVlO1xuXG4gICAgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhbiBPYnNlcnZhYmxlIHRvIGxpc3RlbiB0byBjaGFuZ2VzIG9mIGEgc3BlY2lmaWMgZmllbGQgaW4gdGhlIGZvcm0uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIGZpZWxkXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dW5rbm93bj5cbiAgICovXG4gIHB1YmxpYyBvbkNvbnRyb2xDaGFuZ2UobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmdyb3VwLmdldChuYW1lKTtcblxuICAgIGlmICghZmllbGQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgYSBmaWVsZCB3aXRoIHRoZSBuYW1lICR7bmFtZX0gaW4gdGhlIEZvcm1Hcm91cGApO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZC52YWx1ZUNoYW5nZXM7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IER5bmFtaWNGb3JtRmllbGRFdmVudCkge1xuICAgIHRoaXMuY2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2YgZm9ybUNvbmZpZ1wiXG4gIGNsYXNzPVwiZHluYW1pYy1mb3JtLXJvd1wiPlxuICA8ZHluYW1pYy1mb3JtLWZpZWxkICpuZ0Zvcj1cImxldCBmaWVsZCBvZiByb3c7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgY2xhc3M9XCJkeW5hbWljLWZvcm0tZmllbGRcIlxuICAgIFtpZF09XCJmaWVsZC5pZFwiXG4gICAgW2hpZGRlbl09XCJmaWVsZC5oaWRkZW5cIlxuICAgIFtuZ0NsYXNzXT1cIltmaWVsZC50eXBlLCAnZm9ybS1maWVsZC13aWR0aC0nK2ZpZWxkLndpZHRoXVwiXG4gICAgW2dyb3VwXT1cImdyb3VwXCJcbiAgICBbbW9kZWxdPVwiZmllbGRcIlxuICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxuICA8L2R5bmFtaWMtZm9ybS1maWVsZD5cbjwvZGl2PiJdfQ==
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { NgClass } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, inject, Input, ViewChild, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { Subscription } from 'rxjs';
|
|
5
|
+
import { DynamicButtonTogglesComponent } from '../../controls/button-toggles/dynamic-button-toggles.component';
|
|
6
|
+
import { DYNAMIC_FORM_FIELD_BUTTON_TOGGLES } from '../../controls/button-toggles/dynamic-button-toggles.model';
|
|
5
7
|
import { DynamicButtonComponent } from '../../controls/button/dynamic-button.component';
|
|
6
8
|
import { DYNAMIC_FORM_FIELD_BUTTON } from '../../controls/button/dynamic-button.model';
|
|
7
9
|
import { DynamicCheckboxComponent } from '../../controls/checkbox/dynamic-checkbox.component';
|
|
@@ -21,6 +23,7 @@ import * as i0 from "@angular/core";
|
|
|
21
23
|
import * as i1 from "@angular/forms";
|
|
22
24
|
export class DynamicFormFieldComponent {
|
|
23
25
|
constructor() {
|
|
26
|
+
this.change = new EventEmitter();
|
|
24
27
|
this._subs = new Subscription();
|
|
25
28
|
this.dynamicFormService = inject(DynamicFormService);
|
|
26
29
|
this.relationService = inject(DynamicFormRelationsService);
|
|
@@ -57,6 +60,8 @@ export class DynamicFormFieldComponent {
|
|
|
57
60
|
return DynamicSelectComponent;
|
|
58
61
|
case DYNAMIC_FORM_FIELD_BUTTON:
|
|
59
62
|
return DynamicButtonComponent;
|
|
63
|
+
case DYNAMIC_FORM_FIELD_BUTTON_TOGGLES:
|
|
64
|
+
return DynamicButtonTogglesComponent;
|
|
60
65
|
default:
|
|
61
66
|
console.warn(`Model of type 'dynamic-${this.model.type}' is not implemented yet. Add this type to dynamic-form-field.component.ts to add support`);
|
|
62
67
|
return null;
|
|
@@ -67,6 +72,7 @@ export class DynamicFormFieldComponent {
|
|
|
67
72
|
if (component != null) {
|
|
68
73
|
let componentRef = this.componentViewContainer.createComponent(component);
|
|
69
74
|
const componentInstance = componentRef.instance;
|
|
75
|
+
this._subs.add(componentInstance.change?.subscribe((event) => this.onChange(event)));
|
|
70
76
|
componentInstance.group = this.group;
|
|
71
77
|
componentInstance.model = this.model;
|
|
72
78
|
}
|
|
@@ -112,8 +118,14 @@ export class DynamicFormFieldComponent {
|
|
|
112
118
|
onDisabledChange(disabled) {
|
|
113
119
|
disabled ? this._control.disable() : this._control.enable();
|
|
114
120
|
}
|
|
121
|
+
onChange(ev) {
|
|
122
|
+
this.change.emit(this.createDynamicFormEvent(ev, 'change'));
|
|
123
|
+
}
|
|
124
|
+
createDynamicFormEvent(event, type) {
|
|
125
|
+
return { event, type, control: this._control, form: this.group, model: this.model };
|
|
126
|
+
}
|
|
115
127
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
116
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicFormFieldComponent, isStandalone: true, selector: "dynamic-form-field", inputs: { model: "model", group: "group" }, viewQueries: [{ propertyName: "componentViewContainer", first: true, predicate: ["componentViewContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div [formGroup]=\"group\"\n [ngClass]=\"['dynamic-form-field-container', 'dynamic-form-field-' + model.type]\">\n <ng-container #componentViewContainer></ng-container>\n</div>", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicFormFieldComponent, isStandalone: true, selector: "dynamic-form-field", inputs: { model: "model", group: "group" }, outputs: { change: "change" }, viewQueries: [{ propertyName: "componentViewContainer", first: true, predicate: ["componentViewContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div [formGroup]=\"group\"\n [ngClass]=\"['dynamic-form-field-container', 'dynamic-form-field-' + model.type]\">\n <ng-container #componentViewContainer></ng-container>\n</div>", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
117
129
|
}
|
|
118
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicFormFieldComponent, decorators: [{
|
|
119
131
|
type: Component,
|
|
@@ -125,5 +137,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
125
137
|
type: Input
|
|
126
138
|
}], group: [{
|
|
127
139
|
type: Input
|
|
140
|
+
}], change: [{
|
|
141
|
+
type: Output
|
|
128
142
|
}] } });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1maWVsZC9keW5hbWljLWZvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWZpZWxkL2R5bmFtaWMtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUEyQixTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLG1CQUFtQixFQUF3QyxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDeEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEy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SUFDSyxnQkFBZ0IsQ0FBQyxRQUFpQjtRQUN4QyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDOUQsQ0FBQzsrR0FwSFUseUJBQXlCO21HQUF6Qix5QkFBeUIsdU9BQ1MsZ0JBQWdCLDJDQy9CL0Qsb0xBR00sNENEc0JNLE9BQU8sbUZBQUUsbUJBQW1COzs0RkFLM0IseUJBQXlCO2tCQVByQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxZQUM3QixvQkFBb0IsbUJBRWIsdUJBQXVCLENBQUMsTUFBTTs4QkFHZ0Msc0JBQXNCO3NCQUFwRyxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXBFLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUeXBlLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHluYW1pY0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2J1dHRvbi9keW5hbWljLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX0JVVFRPTiB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2J1dHRvbi9keW5hbWljLWJ1dHRvbi5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250cm9scy9jaGVja2JveC9keW5hbWljLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEWU5BTUlDX0ZPUk1fRklFTERfQ0hFQ0tCT1ggfSBmcm9tICcuLi8uLi9jb250cm9scy9jaGVja2JveC9keW5hbWljLWNoZWNrYm94Lm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2lucHV0L2R5bmFtaWMtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9JTlBVVCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2lucHV0L2R5bmFtaWMtaW5wdXQubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY1JlYWRvbmx5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX1JFQURPTkxZIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvc2VsZWN0L2R5bmFtaWMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEWU5BTUlDX0ZPUk1fRklFTERfU0VMRUNUIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvc2VsZWN0L2R5bmFtaWMtc2VsZWN0Lm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3RleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9URVhUQVJFQSB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3RleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtbW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZFZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtdmFsdWUtbW9kZWwnO1xuaW1wb3J0IHsgUmVsYXRlZEZvcm1Db250cm9scyB9IGZyb20gJy4uLy4uL21vZGVscy90eXBlcy9yZWxhdGVkLWZvcm0tY29udHJvbHMudHlwZSc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybVJlbGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0tcmVsYXRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3MsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2R5bmFtaWMtZm9ybS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnZHluYW1pYy1mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1GaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnY29tcG9uZW50Vmlld0NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIGNvbXBvbmVudFZpZXdDb250YWluZXIhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY0Zvcm1GaWVsZE1vZGVsO1xuICBASW5wdXQoKSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgcHJpdmF0ZSBfY29udHJvbCE6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgcHJpdmF0ZSBfc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIGR5bmFtaWNGb3JtU2VydmljZSA9IGluamVjdChEeW5hbWljRm9ybVNlcnZpY2UpO1xuICBwcml2YXRlIHJlbGF0aW9uU2VydmljZSA9IGluamVjdChEeW5hbWljRm9ybVJlbGF0aW9uc1NlcnZpY2UpO1xuXG4gIC8qKiBHZXQgdGhlIGluc3RhbmNlIG9mIGEgY29udHJvbCBjb21wb25lbnQgdXNpbmcgdGhlIGluamVjdGVkIGN1c3RvbSBtZXRob2Qgb3IgbG9jYWwgbWV0aG9kICovXG4gIHByaXZhdGUgZ2V0IGNvbXBvbmVudFR5cGUoKTogVHlwZTxEeW5hbWljRm9ybUZpZWxkPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5nZXRDdXN0b21Db250cm9sQ29tcG9uZW50VHlwZSh0aGlzLm1vZGVsKSB8fCB0aGlzLmdldENvbnRyb2xDb21wb25lbnRUeXBlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgdGhpcy5fY29udHJvbCA9IHRoaXMuZ3JvdXAuZ2V0KHRoaXMubW9kZWwubmFtZSkgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuXG4gICAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sQ29tcG9uZW50KCk7XG4gICAgICB0aGlzLnNldFN1YnNjcmlwdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIGluc3RhbmNlIG9mIGEgY29udHJvbCBjb21wb25lbnQgYnkgdHlwZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRDb250cm9sQ29tcG9uZW50VHlwZSgpOiBUeXBlPER5bmFtaWNGb3JtRmllbGQ+IHwgbnVsbCB7XG4gICAgc3dpdGNoICh0aGlzLm1vZGVsLnR5cGUpIHtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX0NIRUNLQk9YOlxuICAgICAgICByZXR1cm4gRHluYW1pY0NoZWNrYm94Q29tcG9uZW50O1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfSU5QVVQ6XG4gICAgICAgIHJldHVybiBEeW5hbWljSW5wdXRDb21wb25lbnQ7XG4gICAgICBjYXNlIERZTkFNSUNfRk9STV9GSUVMRF9URVhUQVJFQTpcbiAgICAgICAgcmV0dXJuIER5bmFtaWNUZXh0YXJlYUNvbXBvbmVudDtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX1JFQURPTkxZOlxuICAgICAgICByZXR1cm4gRHluYW1pY1JlYWRvbmx5Q29tcG9uZW50O1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfU0VMRUNUOlxuICAgICAgICByZXR1cm4gRHluYW1pY1NlbGVjdENvbXBvbmVudDtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX0JVVFRPTjpcbiAgICAgICAgcmV0dXJuIER5bmFtaWNCdXR0b25Db21wb25lbnQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYE1vZGVsIG9mIHR5cGUgJ2R5bmFtaWMtJHt0aGlzLm1vZGVsLnR5cGV9JyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LiBBZGQgdGhpcyB0eXBlIHRvIGR5bmFtaWMtZm9ybS1maWVsZC5jb21wb25lbnQudHMgdG8gYWRkIHN1cHBvcnRgXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRm9ybUNvbnRyb2xDb21wb25lbnQoKTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRUeXBlO1xuXG4gICAgaWYgKGNvbXBvbmVudCAhPSBudWxsKSB7XG4gICAgICBsZXQgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRWaWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuXG4gICAgICBjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcblxuICAgICAgY29tcG9uZW50SW5zdGFuY2UuZ3JvdXAgPSB0aGlzLmdyb3VwO1xuICAgICAgY29tcG9uZW50SW5zdGFuY2UubW9kZWwgPSB0aGlzLm1vZGVsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXR1cCBhbGwgbmVjZXNzYXJ5IHN1YnNjcmlwdGlvbnMgb2YgdGhlIEZvcm1Db250cm9sXG4gICAqL1xuICBwcml2YXRlIHNldFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLm1vZGVsIGFzIER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsPHVua25vd24+O1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHRoZSB2YWx1ZSBjaGFuZ2UgaW5zaWRlIHRoZSBjb250cm9sIHRvIGNoYWduZSB0aGUgdmFsdWUgaW5zaWRlIHRoZSBtb2RlbCBhcyB3ZWxsXG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5fY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5vblZhbHVlQ2hhbmdlKHZhbHVlKSkpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBkaXNhYmxlZCBjaGFuZ2UgaW5zaWRlIHRoZSBtb2RlbCB0byBjaGFuZ2UgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBGb3JtQ29udHJvbFxuICAgIHRoaXMuX3N1YnMuYWRkKG1vZGVsLmRpc2FibGVkQ2hhbmdlLnN1YnNjcmliZSgoZGlzYWJsZWQpID0+IHRoaXMub25EaXNhYmxlZENoYW5nZShkaXNhYmxlZCkpKTtcblxuICAgIC8vIFNldHVwIHN1YnNjcmlwdGlvbnMgZm9yIGFueSBwb3NzaWJsZSByZWxhdGlvblxuICAgIGlmICh0aGlzLm1vZGVsLnJlbGF0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldFVwUmVsYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBhbGwgcmVsYXRpb25zIG9mIHRoZSBjdXJyZW50IG1vZGVsXG4gICAqL1xuICBwcml2YXRlIHNldFVwUmVsYXRpb25zKCk6IHZvaWQge1xuICAgIC8vIEFycmF5IG9mIGFsbCBGb3JtQ29udHJvbHMgdGhlIGN1cnJlbnQgbW9kZWwgaGFzIGEgcmVsYXRpb24gdG9cbiAgICBjb25zdCByZWxhdGVkRm9ybUNvbnRyb2xzOiBSZWxhdGVkRm9ybUNvbnRyb2xzID0gdGhpcy5yZWxhdGlvblNlcnZpY2UuZmluZFJlbGF0ZWRGb3JtRmllbGQodGhpcy5tb2RlbCwgdGhpcy5ncm91cCk7XG4gICAgY29uc3Qgc3VicyA9IHRoaXMucmVsYXRpb25TZXJ2aWNlLmdldFJlbGF0aW9uU3Vic2NyaXB0aW9ucyhyZWxhdGVkRm9ybUNvbnRyb2xzLCB0aGlzLm1vZGVsLCB0aGlzLl9jb250cm9sKTtcblxuICAgIC8vIEFkZCBhbGwgcmVsYXRpb25zIGFzIHN1YnNjcmlwdGlvbiB0byB0aGUgbWFpbiBTdWJzY3JpcHRpb24gb2JqZWN0XG4gICAgc3Vicy5mb3JFYWNoKChzdWIpID0+IHRoaXMuX3N1YnMuYWRkKHN1YikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMgb2YgdGhlIGNvbnRyb2wgYW5kIHVwZGF0ZXMgdGhlIHZhbHVlIGluc2lkZSB0aGUgbW9kZWxcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsICYmIHRoaXMubW9kZWwudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLm1vZGVsLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMvZGlzYWJsZWQgdGhlIGNvbnRyb2wgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlci5cbiAgICogSXMgZmlyZWQgd2hlbiBkaXNhYmxlZCBzdGF0ZSBpcyBjaGFuZ2VkIGluc2lkZSB0aGUgbW9kZWwgYW5kIHNob3VsZCBub3QgYmUgZGlyZWN0bHkgdXNlZCBvdXRzaWRlIHRoaXMgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gZGlzYWJsZWRcbiAgICovXG4gIHByaXZhdGUgb25EaXNhYmxlZENoYW5nZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGRpc2FibGVkID8gdGhpcy5fY29udHJvbC5kaXNhYmxlKCkgOiB0aGlzLl9jb250cm9sLmVuYWJsZSgpO1xuICB9XG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxuICBbbmdDbGFzc109XCJbJ2R5bmFtaWMtZm9ybS1maWVsZC1jb250YWluZXInLCAnZHluYW1pYy1mb3JtLWZpZWxkLScgKyBtb2RlbC50eXBlXVwiPlxuICA8bmctY29udGFpbmVyICNjb21wb25lbnRWaWV3Q29udGFpbmVyPjwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1maWVsZC9keW5hbWljLWZvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWZpZWxkL2R5bmFtaWMtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUF3QyxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDL0csT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDL0csT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDeEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7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bUJBQW1CLENBQUMsWUFDN0Isb0JBQW9CLG1CQUViLHVCQUF1QixDQUFDLE1BQU07OEJBR2dDLHNCQUFzQjtzQkFBcEcsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVwRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IER5bmFtaWNCdXR0b25Ub2dnbGVzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uLXRvZ2dsZXMvZHluYW1pYy1idXR0b24tdG9nZ2xlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX0JVVFRPTl9UT0dHTEVTIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uLXRvZ2dsZXMvZHluYW1pYy1idXR0b24tdG9nZ2xlcy5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uL2R5bmFtaWMtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEWU5BTUlDX0ZPUk1fRklFTERfQlVUVE9OIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uL2R5bmFtaWMtYnV0dG9uLm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2NoZWNrYm94L2R5bmFtaWMtY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9DSEVDS0JPWCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2NoZWNrYm94L2R5bmFtaWMtY2hlY2tib3gubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0lucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX0lOUFVUIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljUmVhZG9ubHlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250cm9scy9yZWFkb25seS9keW5hbWljLXJlYWRvbmx5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEWU5BTUlDX0ZPUk1fRklFTERfUkVBRE9OTFkgfSBmcm9tICcuLi8uLi9jb250cm9scy9yZWFkb25seS9keW5hbWljLXJlYWRvbmx5Lm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250cm9scy9zZWxlY3QvZHluYW1pYy1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9TRUxFQ1QgfSBmcm9tICcuLi8uLi9jb250cm9scy9zZWxlY3QvZHluYW1pYy1zZWxlY3QubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY1RleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvdGV4dGFyZWEvZHluYW1pYy10ZXh0YXJlYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX1RFWFRBUkVBIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvdGV4dGFyZWEvZHluYW1pYy10ZXh0YXJlYS5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLW1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLXZhbHVlLW1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRFdmVudCwgRHluYW1pY0Zvcm1GaWVsZEV2ZW50VHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbnRlcmZhY2VzL2R5bmFtaWMtZm9ybS1maWVsZC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVsYXRlZEZvcm1Db250cm9scyB9IGZyb20gJy4uLy4uL21vZGVscy90eXBlcy9yZWxhdGVkLWZvcm0tY29udHJvbHMudHlwZSc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybVJlbGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0tcmVsYXRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3MsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2R5bmFtaWMtZm9ybS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnZHluYW1pYy1mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1GaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnY29tcG9uZW50Vmlld0NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIGNvbXBvbmVudFZpZXdDb250YWluZXIhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY0Zvcm1GaWVsZE1vZGVsO1xuICBASW5wdXQoKSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1GaWVsZEV2ZW50PigpO1xuXG4gIHByaXZhdGUgX2NvbnRyb2whOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHByaXZhdGUgX3N1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBkeW5hbWljRm9ybVNlcnZpY2UgPSBpbmplY3QoRHluYW1pY0Zvcm1TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWxhdGlvblNlcnZpY2UgPSBpbmplY3QoRHluYW1pY0Zvcm1SZWxhdGlvbnNTZXJ2aWNlKTtcblxuICAvKiogR2V0IHRoZSBpbnN0YW5jZSBvZiBhIGNvbnRyb2wgY29tcG9uZW50IHVzaW5nIHRoZSBpbmplY3RlZCBjdXN0b20gbWV0aG9kIG9yIGxvY2FsIG1ldGhvZCAqL1xuICBwcml2YXRlIGdldCBjb21wb25lbnRUeXBlKCk6IFR5cGU8RHluYW1pY0Zvcm1GaWVsZD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuZ2V0Q3VzdG9tQ29udHJvbENvbXBvbmVudFR5cGUodGhpcy5tb2RlbCkgfHwgdGhpcy5nZXRDb250cm9sQ29tcG9uZW50VHlwZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHRoaXMuX2NvbnRyb2wgPSB0aGlzLmdyb3VwLmdldCh0aGlzLm1vZGVsLm5hbWUpIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcblxuICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbENvbXBvbmVudCgpO1xuICAgICAgdGhpcy5zZXRTdWJzY3JpcHRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vicy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBpbnN0YW5jZSBvZiBhIGNvbnRyb2wgY29tcG9uZW50IGJ5IHR5cGVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHByaXZhdGUgZ2V0Q29udHJvbENvbXBvbmVudFR5cGUoKTogVHlwZTxEeW5hbWljRm9ybUZpZWxkPiB8IG51bGwge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlbC50eXBlKSB7XG4gICAgICBjYXNlIERZTkFNSUNfRk9STV9GSUVMRF9DSEVDS0JPWDpcbiAgICAgICAgcmV0dXJuIER5bmFtaWNDaGVja2JveENvbXBvbmVudDtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX0lOUFVUOlxuICAgICAgICByZXR1cm4gRHluYW1pY0lucHV0Q29tcG9uZW50O1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfVEVYVEFSRUE6XG4gICAgICAgIHJldHVybiBEeW5hbWljVGV4dGFyZWFDb21wb25lbnQ7XG4gICAgICBjYXNlIERZTkFNSUNfRk9STV9GSUVMRF9SRUFET05MWTpcbiAgICAgICAgcmV0dXJuIER5bmFtaWNSZWFkb25seUNvbXBvbmVudDtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX1NFTEVDVDpcbiAgICAgICAgcmV0dXJuIER5bmFtaWNTZWxlY3RDb21wb25lbnQ7XG4gICAgICBjYXNlIERZTkFNSUNfRk9STV9GSUVMRF9CVVRUT046XG4gICAgICAgIHJldHVybiBEeW5hbWljQnV0dG9uQ29tcG9uZW50O1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfQlVUVE9OX1RPR0dMRVM6XG4gICAgICAgIHJldHVybiBEeW5hbWljQnV0dG9uVG9nZ2xlc0NvbXBvbmVudDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgTW9kZWwgb2YgdHlwZSAnZHluYW1pYy0ke3RoaXMubW9kZWwudHlwZX0nIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuIEFkZCB0aGlzIHR5cGUgdG8gZHluYW1pYy1mb3JtLWZpZWxkLmNvbXBvbmVudC50cyB0byBhZGQgc3VwcG9ydGBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtQ29udHJvbENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFR5cGU7XG5cbiAgICBpZiAoY29tcG9uZW50ICE9IG51bGwpIHtcbiAgICAgIGxldCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudFZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCk7XG5cbiAgICAgIGNvbnN0IGNvbXBvbmVudEluc3RhbmNlID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgICB0aGlzLl9zdWJzLmFkZChjb21wb25lbnRJbnN0YW5jZS5jaGFuZ2U/LnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMub25DaGFuZ2UoZXZlbnQpKSk7XG5cbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLmdyb3VwID0gdGhpcy5ncm91cDtcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLm1vZGVsID0gdGhpcy5tb2RlbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0dXAgYWxsIG5lY2Vzc2FyeSBzdWJzY3JpcHRpb25zIG9mIHRoZSBGb3JtQ29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBzZXRTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5tb2RlbCBhcyBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbDx1bmtub3duPjtcblxuICAgIC8vIFN1YnNjcmliZSB0byB0aGUgdmFsdWUgY2hhbmdlIGluc2lkZSB0aGUgY29udHJvbCB0byBjaGFnbmUgdGhlIHZhbHVlIGluc2lkZSB0aGUgbW9kZWwgYXMgd2VsbFxuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuX2NvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHRoaXMub25WYWx1ZUNoYW5nZSh2YWx1ZSkpKTtcblxuICAgIC8vIFN1YnNjcmliZSB0byB0aGUgZGlzYWJsZWQgY2hhbmdlIGluc2lkZSB0aGUgbW9kZWwgdG8gY2hhbmdlIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgRm9ybUNvbnRyb2xcbiAgICB0aGlzLl9zdWJzLmFkZChtb2RlbC5kaXNhYmxlZENoYW5nZS5zdWJzY3JpYmUoKGRpc2FibGVkKSA9PiB0aGlzLm9uRGlzYWJsZWRDaGFuZ2UoZGlzYWJsZWQpKSk7XG5cbiAgICAvLyBTZXR1cCBzdWJzY3JpcHRpb25zIGZvciBhbnkgcG9zc2libGUgcmVsYXRpb25cbiAgICBpZiAodGhpcy5tb2RlbC5yZWxhdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zZXRVcFJlbGF0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgYWxsIHJlbGF0aW9ucyBvZiB0aGUgY3VycmVudCBtb2RlbFxuICAgKi9cbiAgcHJpdmF0ZSBzZXRVcFJlbGF0aW9ucygpOiB2b2lkIHtcbiAgICAvLyBBcnJheSBvZiBhbGwgRm9ybUNvbnRyb2xzIHRoZSBjdXJyZW50IG1vZGVsIGhhcyBhIHJlbGF0aW9uIHRvXG4gICAgY29uc3QgcmVsYXRlZEZvcm1Db250cm9sczogUmVsYXRlZEZvcm1Db250cm9scyA9IHRoaXMucmVsYXRpb25TZXJ2aWNlLmZpbmRSZWxhdGVkRm9ybUZpZWxkKHRoaXMubW9kZWwsIHRoaXMuZ3JvdXApO1xuICAgIGNvbnN0IHN1YnMgPSB0aGlzLnJlbGF0aW9uU2VydmljZS5nZXRSZWxhdGlvblN1YnNjcmlwdGlvbnMocmVsYXRlZEZvcm1Db250cm9scywgdGhpcy5tb2RlbCwgdGhpcy5fY29udHJvbCk7XG5cbiAgICAvLyBBZGQgYWxsIHJlbGF0aW9ucyBhcyBzdWJzY3JpcHRpb24gdG8gdGhlIG1haW4gU3Vic2NyaXB0aW9uIG9iamVjdFxuICAgIHN1YnMuZm9yRWFjaCgoc3ViKSA9PiB0aGlzLl9zdWJzLmFkZChzdWIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzIG9mIHRoZSBjb250cm9sIGFuZCB1cGRhdGVzIHRoZSB2YWx1ZSBpbnNpZGUgdGhlIG1vZGVsXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBvblZhbHVlQ2hhbmdlKHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbCAmJiB0aGlzLm1vZGVsLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5tb2RlbC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzL2Rpc2FibGVkIHRoZSBjb250cm9sIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXIuXG4gICAqIElzIGZpcmVkIHdoZW4gZGlzYWJsZWQgc3RhdGUgaXMgY2hhbmdlZCBpbnNpZGUgdGhlIG1vZGVsIGFuZCBzaG91bGQgbm90IGJlIGRpcmVjdGx5IHVzZWQgb3V0c2lkZSB0aGlzIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIGRpc2FibGVkXG4gICAqL1xuICBwcml2YXRlIG9uRGlzYWJsZWRDaGFuZ2UoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBkaXNhYmxlZCA/IHRoaXMuX2NvbnRyb2wuZGlzYWJsZSgpIDogdGhpcy5fY29udHJvbC5lbmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25DaGFuZ2UoZXY6IHVua25vd24pIHtcbiAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuY3JlYXRlRHluYW1pY0Zvcm1FdmVudChldiwgJ2NoYW5nZScpKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRHluYW1pY0Zvcm1FdmVudChldmVudDogdW5rbm93biwgdHlwZTogRHluYW1pY0Zvcm1GaWVsZEV2ZW50VHlwZSk6IER5bmFtaWNGb3JtRmllbGRFdmVudCB7XG4gICAgcmV0dXJuIHsgZXZlbnQsIHR5cGUsIGNvbnRyb2w6IHRoaXMuX2NvbnRyb2wsIGZvcm06IHRoaXMuZ3JvdXAsIG1vZGVsOiB0aGlzLm1vZGVsIH07XG4gIH1cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiXG4gIFtuZ0NsYXNzXT1cIlsnZHluYW1pYy1mb3JtLWZpZWxkLWNvbnRhaW5lcicsICdkeW5hbWljLWZvcm0tZmllbGQtJyArIG1vZGVsLnR5cGVdXCI+XG4gIDxuZy1jb250YWluZXIgI2NvbXBvbmVudFZpZXdDb250YWluZXI+PC9uZy1jb250YWluZXI+XG48L2Rpdj4iXX0=
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { NgIf } from '@angular/common';
|
|
2
2
|
import { Component, Input } from '@angular/core';
|
|
3
3
|
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
-
import {
|
|
4
|
+
import { DynamicFormFieldBase } from '../../models/classes/dynamic-form-field-base';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/material/button";
|
|
7
|
-
export class DynamicButtonComponent extends
|
|
7
|
+
export class DynamicButtonComponent extends DynamicFormFieldBase {
|
|
8
8
|
onClick() {
|
|
9
9
|
this.model.onClick();
|
|
10
10
|
}
|
|
@@ -19,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
19
19
|
}], group: [{
|
|
20
20
|
type: Input
|
|
21
21
|
}] } });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbnRyb2xzL2J1dHRvbi9keW5hbWljLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvYnV0dG9uL2R5bmFtaWMtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7OztBQVNwRixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsb0JBQW9CO0lBSXZELE9BQU87UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7K0dBTlUsc0JBQXNCO21HQUF0QixzQkFBc0IsNklDYm5DLDhZQWdCYyw0Q0RQRixJQUFJLDRGQUFFLGVBQWU7OzRGQUlwQixzQkFBc0I7a0JBTmxDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxZQUN0QixnQkFBZ0I7OEJBSWpCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZEJhc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtYmFzZSc7XG5pbXBvcnQgeyBEeW5hbWljQnV0dG9uIH0gZnJvbSAnLi9keW5hbWljLWJ1dHRvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgTWF0QnV0dG9uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdkeW5hbWljLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWJ1dHRvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0J1dHRvbkNvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRCYXNlIHtcbiAgQElucHV0KCkgbW9kZWwhOiBEeW5hbWljQnV0dG9uO1xuICBASW5wdXQoKSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgcHVibGljIG9uQ2xpY2soKSB7XG4gICAgdGhpcy5tb2RlbC5vbkNsaWNrKCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5yYWlzZWQgZWxzZSBzdHJva2VkXCI+XG4gIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b25cbiAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgIFtpZF09XCJpZFwiXG4gICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiPlxuICAgIDxzcGFuPnt7bW9kZWwudGV4dH19PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3N0cm9rZWQ+XG4gIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIChjbGljayk9XCJvbkNsaWNrKClcIj5cbiAgICA8c3Bhbj57e21vZGVsLnRleHR9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AsyncPipe, NgFor } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
5
|
+
import { DynamicFormFieldBase } from '../../models/classes/dynamic-form-field-base';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/button-toggle";
|
|
8
|
+
import * as i2 from "@angular/forms";
|
|
9
|
+
export class DynamicButtonTogglesComponent extends DynamicFormFieldBase {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.change = new EventEmitter();
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicButtonTogglesComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicButtonTogglesComponent, isStandalone: true, selector: "app-dynamic-button-toggles", inputs: { model: "model", group: "group" }, outputs: { change: "change" }, usesInheritance: true, ngImport: i0, template: "<ng-container [formGroup]=\"group\">\n <mat-button-toggle-group [id]=\"id\"\n [formControlName]=\"model.name\"\n [multiple]=\"model.multiple\"\n [vertical]=\"model.vertical\"\n (change)=\"onChange($event)\">\n <mat-button-toggle *ngFor=\"let option of model.options$ | async\"\n [value]=\"option.value\">{{option.label}}</mat-button-toggle>\n </mat-button-toggle-group>\n</ng-container>", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicButtonTogglesComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ standalone: true, imports: [NgFor, MatButtonToggleModule, ReactiveFormsModule, AsyncPipe], selector: 'app-dynamic-button-toggles', template: "<ng-container [formGroup]=\"group\">\n <mat-button-toggle-group [id]=\"id\"\n [formControlName]=\"model.name\"\n [multiple]=\"model.multiple\"\n [vertical]=\"model.vertical\"\n (change)=\"onChange($event)\">\n <mat-button-toggle *ngFor=\"let option of model.options$ | async\"\n [value]=\"option.value\">{{option.label}}</mat-button-toggle>\n </mat-button-toggle-group>\n</ng-container>" }]
|
|
20
|
+
}], propDecorators: { model: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}], group: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], change: [{
|
|
25
|
+
type: Output
|
|
26
|
+
}] } });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1idXR0b24tdG9nZ2xlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvYnV0dG9uLXRvZ2dsZXMvZHluYW1pYy1idXR0b24tdG9nZ2xlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvYnV0dG9uLXRvZ2dsZXMvZHluYW1pYy1idXR0b24tdG9nZ2xlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBeUIscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7OztBQVNwRixNQUFNLE9BQU8sNkJBQThCLFNBQVEsb0JBQW9CO0lBTnZFOztRQVVZLFdBQU0sR0FBd0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQUM1RTsrR0FMWSw2QkFBNkI7bUdBQTdCLDZCQUE2Qix3TENiMUMsMFpBU2UsNENEQUgsS0FBSyxrSEFBRSxxQkFBcUIsc2hCQUFFLG1CQUFtQiwra0JBQUUsU0FBUzs7NEZBSTNELDZCQUE2QjtrQkFOekMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLFlBQzdELDRCQUE0Qjs4QkFJN0IsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlQ2hhbmdlLCBNYXRCdXR0b25Ub2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UnO1xuaW1wb3J0IHsgRHluYW1pY0J1dHRvblRvZ2dsZXMgfSBmcm9tICcuL2R5bmFtaWMtYnV0dG9uLXRvZ2dsZXMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nRm9yLCBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEFzeW5jUGlwZV0sXG4gIHNlbGVjdG9yOiAnYXBwLWR5bmFtaWMtYnV0dG9uLXRvZ2dsZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1idXR0b24tdG9nZ2xlcy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0J1dHRvblRvZ2dsZXNDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkQmFzZSB7XG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY0J1dHRvblRvZ2dsZXM7XG4gIEBJbnB1dCgpIGdyb3VwITogVW50eXBlZEZvcm1Hcm91cDtcblxuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8TWF0QnV0dG9uVG9nZ2xlQ2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbn1cbiIsIjxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgW2lkXT1cImlkXCJcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm1vZGVsLm5hbWVcIlxuICAgIFttdWx0aXBsZV09XCJtb2RlbC5tdWx0aXBsZVwiXG4gICAgW3ZlcnRpY2FsXT1cIm1vZGVsLnZlcnRpY2FsXCJcbiAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIj5cbiAgICA8bWF0LWJ1dHRvbi10b2dnbGUgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBtb2RlbC5vcHRpb25zJCB8IGFzeW5jXCJcbiAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57e29wdGlvbi5sYWJlbH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbjwvbmctY29udGFpbmVyPiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DynamicFormFieldOptionModel } from '../../models/classes/dynamic-form-field-option-model';
|
|
2
|
+
export const DYNAMIC_FORM_FIELD_BUTTON_TOGGLES = 'button-toggles';
|
|
3
|
+
export class DynamicButtonToggles extends DynamicFormFieldOptionModel {
|
|
4
|
+
constructor(config) {
|
|
5
|
+
super(config);
|
|
6
|
+
this.type = DYNAMIC_FORM_FIELD_BUTTON_TOGGLES;
|
|
7
|
+
this.multiple = config.multiple ?? false;
|
|
8
|
+
this.vertical = config.vertical ?? false;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1idXR0b24tdG9nZ2xlcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb250cm9scy9idXR0b24tdG9nZ2xlcy9keW5hbWljLWJ1dHRvbi10b2dnbGVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsMkJBQTJCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUVqSSxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxnQkFBZ0IsQ0FBQztBQU9sRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsMkJBQW1DO0lBTTNFLFlBQVksTUFBa0M7UUFDNUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSEEsU0FBSSxHQUFXLGlDQUFpQyxDQUFDO1FBSy9ELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkT3B0aW9uQ29uZmlnLCBEeW5hbWljRm9ybUZpZWxkT3B0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtb3B0aW9uLW1vZGVsJztcblxuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9GSUVMRF9CVVRUT05fVE9HR0xFUyA9ICdidXR0b24tdG9nZ2xlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0J1dHRvblRvZ2dsZXNDb25maWcgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkT3B0aW9uQ29uZmlnPHN0cmluZz4ge1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIHZlcnRpY2FsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNCdXR0b25Ub2dnbGVzIGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZE9wdGlvbk1vZGVsPHN0cmluZz4ge1xuICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2ZXJ0aWNhbDogYm9vbGVhbjtcblxuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nID0gRFlOQU1JQ19GT1JNX0ZJRUxEX0JVVFRPTl9UT0dHTEVTO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRHluYW1pY0J1dHRvblRvZ2dsZXNDb25maWcpIHtcbiAgICBzdXBlcihjb25maWcpO1xuXG4gICAgdGhpcy5tdWx0aXBsZSA9IGNvbmZpZy5tdWx0aXBsZSA/PyBmYWxzZTtcbiAgICB0aGlzLnZlcnRpY2FsID0gY29uZmlnLnZlcnRpY2FsID8/IGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,32 +1,26 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
3
3
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
4
|
-
import {
|
|
4
|
+
import { DynamicFormFieldBase } from '../../models/classes/dynamic-form-field-base';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/forms";
|
|
7
7
|
import * as i2 from "@angular/material/checkbox";
|
|
8
|
-
export class DynamicCheckboxComponent extends
|
|
8
|
+
export class DynamicCheckboxComponent extends DynamicFormFieldBase {
|
|
9
9
|
constructor() {
|
|
10
10
|
super(...arguments);
|
|
11
|
-
this.blur = new EventEmitter();
|
|
12
11
|
this.change = new EventEmitter();
|
|
13
|
-
this.focus = new EventEmitter();
|
|
14
12
|
}
|
|
15
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicCheckboxComponent, isStandalone: true, selector: "dynamic-checkbox", inputs: { model: "model", group: "group" }, outputs: {
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicCheckboxComponent, isStandalone: true, selector: "dynamic-checkbox", inputs: { model: "model", group: "group" }, outputs: { change: "change" }, usesInheritance: true, ngImport: i0, template: "<ng-container [formGroup]=\"group\">\n <mat-checkbox [checked]=\"model.checked\"\n [formControlName]=\"model.name\"\n [indeterminate]=\"model.indeterminate\"\n [labelPosition]=\"model.labelPosition\"\n [name]=\"model.name\"\n [id]=\"id\"\n (change)=\"onChange($event)\">\n\n <span class=\"checkbox-label\">{{model.label}}</span>\n </mat-checkbox>\n</ng-container>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { 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: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] }); }
|
|
17
15
|
}
|
|
18
16
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicCheckboxComponent, decorators: [{
|
|
19
17
|
type: Component,
|
|
20
|
-
args: [{ selector: 'dynamic-checkbox', standalone: true, imports: [ReactiveFormsModule, MatCheckboxModule], template: "<ng-container [formGroup]=\"group\">\n <mat-checkbox [checked]=\"model.checked\"\n [formControlName]=\"model.name\"\n [indeterminate]=\"model.indeterminate\"\n [labelPosition]=\"model.labelPosition\"\n [name]=\"model.name\"\n [id]=\"id\"\n (
|
|
18
|
+
args: [{ selector: 'dynamic-checkbox', standalone: true, imports: [ReactiveFormsModule, MatCheckboxModule], template: "<ng-container [formGroup]=\"group\">\n <mat-checkbox [checked]=\"model.checked\"\n [formControlName]=\"model.name\"\n [indeterminate]=\"model.indeterminate\"\n [labelPosition]=\"model.labelPosition\"\n [name]=\"model.name\"\n [id]=\"id\"\n (change)=\"onChange($event)\">\n\n <span class=\"checkbox-label\">{{model.label}}</span>\n </mat-checkbox>\n</ng-container>" }]
|
|
21
19
|
}], propDecorators: { model: [{
|
|
22
20
|
type: Input
|
|
23
21
|
}], group: [{
|
|
24
22
|
type: Input
|
|
25
|
-
}], blur: [{
|
|
26
|
-
type: Output
|
|
27
23
|
}], change: [{
|
|
28
24
|
type: Output
|
|
29
|
-
}], focus: [{
|
|
30
|
-
type: Output
|
|
31
25
|
}] } });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jaGVja2JveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvY2hlY2tib3gvZHluYW1pYy1jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvY2hlY2tib3gvZHluYW1pYy1jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFTcEYsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG9CQUFvQjtJQU5sRTs7UUFVWSxXQUFNLEdBQW9DLElBQUksWUFBWSxFQUFFLENBQUM7S0FDeEU7K0dBTFksd0JBQXdCO21HQUF4Qix3QkFBd0IsOEtDWnJDLG9ZQVdlLDJDRERILG1CQUFtQixtbEJBQUUsaUJBQWlCOzs0RkFFckMsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLGtCQUFrQixjQUVoQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQzs4QkFHeEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlLCBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UnO1xuaW1wb3J0IHsgRHluYW1pY0NoZWNrYm94IH0gZnJvbSAnLi9keW5hbWljLWNoZWNrYm94Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZHluYW1pYy1jaGVja2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnZHluYW1pYy1jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRDaGVja2JveE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0NoZWNrYm94Q29tcG9uZW50IGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZEJhc2Uge1xuICBASW5wdXQoKSBtb2RlbCE6IER5bmFtaWNDaGVja2JveDtcbiAgQElucHV0KCkgZ3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxNYXRDaGVja2JveENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG59XG4iLCI8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgPG1hdC1jaGVja2JveCBbY2hlY2tlZF09XCJtb2RlbC5jaGVja2VkXCJcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm1vZGVsLm5hbWVcIlxuICAgIFtpbmRldGVybWluYXRlXT1cIm1vZGVsLmluZGV0ZXJtaW5hdGVcIlxuICAgIFtsYWJlbFBvc2l0aW9uXT1cIm1vZGVsLmxhYmVsUG9zaXRpb25cIlxuICAgIFtuYW1lXT1cIm1vZGVsLm5hbWVcIlxuICAgIFtpZF09XCJpZFwiXG4gICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCI+XG5cbiAgICA8c3BhbiBjbGFzcz1cImNoZWNrYm94LWxhYmVsXCI+e3ttb2RlbC5sYWJlbH19PC9zcGFuPlxuICA8L21hdC1jaGVja2JveD5cbjwvbmctY29udGFpbmVyPiJdfQ==
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
export * from './button-toggles/dynamic-button-toggles.model';
|
|
1
2
|
export * from './button/dynamic-button.model';
|
|
2
3
|
export * from './checkbox/dynamic-checkbox.model';
|
|
3
4
|
export * from './input/dynamic-input.model';
|
|
4
5
|
export * from './readonly/dynamic-readonly.model';
|
|
5
6
|
export * from './select/dynamic-select.model';
|
|
6
7
|
export * from './textarea/dynamic-textarea.model';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYnV0dG9uLXRvZ2dsZXMvZHluYW1pYy1idXR0b24tdG9nZ2xlcy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbi9keW5hbWljLWJ1dHRvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2NoZWNrYm94L2R5bmFtaWMtY2hlY2tib3gubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC9keW5hbWljLWlucHV0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC9keW5hbWljLXNlbGVjdC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3RleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEubW9kZWwnO1xuIl19
|
|
@@ -5,19 +5,17 @@ import { MatButtonModule } from '@angular/material/button';
|
|
|
5
5
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
6
|
import { MatIconModule } from '@angular/material/icon';
|
|
7
7
|
import { MatInput, MatInputModule } from '@angular/material/input';
|
|
8
|
-
import {
|
|
8
|
+
import { DynamicFormFieldBase } from '../../models/classes/dynamic-form-field-base';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "@angular/forms";
|
|
11
11
|
import * as i2 from "@angular/material/form-field";
|
|
12
12
|
import * as i3 from "@angular/material/input";
|
|
13
13
|
import * as i4 from "@angular/material/button";
|
|
14
14
|
import * as i5 from "@angular/material/icon";
|
|
15
|
-
export class DynamicInputComponent extends
|
|
15
|
+
export class DynamicInputComponent extends DynamicFormFieldBase {
|
|
16
16
|
constructor() {
|
|
17
17
|
super(...arguments);
|
|
18
|
-
this.blur = new EventEmitter();
|
|
19
18
|
this.change = new EventEmitter();
|
|
20
|
-
this.focus = new EventEmitter();
|
|
21
19
|
}
|
|
22
20
|
get valueCount() {
|
|
23
21
|
return this.input?.value ? this.input.value.length : 0;
|
|
@@ -28,12 +26,19 @@ export class DynamicInputComponent extends DynamicFormFieldBaseComponent {
|
|
|
28
26
|
get showClear() {
|
|
29
27
|
return !!this.control.value && !this.control.disabled;
|
|
30
28
|
}
|
|
29
|
+
onChange(event) {
|
|
30
|
+
// Ignore the native HTML 5 change event
|
|
31
|
+
if (event instanceof Event) {
|
|
32
|
+
event.stopPropagation();
|
|
33
|
+
}
|
|
34
|
+
this.change.emit(event);
|
|
35
|
+
}
|
|
31
36
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicInputComponent, isStandalone: true, selector: "dynamic-input", inputs: { model: "model", group: "group" }, outputs: {
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicInputComponent, isStandalone: true, selector: "dynamic-input", inputs: { model: "model", group: "group" }, outputs: { change: "change" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [formGroup]=\"group\"\n [id]=\"id\"\n color=\"primary\">\n <mat-label *ngIf=\"model.label\">{{model.label}}</mat-label>\n\n <span matTextPrefix\n *ngIf=\"model.prefix\">{{model.prefix}}</span>\n\n <input matInput\n [type]=\"model.inputType\"\n [formControlName]=\"model.name\"\n [attr.min]=\"model.min\"\n [attr.max]=\"model.max\"\n [attr.minLength]=\"model.minLength\"\n [attr.maxLength]=\"model.maxLength\"\n [pattern]=\"model.pattern\"\n [autocomplete]=\"model.autocomplete\"\n (change)=\"onChange($event)\" />\n\n <button matSuffix\n mat-icon-button\n *ngIf=\"showClear\"\n (click)=\"resetControl()\">\n <mat-icon fontIcon=\"clear\"></mat-icon>\n </button>\n\n <mat-hint *ngIf=\"model.hint\"\n align=\"start\">{{model.hint}}</mat-hint>\n\n <mat-hint *ngIf=\"model.maxLength\"\n align=\"end\">{{maxCountText}}</mat-hint>\n\n <ng-container *ngFor=\"let validator of model.validators\"\n ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"hasError(validator.name)\">{{validator.message}}</mat-error>\n </ng-container>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { 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: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.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"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
33
38
|
}
|
|
34
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicInputComponent, decorators: [{
|
|
35
40
|
type: Component,
|
|
36
|
-
args: [{ selector: 'dynamic-input', standalone: true, imports: [NgIf, NgFor, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule], template: "<mat-form-field [formGroup]=\"group\"\n [id]=\"id\"\n color=\"primary\">\n <mat-label *ngIf=\"model.label\">{{model.label}}</mat-label>\n\n <span matTextPrefix\n *ngIf=\"model.prefix\">{{model.prefix}}</span>\n\n <input matInput\n [type]=\"model.inputType\"\n [formControlName]=\"model.name\"\n [attr.min]=\"model.min\"\n [attr.max]=\"model.max\"\n [attr.minLength]=\"model.minLength\"\n [attr.maxLength]=\"model.maxLength\"\n [pattern]=\"model.pattern\"\n [autocomplete]=\"model.autocomplete\" />\n\n <button matSuffix\n mat-icon-button\n *ngIf=\"showClear\"\n (click)=\"resetControl()\">\n <mat-icon fontIcon=\"clear\"></mat-icon>\n </button>\n\n <mat-hint *ngIf=\"model.hint\"\n align=\"start\">{{model.hint}}</mat-hint>\n\n <mat-hint *ngIf=\"model.maxLength\"\n align=\"end\">{{maxCountText}}</mat-hint>\n\n <ng-container *ngFor=\"let validator of model.validators\"\n ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"hasError(validator.name)\">{{validator.message}}</mat-error>\n </ng-container>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"] }]
|
|
41
|
+
args: [{ selector: 'dynamic-input', standalone: true, imports: [NgIf, NgFor, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule], template: "<mat-form-field [formGroup]=\"group\"\n [id]=\"id\"\n color=\"primary\">\n <mat-label *ngIf=\"model.label\">{{model.label}}</mat-label>\n\n <span matTextPrefix\n *ngIf=\"model.prefix\">{{model.prefix}}</span>\n\n <input matInput\n [type]=\"model.inputType\"\n [formControlName]=\"model.name\"\n [attr.min]=\"model.min\"\n [attr.max]=\"model.max\"\n [attr.minLength]=\"model.minLength\"\n [attr.maxLength]=\"model.maxLength\"\n [pattern]=\"model.pattern\"\n [autocomplete]=\"model.autocomplete\"\n (change)=\"onChange($event)\" />\n\n <button matSuffix\n mat-icon-button\n *ngIf=\"showClear\"\n (click)=\"resetControl()\">\n <mat-icon fontIcon=\"clear\"></mat-icon>\n </button>\n\n <mat-hint *ngIf=\"model.hint\"\n align=\"start\">{{model.hint}}</mat-hint>\n\n <mat-hint *ngIf=\"model.maxLength\"\n align=\"end\">{{maxCountText}}</mat-hint>\n\n <ng-container *ngFor=\"let validator of model.validators\"\n ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"hasError(validator.name)\">{{validator.message}}</mat-error>\n </ng-container>\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"] }]
|
|
37
42
|
}], propDecorators: { input: [{
|
|
38
43
|
type: ViewChild,
|
|
39
44
|
args: [MatInput, { static: true }]
|
|
@@ -41,11 +46,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
41
46
|
type: Input
|
|
42
47
|
}], group: [{
|
|
43
48
|
type: Input
|
|
44
|
-
}], blur: [{
|
|
45
|
-
type: Output
|
|
46
49
|
}], change: [{
|
|
47
50
|
type: Output
|
|
48
|
-
}], focus: [{
|
|
49
|
-
type: Output
|
|
50
51
|
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7QUFXcEYsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQVAvRDs7UUFhWSxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7S0FzQjlEO0lBcEJDLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3hELENBQUM7SUFFTSxRQUFRLENBQUMsS0FBb0M7UUFDbEQsd0NBQXdDO1FBQ3hDLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtZQUMxQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUE4QixDQUFDLENBQUM7SUFDbkQsQ0FBQzsrR0EzQlUscUJBQXFCO21HQUFyQixxQkFBcUIsMkxBQ3JCLFFBQVEscUZDbkJyQiw2bENBb0NpQixzRkRwQkwsSUFBSSw2RkFBRSxLQUFLLGtIQUFFLG1CQUFtQiw0L0JBQUUsa0JBQWtCLGl1QkFBRSxjQUFjLDBXQUFFLGVBQWUsMkxBQUUsYUFBYTs7NEZBRW5HLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxlQUFlLGNBR2IsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQzs4QkFHeEUsS0FBSztzQkFBM0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUU1QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dCwgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkQmFzZSB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1iYXNlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRFdmVudCB9IGZyb20gJy4uLy4uL21vZGVscy9pbnRlcmZhY2VzL2R5bmFtaWMtZm9ybS1maWVsZC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRHluYW1pY0lucHV0IH0gZnJvbSAnLi9keW5hbWljLWlucHV0Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZHluYW1pYy1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnZHluYW1pYy1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogWydtYXQtZm9ybS1maWVsZCB7d2lkdGg6IDEwMCU7fSddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgTmdGb3IsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0lucHV0Q29tcG9uZW50IGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZEJhc2Uge1xuICBAVmlld0NoaWxkKE1hdElucHV0LCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dCE6IE1hdElucHV0O1xuXG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY0lucHV0O1xuICBASW5wdXQoKSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1GaWVsZEV2ZW50PigpO1xuXG4gIGdldCB2YWx1ZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXQ/LnZhbHVlID8gdGhpcy5pbnB1dC52YWx1ZS5sZW5ndGggOiAwO1xuICB9XG5cbiAgZ2V0IG1heENvdW50VGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnZhbHVlQ291bnR9IC8gJHt0aGlzLm1vZGVsLm1heExlbmd0aH1gO1xuICB9XG5cbiAgZ2V0IHNob3dDbGVhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbnRyb2wudmFsdWUgJiYgIXRoaXMuY29udHJvbC5kaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZShldmVudDogRXZlbnQgfCBEeW5hbWljRm9ybUZpZWxkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBJZ25vcmUgdGhlIG5hdGl2ZSBIVE1MIDUgY2hhbmdlIGV2ZW50XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgRXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlLmVtaXQoZXZlbnQgYXMgRHluYW1pY0Zvcm1GaWVsZEV2ZW50KTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxuICBbaWRdPVwiaWRcIlxuICBjb2xvcj1cInByaW1hcnlcIj5cbiAgPG1hdC1sYWJlbCAqbmdJZj1cIm1vZGVsLmxhYmVsXCI+e3ttb2RlbC5sYWJlbH19PC9tYXQtbGFiZWw+XG5cbiAgPHNwYW4gbWF0VGV4dFByZWZpeFxuICAgICpuZ0lmPVwibW9kZWwucHJlZml4XCI+e3ttb2RlbC5wcmVmaXh9fTwvc3Bhbj5cblxuICA8aW5wdXQgbWF0SW5wdXRcbiAgICBbdHlwZV09XCJtb2RlbC5pbnB1dFR5cGVcIlxuICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibW9kZWwubmFtZVwiXG4gICAgW2F0dHIubWluXT1cIm1vZGVsLm1pblwiXG4gICAgW2F0dHIubWF4XT1cIm1vZGVsLm1heFwiXG4gICAgW2F0dHIubWluTGVuZ3RoXT1cIm1vZGVsLm1pbkxlbmd0aFwiXG4gICAgW2F0dHIubWF4TGVuZ3RoXT1cIm1vZGVsLm1heExlbmd0aFwiXG4gICAgW3BhdHRlcm5dPVwibW9kZWwucGF0dGVyblwiXG4gICAgW2F1dG9jb21wbGV0ZV09XCJtb2RlbC5hdXRvY29tcGxldGVcIlxuICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIC8+XG5cbiAgPGJ1dHRvbiBtYXRTdWZmaXhcbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICAqbmdJZj1cInNob3dDbGVhclwiXG4gICAgKGNsaWNrKT1cInJlc2V0Q29udHJvbCgpXCI+XG4gICAgPG1hdC1pY29uIGZvbnRJY29uPVwiY2xlYXJcIj48L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8bWF0LWhpbnQgKm5nSWY9XCJtb2RlbC5oaW50XCJcbiAgICBhbGlnbj1cInN0YXJ0XCI+e3ttb2RlbC5oaW50fX08L21hdC1oaW50PlxuXG4gIDxtYXQtaGludCAqbmdJZj1cIm1vZGVsLm1heExlbmd0aFwiXG4gICAgYWxpZ249XCJlbmRcIj57e21heENvdW50VGV4dH19PC9tYXQtaGludD5cblxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZGF0b3Igb2YgbW9kZWwudmFsaWRhdG9yc1wiXG4gICAgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiaGFzRXJyb3IodmFsaWRhdG9yLm5hbWUpXCI+e3t2YWxpZGF0b3IubWVzc2FnZX19PC9tYXQtZXJyb3I+XG4gIDwvbmctY29udGFpbmVyPlxuPC9tYXQtZm9ybS1maWVsZD4iXX0=
|