@olafvv/ngx-dynamic-form 0.0.2

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.
Files changed (70) hide show
  1. package/README.md +55 -0
  2. package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +59 -0
  3. package/esm2022/lib/components/dynamic-form-field/dynamic-form-field.component.mjs +129 -0
  4. package/esm2022/lib/controls/button/dynamic-button.component.mjs +22 -0
  5. package/esm2022/lib/controls/button/dynamic-button.model.mjs +12 -0
  6. package/esm2022/lib/controls/checkbox/dynamic-checkbox.component.mjs +32 -0
  7. package/esm2022/lib/controls/checkbox/dynamic-checkbox.model.mjs +21 -0
  8. package/esm2022/lib/controls/index.mjs +7 -0
  9. package/esm2022/lib/controls/input/dynamic-input.component.mjs +51 -0
  10. package/esm2022/lib/controls/input/dynamic-input.model.mjs +18 -0
  11. package/esm2022/lib/controls/readonly/dynamic-readonly.component.mjs +18 -0
  12. package/esm2022/lib/controls/readonly/dynamic-readonly.model.mjs +9 -0
  13. package/esm2022/lib/controls/select/dynamic-select.component.mjs +42 -0
  14. package/esm2022/lib/controls/select/dynamic-select.model.mjs +11 -0
  15. package/esm2022/lib/controls/textarea/dynamic-textarea.component.mjs +45 -0
  16. package/esm2022/lib/controls/textarea/dynamic-textarea.model.mjs +15 -0
  17. package/esm2022/lib/models/classes/dynamic-form-field-base-component.mjs +34 -0
  18. package/esm2022/lib/models/classes/dynamic-form-field-model.mjs +24 -0
  19. package/esm2022/lib/models/classes/dynamic-form-field-option-model.mjs +48 -0
  20. package/esm2022/lib/models/classes/dynamic-form-field-value-model.mjs +24 -0
  21. package/esm2022/lib/models/classes/dynamic-form-validators.mjs +73 -0
  22. package/esm2022/lib/models/constants/dynamic-relations.const.mjs +47 -0
  23. package/esm2022/lib/models/index.mjs +11 -0
  24. package/esm2022/lib/models/interfaces/dynamic-form-field-config.interface.mjs +2 -0
  25. package/esm2022/lib/models/interfaces/dynamic-form-validator.interface.mjs +2 -0
  26. package/esm2022/lib/models/tokens/dynamic-form-field-map-fn.token.mjs +3 -0
  27. package/esm2022/lib/models/types/dynamic-form-config.type.mjs +2 -0
  28. package/esm2022/lib/models/types/dynamic-form-hook.type.mjs +2 -0
  29. package/esm2022/lib/models/types/related-form-controls.type.mjs +2 -0
  30. package/esm2022/lib/services/dynamic-form-relations.service.mjs +103 -0
  31. package/esm2022/lib/services/dynamic-form.service.mjs +77 -0
  32. package/esm2022/lib/services/dynamic-validations.service.mjs +37 -0
  33. package/esm2022/olafvv-ngx-dynamic-form.mjs +5 -0
  34. package/esm2022/public-api.mjs +8 -0
  35. package/fesm2022/olafvv-ngx-dynamic-form.mjs +873 -0
  36. package/fesm2022/olafvv-ngx-dynamic-form.mjs.map +1 -0
  37. package/index.d.ts +5 -0
  38. package/lib/components/dynamic-form/dynamic-form.component.d.ts +32 -0
  39. package/lib/components/dynamic-form-field/dynamic-form-field.component.d.ts +44 -0
  40. package/lib/controls/button/dynamic-button.component.d.ts +11 -0
  41. package/lib/controls/button/dynamic-button.model.d.ts +15 -0
  42. package/lib/controls/checkbox/dynamic-checkbox.component.d.ts +15 -0
  43. package/lib/controls/checkbox/dynamic-checkbox.model.d.ts +15 -0
  44. package/lib/controls/index.d.ts +6 -0
  45. package/lib/controls/input/dynamic-input.component.d.ts +19 -0
  46. package/lib/controls/input/dynamic-input.model.d.ts +27 -0
  47. package/lib/controls/readonly/dynamic-readonly.component.d.ts +10 -0
  48. package/lib/controls/readonly/dynamic-readonly.model.d.ts +9 -0
  49. package/lib/controls/select/dynamic-select.component.d.ts +16 -0
  50. package/lib/controls/select/dynamic-select.model.d.ts +12 -0
  51. package/lib/controls/textarea/dynamic-textarea.component.d.ts +18 -0
  52. package/lib/controls/textarea/dynamic-textarea.model.d.ts +21 -0
  53. package/lib/models/classes/dynamic-form-field-base-component.d.ts +26 -0
  54. package/lib/models/classes/dynamic-form-field-model.d.ts +22 -0
  55. package/lib/models/classes/dynamic-form-field-option-model.d.ts +41 -0
  56. package/lib/models/classes/dynamic-form-field-value-model.d.ts +18 -0
  57. package/lib/models/classes/dynamic-form-validators.d.ts +48 -0
  58. package/lib/models/constants/dynamic-relations.const.d.ts +30 -0
  59. package/lib/models/index.d.ts +10 -0
  60. package/lib/models/interfaces/dynamic-form-field-config.interface.d.ts +60 -0
  61. package/lib/models/interfaces/dynamic-form-validator.interface.d.ts +6 -0
  62. package/lib/models/tokens/dynamic-form-field-map-fn.token.d.ts +2 -0
  63. package/lib/models/types/dynamic-form-config.type.d.ts +2 -0
  64. package/lib/models/types/dynamic-form-hook.type.d.ts +1 -0
  65. package/lib/models/types/related-form-controls.type.d.ts +4 -0
  66. package/lib/services/dynamic-form-relations.service.d.ts +26 -0
  67. package/lib/services/dynamic-form.service.d.ts +42 -0
  68. package/lib/services/dynamic-validations.service.d.ts +20 -0
  69. package/package.json +28 -0
  70. package/public-api.d.ts +4 -0
package/README.md ADDED
@@ -0,0 +1,55 @@
1
+ # NgxDynamicForm
2
+
3
+ ## Create a custom Form Control
4
+
5
+ Other than the build-in form controls, it is possible to plug in you own custom controls. Start out with creating a custom form control component:
6
+
7
+ > https://blog.angular-university.io/angular-custom-form-controls/
8
+
9
+ After that follow the following steps.
10
+
11
+ ### Create a model
12
+
13
+ First step is to create a model and interface for the custom control containing the control specific properties for the configuration definitions, extending the base interface/model from the library.
14
+ Also, you need to create an (unique) name for the type of the model/.
15
+
16
+ For example if you're creating a control with a slider to select a value between 0 and 10:
17
+
18
+ #### Interface:
19
+
20
+ The interface extends the base interface `DynamicFormFieldValueConfig` and expects a generic type describing the possible value(s) of the field. In this case that would be a number or null value.
21
+
22
+ ```typescript
23
+ export interface SliderInputConfig extends DynamicFormFieldValueConfig<number | null> {
24
+ min: number;
25
+ max: number;
26
+ step: number;
27
+ }
28
+ ```
29
+
30
+ #### Model
31
+
32
+ The model is what is called when creating the form config (e.g. `new SliderInput(sliderConfig)`).
33
+ The model contains the same properties defined in the configuration interface, and provides them with a value from the config or a default value.
34
+
35
+ Also, you need to create a field type token which we can later use to map the used model to the control component. In this case we created the token with the name `DYNAMIC_FORM_FIELD_SLIDER` with the value `slider`. The value HAS to be unique.
36
+
37
+ ```typescript
38
+ export const DYNAMIC_FORM_FIELD_SLIDER = 'slider';
39
+
40
+ export class SliderInput extends DynamicFormFieldValueModel<number | null> {
41
+ public min: number;
42
+ public max: number;
43
+ public step: number;
44
+
45
+ readonly type = DYNAMIC_FORM_FIELD_SLIDER;
46
+
47
+ constructor(config: SliderInputConfig) {
48
+ super(config);
49
+
50
+ this.min = config.min ?? 0;
51
+ this.max = config.max ?? 10;
52
+ this.step = config.step ?? 1;
53
+ }
54
+ }
55
+ ```
@@ -0,0 +1,59 @@
1
+ import { NgClass, NgFor } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { DynamicFormService } from '../../services/dynamic-form.service';
5
+ import { DynamicFormFieldComponent } from '../dynamic-form-field/dynamic-form-field.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/forms";
8
+ export class DynamicFormComponent {
9
+ constructor() {
10
+ this.ready = new EventEmitter();
11
+ this.dynamicFormService = inject(DynamicFormService);
12
+ }
13
+ /**
14
+ * Get the formConfig as flat array.
15
+ */
16
+ get flatFormConfig() {
17
+ return this.formConfig.reduce((acc, curr) => acc.concat(curr), []);
18
+ }
19
+ ngOnInit() {
20
+ this.group = this.dynamicFormService.createFormGroup(this.formConfig);
21
+ this.ready.emit(this.group);
22
+ }
23
+ trackByFn(_index, field) {
24
+ return field.id;
25
+ }
26
+ /**
27
+ * Get the current value of the form.
28
+ * @param includeDisabledFields Include the disabled fields of the form, is enabled by default
29
+ */
30
+ getFormValue(includeDisabledFields = true) {
31
+ const formValue = includeDisabledFields ? this.group.getRawValue() : this.group.value;
32
+ return formValue;
33
+ }
34
+ /**
35
+ * Provides an Observable to listen to changes of a specific field in the form.
36
+ *
37
+ * @param name Name of the field
38
+ * @returns Observable<any>
39
+ */
40
+ onChange(name) {
41
+ const field = this.group.get(name);
42
+ if (!field) {
43
+ throw new Error(`Cannot find a field with the name ${name} in the FormGroup`);
44
+ }
45
+ return field.valueChanges;
46
+ }
47
+ 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: { ready: "ready" }, providers: [DynamicFormService], ngImport: i0, template: "<form [formGroup]=\"group\"\n class=\"dynamic-form\">\n <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 </dynamic-form-field>\n </div>\n</form>", styles: [".dynamic-form{width:100%}.dynamic-form .dynamic-form-row{width:100%;display:flex}.dynamic-form .dynamic-form-row .dynamic-form-field{width:100%;margin:4px 0}.dynamic-form .dynamic-form-row .dynamic-form-field:not(:last-of-type){margin-right:12px}.dynamic-form .dynamic-form-row .dynamic-form-field.button{flex:0}.dynamic-form .dynamic-form-row .form-field-width-1{width:1%}.dynamic-form .dynamic-form-row .form-field-width-2{width:2%}.dynamic-form .dynamic-form-row .form-field-width-3{width:3%}.dynamic-form .dynamic-form-row .form-field-width-4{width:4%}.dynamic-form .dynamic-form-row .form-field-width-5{width:5%}.dynamic-form .dynamic-form-row .form-field-width-6{width:6%}.dynamic-form .dynamic-form-row .form-field-width-7{width:7%}.dynamic-form .dynamic-form-row .form-field-width-8{width:8%}.dynamic-form .dynamic-form-row .form-field-width-9{width:9%}.dynamic-form .dynamic-form-row .form-field-width-10{width:10%}.dynamic-form .dynamic-form-row .form-field-width-11{width:11%}.dynamic-form .dynamic-form-row .form-field-width-12{width:12%}.dynamic-form .dynamic-form-row .form-field-width-13{width:13%}.dynamic-form .dynamic-form-row .form-field-width-14{width:14%}.dynamic-form .dynamic-form-row .form-field-width-15{width:15%}.dynamic-form .dynamic-form-row .form-field-width-16{width:16%}.dynamic-form .dynamic-form-row .form-field-width-17{width:17%}.dynamic-form .dynamic-form-row .form-field-width-18{width:18%}.dynamic-form .dynamic-form-row .form-field-width-19{width:19%}.dynamic-form .dynamic-form-row .form-field-width-20{width:20%}.dynamic-form .dynamic-form-row .form-field-width-21{width:21%}.dynamic-form .dynamic-form-row .form-field-width-22{width:22%}.dynamic-form .dynamic-form-row .form-field-width-23{width:23%}.dynamic-form .dynamic-form-row .form-field-width-24{width:24%}.dynamic-form .dynamic-form-row .form-field-width-25{width:25%}.dynamic-form .dynamic-form-row .form-field-width-26{width:26%}.dynamic-form .dynamic-form-row .form-field-width-27{width:27%}.dynamic-form .dynamic-form-row .form-field-width-28{width:28%}.dynamic-form .dynamic-form-row .form-field-width-29{width:29%}.dynamic-form .dynamic-form-row .form-field-width-30{width:30%}.dynamic-form .dynamic-form-row .form-field-width-31{width:31%}.dynamic-form .dynamic-form-row .form-field-width-32{width:32%}.dynamic-form .dynamic-form-row .form-field-width-33{width:33%}.dynamic-form .dynamic-form-row .form-field-width-34{width:34%}.dynamic-form .dynamic-form-row .form-field-width-35{width:35%}.dynamic-form .dynamic-form-row .form-field-width-36{width:36%}.dynamic-form .dynamic-form-row .form-field-width-37{width:37%}.dynamic-form .dynamic-form-row .form-field-width-38{width:38%}.dynamic-form .dynamic-form-row .form-field-width-39{width:39%}.dynamic-form .dynamic-form-row .form-field-width-40{width:40%}.dynamic-form .dynamic-form-row .form-field-width-41{width:41%}.dynamic-form .dynamic-form-row .form-field-width-42{width:42%}.dynamic-form .dynamic-form-row .form-field-width-43{width:43%}.dynamic-form .dynamic-form-row .form-field-width-44{width:44%}.dynamic-form .dynamic-form-row .form-field-width-45{width:45%}.dynamic-form .dynamic-form-row .form-field-width-46{width:46%}.dynamic-form .dynamic-form-row .form-field-width-47{width:47%}.dynamic-form .dynamic-form-row .form-field-width-48{width:48%}.dynamic-form .dynamic-form-row .form-field-width-49{width:49%}.dynamic-form .dynamic-form-row .form-field-width-50{width:50%}.dynamic-form .dynamic-form-row .form-field-width-51{width:51%}.dynamic-form .dynamic-form-row .form-field-width-52{width:52%}.dynamic-form .dynamic-form-row .form-field-width-53{width:53%}.dynamic-form .dynamic-form-row .form-field-width-54{width:54%}.dynamic-form .dynamic-form-row .form-field-width-55{width:55%}.dynamic-form .dynamic-form-row .form-field-width-56{width:56%}.dynamic-form .dynamic-form-row .form-field-width-57{width:57%}.dynamic-form .dynamic-form-row .form-field-width-58{width:58%}.dynamic-form .dynamic-form-row .form-field-width-59{width:59%}.dynamic-form .dynamic-form-row .form-field-width-60{width:60%}.dynamic-form .dynamic-form-row .form-field-width-61{width:61%}.dynamic-form .dynamic-form-row .form-field-width-62{width:62%}.dynamic-form .dynamic-form-row .form-field-width-63{width:63%}.dynamic-form .dynamic-form-row .form-field-width-64{width:64%}.dynamic-form .dynamic-form-row .form-field-width-65{width:65%}.dynamic-form .dynamic-form-row .form-field-width-66{width:66%}.dynamic-form .dynamic-form-row .form-field-width-67{width:67%}.dynamic-form .dynamic-form-row .form-field-width-68{width:68%}.dynamic-form .dynamic-form-row .form-field-width-69{width:69%}.dynamic-form .dynamic-form-row .form-field-width-70{width:70%}.dynamic-form .dynamic-form-row .form-field-width-71{width:71%}.dynamic-form .dynamic-form-row .form-field-width-72{width:72%}.dynamic-form .dynamic-form-row .form-field-width-73{width:73%}.dynamic-form .dynamic-form-row .form-field-width-74{width:74%}.dynamic-form .dynamic-form-row .form-field-width-75{width:75%}.dynamic-form .dynamic-form-row .form-field-width-76{width:76%}.dynamic-form .dynamic-form-row .form-field-width-77{width:77%}.dynamic-form .dynamic-form-row .form-field-width-78{width:78%}.dynamic-form .dynamic-form-row .form-field-width-79{width:79%}.dynamic-form .dynamic-form-row .form-field-width-80{width:80%}.dynamic-form .dynamic-form-row .form-field-width-81{width:81%}.dynamic-form .dynamic-form-row .form-field-width-82{width:82%}.dynamic-form .dynamic-form-row .form-field-width-83{width:83%}.dynamic-form .dynamic-form-row .form-field-width-84{width:84%}.dynamic-form .dynamic-form-row .form-field-width-85{width:85%}.dynamic-form .dynamic-form-row .form-field-width-86{width:86%}.dynamic-form .dynamic-form-row .form-field-width-87{width:87%}.dynamic-form .dynamic-form-row .form-field-width-88{width:88%}.dynamic-form .dynamic-form-row .form-field-width-89{width:89%}.dynamic-form .dynamic-form-row .form-field-width-90{width:90%}.dynamic-form .dynamic-form-row .form-field-width-91{width:91%}.dynamic-form .dynamic-form-row .form-field-width-92{width:92%}.dynamic-form .dynamic-form-row .form-field-width-93{width:93%}.dynamic-form .dynamic-form-row .form-field-width-94{width:94%}.dynamic-form .dynamic-form-row .form-field-width-95{width:95%}.dynamic-form .dynamic-form-row .form-field-width-96{width:96%}.dynamic-form .dynamic-form-row .form-field-width-97{width:97%}.dynamic-form .dynamic-form-row .form-field-width-98{width:98%}.dynamic-form .dynamic-form-row .form-field-width-99{width:99%}.dynamic-form .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"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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 }); }
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicFormComponent, decorators: [{
51
+ type: Component,
52
+ args: [{ standalone: true, imports: [NgFor, NgClass, DynamicFormFieldComponent, ReactiveFormsModule], selector: 'dynamic-form', providers: [DynamicFormService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"group\"\n class=\"dynamic-form\">\n <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 </dynamic-form-field>\n </div>\n</form>", styles: [".dynamic-form{width:100%}.dynamic-form .dynamic-form-row{width:100%;display:flex}.dynamic-form .dynamic-form-row .dynamic-form-field{width:100%;margin:4px 0}.dynamic-form .dynamic-form-row .dynamic-form-field:not(:last-of-type){margin-right:12px}.dynamic-form .dynamic-form-row .dynamic-form-field.button{flex:0}.dynamic-form .dynamic-form-row .form-field-width-1{width:1%}.dynamic-form .dynamic-form-row .form-field-width-2{width:2%}.dynamic-form .dynamic-form-row .form-field-width-3{width:3%}.dynamic-form .dynamic-form-row .form-field-width-4{width:4%}.dynamic-form .dynamic-form-row .form-field-width-5{width:5%}.dynamic-form .dynamic-form-row .form-field-width-6{width:6%}.dynamic-form .dynamic-form-row .form-field-width-7{width:7%}.dynamic-form .dynamic-form-row .form-field-width-8{width:8%}.dynamic-form .dynamic-form-row .form-field-width-9{width:9%}.dynamic-form .dynamic-form-row .form-field-width-10{width:10%}.dynamic-form .dynamic-form-row .form-field-width-11{width:11%}.dynamic-form .dynamic-form-row .form-field-width-12{width:12%}.dynamic-form .dynamic-form-row .form-field-width-13{width:13%}.dynamic-form .dynamic-form-row .form-field-width-14{width:14%}.dynamic-form .dynamic-form-row .form-field-width-15{width:15%}.dynamic-form .dynamic-form-row .form-field-width-16{width:16%}.dynamic-form .dynamic-form-row .form-field-width-17{width:17%}.dynamic-form .dynamic-form-row .form-field-width-18{width:18%}.dynamic-form .dynamic-form-row .form-field-width-19{width:19%}.dynamic-form .dynamic-form-row .form-field-width-20{width:20%}.dynamic-form .dynamic-form-row .form-field-width-21{width:21%}.dynamic-form .dynamic-form-row .form-field-width-22{width:22%}.dynamic-form .dynamic-form-row .form-field-width-23{width:23%}.dynamic-form .dynamic-form-row .form-field-width-24{width:24%}.dynamic-form .dynamic-form-row .form-field-width-25{width:25%}.dynamic-form .dynamic-form-row .form-field-width-26{width:26%}.dynamic-form .dynamic-form-row .form-field-width-27{width:27%}.dynamic-form .dynamic-form-row .form-field-width-28{width:28%}.dynamic-form .dynamic-form-row .form-field-width-29{width:29%}.dynamic-form .dynamic-form-row .form-field-width-30{width:30%}.dynamic-form .dynamic-form-row .form-field-width-31{width:31%}.dynamic-form .dynamic-form-row .form-field-width-32{width:32%}.dynamic-form .dynamic-form-row .form-field-width-33{width:33%}.dynamic-form .dynamic-form-row .form-field-width-34{width:34%}.dynamic-form .dynamic-form-row .form-field-width-35{width:35%}.dynamic-form .dynamic-form-row .form-field-width-36{width:36%}.dynamic-form .dynamic-form-row .form-field-width-37{width:37%}.dynamic-form .dynamic-form-row .form-field-width-38{width:38%}.dynamic-form .dynamic-form-row .form-field-width-39{width:39%}.dynamic-form .dynamic-form-row .form-field-width-40{width:40%}.dynamic-form .dynamic-form-row .form-field-width-41{width:41%}.dynamic-form .dynamic-form-row .form-field-width-42{width:42%}.dynamic-form .dynamic-form-row .form-field-width-43{width:43%}.dynamic-form .dynamic-form-row .form-field-width-44{width:44%}.dynamic-form .dynamic-form-row .form-field-width-45{width:45%}.dynamic-form .dynamic-form-row .form-field-width-46{width:46%}.dynamic-form .dynamic-form-row .form-field-width-47{width:47%}.dynamic-form .dynamic-form-row .form-field-width-48{width:48%}.dynamic-form .dynamic-form-row .form-field-width-49{width:49%}.dynamic-form .dynamic-form-row .form-field-width-50{width:50%}.dynamic-form .dynamic-form-row .form-field-width-51{width:51%}.dynamic-form .dynamic-form-row .form-field-width-52{width:52%}.dynamic-form .dynamic-form-row .form-field-width-53{width:53%}.dynamic-form .dynamic-form-row .form-field-width-54{width:54%}.dynamic-form .dynamic-form-row .form-field-width-55{width:55%}.dynamic-form .dynamic-form-row .form-field-width-56{width:56%}.dynamic-form .dynamic-form-row .form-field-width-57{width:57%}.dynamic-form .dynamic-form-row .form-field-width-58{width:58%}.dynamic-form .dynamic-form-row .form-field-width-59{width:59%}.dynamic-form .dynamic-form-row .form-field-width-60{width:60%}.dynamic-form .dynamic-form-row .form-field-width-61{width:61%}.dynamic-form .dynamic-form-row .form-field-width-62{width:62%}.dynamic-form .dynamic-form-row .form-field-width-63{width:63%}.dynamic-form .dynamic-form-row .form-field-width-64{width:64%}.dynamic-form .dynamic-form-row .form-field-width-65{width:65%}.dynamic-form .dynamic-form-row .form-field-width-66{width:66%}.dynamic-form .dynamic-form-row .form-field-width-67{width:67%}.dynamic-form .dynamic-form-row .form-field-width-68{width:68%}.dynamic-form .dynamic-form-row .form-field-width-69{width:69%}.dynamic-form .dynamic-form-row .form-field-width-70{width:70%}.dynamic-form .dynamic-form-row .form-field-width-71{width:71%}.dynamic-form .dynamic-form-row .form-field-width-72{width:72%}.dynamic-form .dynamic-form-row .form-field-width-73{width:73%}.dynamic-form .dynamic-form-row .form-field-width-74{width:74%}.dynamic-form .dynamic-form-row .form-field-width-75{width:75%}.dynamic-form .dynamic-form-row .form-field-width-76{width:76%}.dynamic-form .dynamic-form-row .form-field-width-77{width:77%}.dynamic-form .dynamic-form-row .form-field-width-78{width:78%}.dynamic-form .dynamic-form-row .form-field-width-79{width:79%}.dynamic-form .dynamic-form-row .form-field-width-80{width:80%}.dynamic-form .dynamic-form-row .form-field-width-81{width:81%}.dynamic-form .dynamic-form-row .form-field-width-82{width:82%}.dynamic-form .dynamic-form-row .form-field-width-83{width:83%}.dynamic-form .dynamic-form-row .form-field-width-84{width:84%}.dynamic-form .dynamic-form-row .form-field-width-85{width:85%}.dynamic-form .dynamic-form-row .form-field-width-86{width:86%}.dynamic-form .dynamic-form-row .form-field-width-87{width:87%}.dynamic-form .dynamic-form-row .form-field-width-88{width:88%}.dynamic-form .dynamic-form-row .form-field-width-89{width:89%}.dynamic-form .dynamic-form-row .form-field-width-90{width:90%}.dynamic-form .dynamic-form-row .form-field-width-91{width:91%}.dynamic-form .dynamic-form-row .form-field-width-92{width:92%}.dynamic-form .dynamic-form-row .form-field-width-93{width:93%}.dynamic-form .dynamic-form-row .form-field-width-94{width:94%}.dynamic-form .dynamic-form-row .form-field-width-95{width:95%}.dynamic-form .dynamic-form-row .form-field-width-96{width:96%}.dynamic-form .dynamic-form-row .form-field-width-97{width:97%}.dynamic-form .dynamic-form-row .form-field-width-98{width:98%}.dynamic-form .dynamic-form-row .form-field-width-99{width:99%}.dynamic-form .dynamic-form-row .form-field-width-100{width:100%}\n"] }]
53
+ }], propDecorators: { formConfig: [{
54
+ type: Input,
55
+ args: [{ required: true }]
56
+ }], ready: [{
57
+ type: Output
58
+ }] } });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7O0FBVy9GLE1BQU0sT0FBTyxvQkFBb0I7SUFUakM7UUFZWSxVQUFLLEdBQW1DLElBQUksWUFBWSxFQUFFLENBQUM7UUFFN0QsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0E2Q3pEO0lBekNDOztPQUVHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFjLEVBQUUsS0FBNEI7UUFDM0QsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZLENBQWMscUJBQXFCLEdBQUcsSUFBSTtRQUMzRCxNQUFNLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFdEYsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksUUFBUSxDQUFDLElBQVk7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLElBQUksbUJBQW1CLENBQUMsQ0FBQztTQUMvRTtRQUVELE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQztJQUM1QixDQUFDOytHQWpEVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw4SEFIcEIsQ0FBQyxrQkFBa0IsQ0FBQywwQkNmakMsNmNBYU8sZ2dOREZLLEtBQUssbUhBQUUsT0FBTyxvRkFBRSx5QkFBeUIsMEZBQUUsbUJBQW1COzs0RkFPN0Qsb0JBQW9CO2tCQVRoQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsbUJBQW1CLENBQUMsWUFDL0QsY0FBYyxhQUdiLENBQUMsa0JBQWtCLENBQUMsbUJBQ2QsdUJBQXVCLENBQUMsTUFBTTs4QkFHcEIsVUFBVTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRWYsS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy90eXBlcy9keW5hbWljLWZvcm0tY29uZmlnLnR5cGUnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtZm9ybS1maWVsZC9keW5hbWljLWZvcm0tZmllbGQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0ZvciwgTmdDbGFzcywgRHluYW1pY0Zvcm1GaWVsZENvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZHluYW1pYy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICdkeW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRHluYW1pY0Zvcm1TZXJ2aWNlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBmb3JtQ29uZmlnITogRHluYW1pY0Zvcm1Db25maWc7XG5cbiAgQE91dHB1dCgpIHJlYWR5OiBFdmVudEVtaXR0ZXI8VW50eXBlZEZvcm1Hcm91cD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBkeW5hbWljRm9ybVNlcnZpY2UgPSBpbmplY3QoRHluYW1pY0Zvcm1TZXJ2aWNlKTtcblxuICBwdWJsaWMgZ3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZvcm1Db25maWcgYXMgZmxhdCBhcnJheS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZmxhdEZvcm1Db25maWcoKTogRHluYW1pY0Zvcm1GaWVsZE1vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWcucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYy5jb25jYXQoY3VyciksIFtdKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ3JvdXAgPSB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jcmVhdGVGb3JtR3JvdXAodGhpcy5mb3JtQ29uZmlnKTtcbiAgICB0aGlzLnJlYWR5LmVtaXQodGhpcy5ncm91cCk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUZuKF9pbmRleDogbnVtYmVyLCBmaWVsZDogRHluYW1pY0Zvcm1GaWVsZE1vZGVsKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZmllbGQuaWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmb3JtLlxuICAgKiBAcGFyYW0gaW5jbHVkZURpc2FibGVkRmllbGRzIEluY2x1ZGUgdGhlIGRpc2FibGVkIGZpZWxkcyBvZiB0aGUgZm9ybSwgaXMgZW5hYmxlZCBieSBkZWZhdWx0XG4gICAqL1xuICBwdWJsaWMgZ2V0Rm9ybVZhbHVlPFQgPSB1bmtub3duPihpbmNsdWRlRGlzYWJsZWRGaWVsZHMgPSB0cnVlKTogVCB7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gaW5jbHVkZURpc2FibGVkRmllbGRzID8gdGhpcy5ncm91cC5nZXRSYXdWYWx1ZSgpIDogdGhpcy5ncm91cC52YWx1ZTtcblxuICAgIHJldHVybiBmb3JtVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZXMgYW4gT2JzZXJ2YWJsZSB0byBsaXN0ZW4gdG8gY2hhbmdlcyBvZiBhIHNwZWNpZmljIGZpZWxkIGluIHRoZSBmb3JtLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBmaWVsZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHB1YmxpYyBvbkNoYW5nZShuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5ncm91cC5nZXQobmFtZSk7XG5cbiAgICBpZiAoIWZpZWxkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGEgZmllbGQgd2l0aCB0aGUgbmFtZSAke25hbWV9IGluIHRoZSBGb3JtR3JvdXBgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmllbGQudmFsdWVDaGFuZ2VzO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImdyb3VwXCJcbiAgY2xhc3M9XCJkeW5hbWljLWZvcm1cIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIGZvcm1Db25maWdcIlxuICAgIGNsYXNzPVwiZHluYW1pYy1mb3JtLXJvd1wiPlxuICAgIDxkeW5hbWljLWZvcm0tZmllbGQgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHJvdzsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgIGNsYXNzPVwiZHluYW1pYy1mb3JtLWZpZWxkXCJcbiAgICAgIFtpZF09XCJmaWVsZC5pZFwiXG4gICAgICBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiXG4gICAgICBbbmdDbGFzc109XCJbZmllbGQudHlwZSwgJ2Zvcm0tZmllbGQtd2lkdGgtJytmaWVsZC53aWR0aF1cIlxuICAgICAgW2dyb3VwXT1cImdyb3VwXCJcbiAgICAgIFttb2RlbF09XCJmaWVsZFwiPlxuICAgIDwvZHluYW1pYy1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cbjwvZm9ybT4iXX0=
@@ -0,0 +1,129 @@
1
+ import { NgClass } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, inject, Input, ViewChild, ViewContainerRef } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { Subscription } from 'rxjs';
5
+ import { DynamicButtonComponent } from '../../controls/button/dynamic-button.component';
6
+ import { DYNAMIC_FORM_FIELD_BUTTON } from '../../controls/button/dynamic-button.model';
7
+ import { DynamicCheckboxComponent } from '../../controls/checkbox/dynamic-checkbox.component';
8
+ import { DYNAMIC_FORM_FIELD_CHECKBOX } from '../../controls/checkbox/dynamic-checkbox.model';
9
+ import { DynamicInputComponent } from '../../controls/input/dynamic-input.component';
10
+ import { DYNAMIC_FORM_FIELD_INPUT } from '../../controls/input/dynamic-input.model';
11
+ import { DynamicReadonlyComponent } from '../../controls/readonly/dynamic-readonly.component';
12
+ import { DYNAMIC_FORM_FIELD_READONLY } from '../../controls/readonly/dynamic-readonly.model';
13
+ import { DynamicSelectComponent } from '../../controls/select/dynamic-select.component';
14
+ import { DYNAMIC_FORM_FIELD_SELECT } from '../../controls/select/dynamic-select.model';
15
+ import { DynamicTextareaComponent } from '../../controls/textarea/dynamic-textarea.component';
16
+ import { DYNAMIC_FORM_FIELD_TEXTAREA } from '../../controls/textarea/dynamic-textarea.model';
17
+ import { DynamicFormFieldValueModel } from '../../models/classes/dynamic-form-field-value-model';
18
+ import { DynamicFormRelationsService } from '../../services/dynamic-form-relations.service';
19
+ import { DynamicFormService } from '../../services/dynamic-form.service';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "@angular/forms";
22
+ export class DynamicFormFieldComponent {
23
+ constructor() {
24
+ this._subs = new Subscription();
25
+ this.dynamicFormService = inject(DynamicFormService);
26
+ this.relationService = inject(DynamicFormRelationsService);
27
+ }
28
+ /** Get the instance of a control component using the injected custom method or local method */
29
+ get componentType() {
30
+ return this.dynamicFormService.getCustomControlComponentType(this.model) || this.getControlComponentType();
31
+ }
32
+ ngOnInit() {
33
+ if (this.group) {
34
+ this._control = this.group.get(this.model.name);
35
+ this.createFormControlComponent();
36
+ this.setSubscriptions();
37
+ }
38
+ }
39
+ ngOnDestroy() {
40
+ this._subs.unsubscribe();
41
+ }
42
+ /**
43
+ * Finds the instance of a control component by type
44
+ * @returns
45
+ */
46
+ getControlComponentType() {
47
+ switch (this.model.type) {
48
+ case DYNAMIC_FORM_FIELD_CHECKBOX:
49
+ return DynamicCheckboxComponent;
50
+ case DYNAMIC_FORM_FIELD_INPUT:
51
+ return DynamicInputComponent;
52
+ case DYNAMIC_FORM_FIELD_TEXTAREA:
53
+ return DynamicTextareaComponent;
54
+ case DYNAMIC_FORM_FIELD_READONLY:
55
+ return DynamicReadonlyComponent;
56
+ case DYNAMIC_FORM_FIELD_SELECT:
57
+ return DynamicSelectComponent;
58
+ case DYNAMIC_FORM_FIELD_BUTTON:
59
+ return DynamicButtonComponent;
60
+ default:
61
+ 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
+ return null;
63
+ }
64
+ }
65
+ createFormControlComponent() {
66
+ const component = this.componentType;
67
+ if (component != null) {
68
+ let componentRef = this.componentViewContainer.createComponent(component);
69
+ const componentInstance = componentRef.instance;
70
+ componentInstance.group = this.group;
71
+ componentInstance.model = this.model;
72
+ }
73
+ }
74
+ /**
75
+ * Setup all necessary subscriptions of the FormControl
76
+ */
77
+ setSubscriptions() {
78
+ const model = this.model;
79
+ // Subscribe to the value change inside the control to chagne the value inside the model as well
80
+ this._subs.add(this._control.valueChanges.subscribe((value) => this.onValueChange(value)));
81
+ // Subscribe to the disabled change inside the model to change the disabled state of the FormControl
82
+ this._subs.add(model.disabledChange.subscribe((disabled) => this.onDisabledChange(disabled)));
83
+ // Setup subscriptions for any possible relation
84
+ if (this.model.relations?.length) {
85
+ this.setUpRelations();
86
+ }
87
+ }
88
+ /**
89
+ * Set up all relations of the current model
90
+ */
91
+ setUpRelations() {
92
+ // Array of all FormControls the current model has a relation to
93
+ const relatedFormControls = this.relationService.findRelatedFormField(this.model, this.group);
94
+ const subs = this.relationService.getRelationSubscriptions(relatedFormControls, this.model, this._control);
95
+ // Add all relations as subscription to the main Subscription object
96
+ subs.forEach((sub) => this._subs.add(sub));
97
+ }
98
+ /**
99
+ * Fired when the value changes of the control and updates the value inside the model
100
+ * @param value
101
+ */
102
+ onValueChange(value) {
103
+ if (this.model instanceof DynamicFormFieldValueModel && this.model.value !== value) {
104
+ this.model.value = value;
105
+ }
106
+ }
107
+ /**
108
+ * Enables/disabled the control based on the provided parameter.
109
+ * Is fired when disabled state is changed inside the model and should not be directly used outside this component.
110
+ * @param disabled
111
+ */
112
+ onDisabledChange(disabled) {
113
+ disabled ? this._control.disable() : this._control.enable();
114
+ }
115
+ 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 }); }
117
+ }
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicFormFieldComponent, decorators: [{
119
+ type: Component,
120
+ args: [{ standalone: true, imports: [NgClass, ReactiveFormsModule], selector: 'dynamic-form-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [formGroup]=\"group\"\n [ngClass]=\"['dynamic-form-field-container', 'dynamic-form-field-' + model.type]\">\n <ng-container #componentViewContainer></ng-container>\n</div>" }]
121
+ }], propDecorators: { componentViewContainer: [{
122
+ type: ViewChild,
123
+ args: ['componentViewContainer', { read: ViewContainerRef, static: true }]
124
+ }], model: [{
125
+ type: Input
126
+ }], group: [{
127
+ type: Input
128
+ }] } });
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1maWVsZC9keW5hbWljLWZvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWZpZWxkL2R5bmFtaWMtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUEyQixTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLG1CQUFtQixFQUF3QyxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDeEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDN0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDeEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFHN0YsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFakcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQVN6RSxNQUFNLE9BQU8seUJBQXlCO0lBUHRDO1FBY1UsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFM0IsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsb0JBQWUsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztLQTJHL0Q7SUF6R0MsK0ZBQStGO0lBQy9GLElBQVksYUFBYTtRQUN2QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDN0csQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUF1QixDQUFDO1lBRXRFLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSyx1QkFBdUI7UUFDN0IsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtZQUN2QixLQUFLLDJCQUEyQjtnQkFDOUIsT0FBTyx3QkFBd0IsQ0FBQztZQUNsQyxLQUFLLHdCQUF3QjtnQkFDM0IsT0FBTyxxQkFBcUIsQ0FBQztZQUMvQixLQUFLLDJCQUEyQjtnQkFDOUIsT0FBTyx3QkFBd0IsQ0FBQztZQUNsQyxLQUFLLDJCQUEyQjtnQkFDOUIsT0FBTyx3QkFBd0IsQ0FBQztZQUNsQyxLQUFLLHlCQUF5QjtnQkFDNUIsT0FBTyxzQkFBc0IsQ0FBQztZQUNoQyxLQUFLLHlCQUF5QjtnQkFDNUIsT0FBTyxzQkFBc0IsQ0FBQztZQUNoQztnQkFDRSxPQUFPLENBQUMsSUFBSSxDQUNWLDBCQUEwQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksMkZBQTJGLENBQ3JJLENBQUM7Z0JBQ0YsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNILENBQUM7SUFFTywwQkFBMEI7UUFDaEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUVyQyxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDckIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUUxRSxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFFaEQsaUJBQWlCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDckMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQTRDLENBQUM7UUFFaEUsZ0dBQWdHO1FBQ2hHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0Ysb0dBQW9HO1FBQ3BHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlGLGdEQUFnRDtRQUNoRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRTtZQUNoQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjO1FBQ3BCLGdFQUFnRTtRQUNoRSxNQUFNLG1CQUFtQixHQUF3QixJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsd0JBQXdCLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0csb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGFBQWEsQ0FBQyxLQUFjO1FBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssWUFBWSwwQkFBMEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDbEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxnQkFBZ0IsQ0FBQyxRQUFpQjtRQUN4QyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDOUQsQ0FBQzsrR0FwSFUseUJBQXlCO21HQUF6Qix5QkFBeUIsdU9BQ1MsZ0JBQWdCLDJDQy9CL0Qsb0xBR00sNENEc0JNLE9BQU8sbUZBQUUsbUJBQW1COzs0RkFLM0IseUJBQXlCO2tCQVByQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxZQUM3QixvQkFBb0IsbUJBRWIsdUJBQXVCLENBQUMsTUFBTTs4QkFHZ0Msc0JBQXNCO3NCQUFwRyxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXBFLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUeXBlLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHluYW1pY0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2J1dHRvbi9keW5hbWljLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX0JVVFRPTiB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2J1dHRvbi9keW5hbWljLWJ1dHRvbi5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250cm9scy9jaGVja2JveC9keW5hbWljLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEWU5BTUlDX0ZPUk1fRklFTERfQ0hFQ0tCT1ggfSBmcm9tICcuLi8uLi9jb250cm9scy9jaGVja2JveC9keW5hbWljLWNoZWNrYm94Lm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2lucHV0L2R5bmFtaWMtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9JTlBVVCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL2lucHV0L2R5bmFtaWMtaW5wdXQubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY1JlYWRvbmx5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRFlOQU1JQ19GT1JNX0ZJRUxEX1JFQURPTkxZIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvc2VsZWN0L2R5bmFtaWMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEWU5BTUlDX0ZPUk1fRklFTERfU0VMRUNUIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvc2VsZWN0L2R5bmFtaWMtc2VsZWN0Lm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3RleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IERZTkFNSUNfRk9STV9GSUVMRF9URVhUQVJFQSB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3RleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtbW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZFZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtdmFsdWUtbW9kZWwnO1xuaW1wb3J0IHsgUmVsYXRlZEZvcm1Db250cm9scyB9IGZyb20gJy4uLy4uL21vZGVscy90eXBlcy9yZWxhdGVkLWZvcm0tY29udHJvbHMudHlwZSc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybVJlbGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0tcmVsYXRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3MsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2R5bmFtaWMtZm9ybS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnZHluYW1pYy1mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1GaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnY29tcG9uZW50Vmlld0NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIGNvbXBvbmVudFZpZXdDb250YWluZXIhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY0Zvcm1GaWVsZE1vZGVsO1xuICBASW5wdXQoKSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgcHJpdmF0ZSBfY29udHJvbCE6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgcHJpdmF0ZSBfc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIGR5bmFtaWNGb3JtU2VydmljZSA9IGluamVjdChEeW5hbWljRm9ybVNlcnZpY2UpO1xuICBwcml2YXRlIHJlbGF0aW9uU2VydmljZSA9IGluamVjdChEeW5hbWljRm9ybVJlbGF0aW9uc1NlcnZpY2UpO1xuXG4gIC8qKiBHZXQgdGhlIGluc3RhbmNlIG9mIGEgY29udHJvbCBjb21wb25lbnQgdXNpbmcgdGhlIGluamVjdGVkIGN1c3RvbSBtZXRob2Qgb3IgbG9jYWwgbWV0aG9kICovXG4gIHByaXZhdGUgZ2V0IGNvbXBvbmVudFR5cGUoKTogVHlwZTxEeW5hbWljRm9ybUZpZWxkPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5nZXRDdXN0b21Db250cm9sQ29tcG9uZW50VHlwZSh0aGlzLm1vZGVsKSB8fCB0aGlzLmdldENvbnRyb2xDb21wb25lbnRUeXBlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgdGhpcy5fY29udHJvbCA9IHRoaXMuZ3JvdXAuZ2V0KHRoaXMubW9kZWwubmFtZSkgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuXG4gICAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sQ29tcG9uZW50KCk7XG4gICAgICB0aGlzLnNldFN1YnNjcmlwdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIGluc3RhbmNlIG9mIGEgY29udHJvbCBjb21wb25lbnQgYnkgdHlwZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRDb250cm9sQ29tcG9uZW50VHlwZSgpOiBUeXBlPER5bmFtaWNGb3JtRmllbGQ+IHwgbnVsbCB7XG4gICAgc3dpdGNoICh0aGlzLm1vZGVsLnR5cGUpIHtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX0NIRUNLQk9YOlxuICAgICAgICByZXR1cm4gRHluYW1pY0NoZWNrYm94Q29tcG9uZW50O1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfSU5QVVQ6XG4gICAgICAgIHJldHVybiBEeW5hbWljSW5wdXRDb21wb25lbnQ7XG4gICAgICBjYXNlIERZTkFNSUNfRk9STV9GSUVMRF9URVhUQVJFQTpcbiAgICAgICAgcmV0dXJuIER5bmFtaWNUZXh0YXJlYUNvbXBvbmVudDtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX1JFQURPTkxZOlxuICAgICAgICByZXR1cm4gRHluYW1pY1JlYWRvbmx5Q29tcG9uZW50O1xuICAgICAgY2FzZSBEWU5BTUlDX0ZPUk1fRklFTERfU0VMRUNUOlxuICAgICAgICByZXR1cm4gRHluYW1pY1NlbGVjdENvbXBvbmVudDtcbiAgICAgIGNhc2UgRFlOQU1JQ19GT1JNX0ZJRUxEX0JVVFRPTjpcbiAgICAgICAgcmV0dXJuIER5bmFtaWNCdXR0b25Db21wb25lbnQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYE1vZGVsIG9mIHR5cGUgJ2R5bmFtaWMtJHt0aGlzLm1vZGVsLnR5cGV9JyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LiBBZGQgdGhpcyB0eXBlIHRvIGR5bmFtaWMtZm9ybS1maWVsZC5jb21wb25lbnQudHMgdG8gYWRkIHN1cHBvcnRgXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRm9ybUNvbnRyb2xDb21wb25lbnQoKTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRUeXBlO1xuXG4gICAgaWYgKGNvbXBvbmVudCAhPSBudWxsKSB7XG4gICAgICBsZXQgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRWaWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuXG4gICAgICBjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcblxuICAgICAgY29tcG9uZW50SW5zdGFuY2UuZ3JvdXAgPSB0aGlzLmdyb3VwO1xuICAgICAgY29tcG9uZW50SW5zdGFuY2UubW9kZWwgPSB0aGlzLm1vZGVsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXR1cCBhbGwgbmVjZXNzYXJ5IHN1YnNjcmlwdGlvbnMgb2YgdGhlIEZvcm1Db250cm9sXG4gICAqL1xuICBwcml2YXRlIHNldFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLm1vZGVsIGFzIER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsPHVua25vd24+O1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHRoZSB2YWx1ZSBjaGFuZ2UgaW5zaWRlIHRoZSBjb250cm9sIHRvIGNoYWduZSB0aGUgdmFsdWUgaW5zaWRlIHRoZSBtb2RlbCBhcyB3ZWxsXG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5fY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5vblZhbHVlQ2hhbmdlKHZhbHVlKSkpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBkaXNhYmxlZCBjaGFuZ2UgaW5zaWRlIHRoZSBtb2RlbCB0byBjaGFuZ2UgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBGb3JtQ29udHJvbFxuICAgIHRoaXMuX3N1YnMuYWRkKG1vZGVsLmRpc2FibGVkQ2hhbmdlLnN1YnNjcmliZSgoZGlzYWJsZWQpID0+IHRoaXMub25EaXNhYmxlZENoYW5nZShkaXNhYmxlZCkpKTtcblxuICAgIC8vIFNldHVwIHN1YnNjcmlwdGlvbnMgZm9yIGFueSBwb3NzaWJsZSByZWxhdGlvblxuICAgIGlmICh0aGlzLm1vZGVsLnJlbGF0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldFVwUmVsYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBhbGwgcmVsYXRpb25zIG9mIHRoZSBjdXJyZW50IG1vZGVsXG4gICAqL1xuICBwcml2YXRlIHNldFVwUmVsYXRpb25zKCk6IHZvaWQge1xuICAgIC8vIEFycmF5IG9mIGFsbCBGb3JtQ29udHJvbHMgdGhlIGN1cnJlbnQgbW9kZWwgaGFzIGEgcmVsYXRpb24gdG9cbiAgICBjb25zdCByZWxhdGVkRm9ybUNvbnRyb2xzOiBSZWxhdGVkRm9ybUNvbnRyb2xzID0gdGhpcy5yZWxhdGlvblNlcnZpY2UuZmluZFJlbGF0ZWRGb3JtRmllbGQodGhpcy5tb2RlbCwgdGhpcy5ncm91cCk7XG4gICAgY29uc3Qgc3VicyA9IHRoaXMucmVsYXRpb25TZXJ2aWNlLmdldFJlbGF0aW9uU3Vic2NyaXB0aW9ucyhyZWxhdGVkRm9ybUNvbnRyb2xzLCB0aGlzLm1vZGVsLCB0aGlzLl9jb250cm9sKTtcblxuICAgIC8vIEFkZCBhbGwgcmVsYXRpb25zIGFzIHN1YnNjcmlwdGlvbiB0byB0aGUgbWFpbiBTdWJzY3JpcHRpb24gb2JqZWN0XG4gICAgc3Vicy5mb3JFYWNoKChzdWIpID0+IHRoaXMuX3N1YnMuYWRkKHN1YikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMgb2YgdGhlIGNvbnRyb2wgYW5kIHVwZGF0ZXMgdGhlIHZhbHVlIGluc2lkZSB0aGUgbW9kZWxcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsICYmIHRoaXMubW9kZWwudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLm1vZGVsLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMvZGlzYWJsZWQgdGhlIGNvbnRyb2wgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlci5cbiAgICogSXMgZmlyZWQgd2hlbiBkaXNhYmxlZCBzdGF0ZSBpcyBjaGFuZ2VkIGluc2lkZSB0aGUgbW9kZWwgYW5kIHNob3VsZCBub3QgYmUgZGlyZWN0bHkgdXNlZCBvdXRzaWRlIHRoaXMgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gZGlzYWJsZWRcbiAgICovXG4gIHByaXZhdGUgb25EaXNhYmxlZENoYW5nZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGRpc2FibGVkID8gdGhpcy5fY29udHJvbC5kaXNhYmxlKCkgOiB0aGlzLl9jb250cm9sLmVuYWJsZSgpO1xuICB9XG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxuICBbbmdDbGFzc109XCJbJ2R5bmFtaWMtZm9ybS1maWVsZC1jb250YWluZXInLCAnZHluYW1pYy1mb3JtLWZpZWxkLScgKyBtb2RlbC50eXBlXVwiPlxuICA8bmctY29udGFpbmVyICNjb21wb25lbnRWaWV3Q29udGFpbmVyPjwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
@@ -0,0 +1,22 @@
1
+ import { NgIf } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import { MatButtonModule } from '@angular/material/button';
4
+ import { DynamicFormFieldBaseComponent } from '../../models/classes/dynamic-form-field-base-component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/material/button";
7
+ export class DynamicButtonComponent extends DynamicFormFieldBaseComponent {
8
+ onClick() {
9
+ this.model.onClick();
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicButtonComponent, isStandalone: true, selector: "dynamic-button", inputs: { model: "model", group: "group" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"model.raised else stroked\">\n <button mat-raised-button\n color=\"primary\"\n [id]=\"id\"\n (click)=\"onClick()\">\n <span>{{model.text}}</span>\n </button>\n</ng-container>\n\n<ng-template #stroked>\n <button mat-stroked-button\n color=\"primary\"\n [id]=\"id\"\n (click)=\"onClick()\">\n <span>{{model.text}}</span>\n </button>\n</ng-template>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicButtonComponent, decorators: [{
15
+ type: Component,
16
+ args: [{ standalone: true, imports: [NgIf, MatButtonModule], selector: 'dynamic-button', template: "<ng-container *ngIf=\"model.raised else stroked\">\n <button mat-raised-button\n color=\"primary\"\n [id]=\"id\"\n (click)=\"onClick()\">\n <span>{{model.text}}</span>\n </button>\n</ng-container>\n\n<ng-template #stroked>\n <button mat-stroked-button\n color=\"primary\"\n [id]=\"id\"\n (click)=\"onClick()\">\n <span>{{model.text}}</span>\n </button>\n</ng-template>" }]
17
+ }], propDecorators: { model: [{
18
+ type: Input
19
+ }], group: [{
20
+ type: Input
21
+ }] } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbnRyb2xzL2J1dHRvbi9keW5hbWljLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvYnV0dG9uL2R5bmFtaWMtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0RBQXdELENBQUM7OztBQVN2RyxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsNkJBQTZCO0lBSWhFLE9BQU87UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7K0dBTlUsc0JBQXNCO21HQUF0QixzQkFBc0IsNklDYm5DLDhZQWdCYyw0Q0RQRixJQUFJLDRGQUFFLGVBQWU7OzRGQUlwQixzQkFBc0I7a0JBTmxDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxZQUN0QixnQkFBZ0I7OEJBSWpCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0J1dHRvbiB9IGZyb20gJy4vZHluYW1pYy1idXR0b24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIE1hdEJ1dHRvbk1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZHluYW1pYy1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1idXR0b24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkQmFzZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY0J1dHRvbjtcbiAgQElucHV0KCkgZ3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBvbkNsaWNrKCkge1xuICAgIHRoaXMubW9kZWwub25DbGljaygpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwucmFpc2VkIGVsc2Ugc3Ryb2tlZFwiPlxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIChjbGljayk9XCJvbkNsaWNrKClcIj5cbiAgICA8c3Bhbj57e21vZGVsLnRleHR9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNzdHJva2VkPlxuICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgW2lkXT1cImlkXCJcbiAgICAoY2xpY2spPVwib25DbGljaygpXCI+XG4gICAgPHNwYW4+e3ttb2RlbC50ZXh0fX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -0,0 +1,12 @@
1
+ import { DynamicFormFieldModel } from '../../models/classes/dynamic-form-field-model';
2
+ export const DYNAMIC_FORM_FIELD_BUTTON = 'button';
3
+ export class DynamicButton extends DynamicFormFieldModel {
4
+ constructor(config) {
5
+ super(config);
6
+ this.type = DYNAMIC_FORM_FIELD_BUTTON;
7
+ this.text = config.text ?? null;
8
+ this.raised = config.raised ?? false;
9
+ this.onClick = config.onClick;
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1idXR0b24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvYnV0dG9uL2R5bmFtaWMtYnV0dG9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBR3RGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLFFBQVEsQ0FBQztBQVFsRCxNQUFNLE9BQU8sYUFBYyxTQUFRLHFCQUFxQjtJQU90RCxZQUFZLE1BQTJCO1FBQ3JDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUhBLFNBQUksR0FBRyx5QkFBeUIsQ0FBQztRQUsvQyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ2hDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ludGVyZmFjZXMvZHluYW1pYy1mb3JtLWZpZWxkLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0ZJRUxEX0JVVFRPTiA9ICdidXR0b24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNCdXR0b25Db25maWcgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkQ29uZmlnIHtcbiAgdGV4dDogc3RyaW5nO1xuICByYWlzZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrOiAoKSA9PiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljQnV0dG9uIGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZE1vZGVsIHtcbiAgcHVibGljIHRleHQ6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyByYWlzZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBvbkNsaWNrOiAoKSA9PiBhbnk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHR5cGUgPSBEWU5BTUlDX0ZPUk1fRklFTERfQlVUVE9OO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRHluYW1pY0J1dHRvbkNvbmZpZykge1xuICAgIHN1cGVyKGNvbmZpZyk7XG5cbiAgICB0aGlzLnRleHQgPSBjb25maWcudGV4dCA/PyBudWxsO1xuICAgIHRoaXMucmFpc2VkID0gY29uZmlnLnJhaXNlZCA/PyBmYWxzZTtcbiAgICB0aGlzLm9uQ2xpY2sgPSBjb25maWcub25DbGljaztcbiAgfVxufVxuIl19
@@ -0,0 +1,32 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { ReactiveFormsModule } from '@angular/forms';
3
+ import { MatCheckboxModule } from '@angular/material/checkbox';
4
+ import { DynamicFormFieldBaseComponent } from '../../models/classes/dynamic-form-field-base-component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "@angular/material/checkbox";
8
+ export class DynamicCheckboxComponent extends DynamicFormFieldBaseComponent {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.blur = new EventEmitter();
12
+ this.change = new EventEmitter();
13
+ this.focus = new EventEmitter();
14
+ }
15
+ 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: { blur: "blur", change: "change", focus: "focus" }, 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 (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\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
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicCheckboxComponent, decorators: [{
19
+ 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 (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (change)=\"onChange($event)\">\n\n <span class=\"checkbox-label\">{{model.label}}</span>\n </mat-checkbox>\n</ng-container>" }]
21
+ }], propDecorators: { model: [{
22
+ type: Input
23
+ }], group: [{
24
+ type: Input
25
+ }], blur: [{
26
+ type: Output
27
+ }], change: [{
28
+ type: Output
29
+ }], focus: [{
30
+ type: Output
31
+ }] } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jaGVja2JveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvY2hlY2tib3gvZHluYW1pYy1jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvY2hlY2tib3gvZHluYW1pYy1jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0RBQXdELENBQUM7Ozs7QUFTdkcsTUFBTSxPQUFPLHdCQUF5QixTQUFRLDZCQUE2QjtJQU4zRTs7UUFVWSxTQUFJLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0MsV0FBTSxHQUFvQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdELFVBQUssR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQUN6RDsrR0FQWSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw0TUNackMsb2NBYWUsMkNESEgsbUJBQW1CLG1sQkFBRSxpQkFBaUI7OzRGQUVyQyx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBRWhCLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDOzhCQUd4QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSwgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljQ2hlY2tib3ggfSBmcm9tICcuL2R5bmFtaWMtY2hlY2tib3gubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkeW5hbWljLWNoZWNrYm94JyxcbiAgdGVtcGxhdGVVcmw6ICdkeW5hbWljLWNoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdENoZWNrYm94TW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkQmFzZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY0NoZWNrYm94O1xuICBASW5wdXQoKSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8TWF0Q2hlY2tib3hDaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG4gIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwibW9kZWwuY2hlY2tlZFwiXG4gICAgW2Zvcm1Db250cm9sTmFtZV09XCJtb2RlbC5uYW1lXCJcbiAgICBbaW5kZXRlcm1pbmF0ZV09XCJtb2RlbC5pbmRldGVybWluYXRlXCJcbiAgICBbbGFiZWxQb3NpdGlvbl09XCJtb2RlbC5sYWJlbFBvc2l0aW9uXCJcbiAgICBbbmFtZV09XCJtb2RlbC5uYW1lXCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIj5cblxuICAgIDxzcGFuIGNsYXNzPVwiY2hlY2tib3gtbGFiZWxcIj57e21vZGVsLmxhYmVsfX08L3NwYW4+XG4gIDwvbWF0LWNoZWNrYm94PlxuPC9uZy1jb250YWluZXI+Il19
@@ -0,0 +1,21 @@
1
+ import { DynamicFormFieldValueModel } from '../../models/classes/dynamic-form-field-value-model';
2
+ export const DYNAMIC_FORM_FIELD_CHECKBOX = 'checkbox';
3
+ export class DynamicCheckbox extends DynamicFormFieldValueModel {
4
+ constructor(config) {
5
+ super(config);
6
+ this.type = DYNAMIC_FORM_FIELD_CHECKBOX;
7
+ this.value = config.value ?? false;
8
+ this.labelPosition = config.labelPosition ?? 'after';
9
+ this.indeterminate = config.indeterminate === true ? true : false;
10
+ }
11
+ get checked() {
12
+ return this.value ?? false;
13
+ }
14
+ set checked(checked) {
15
+ this.value = checked;
16
+ }
17
+ toggle() {
18
+ this.checked = !this.checked;
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jaGVja2JveC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb250cm9scy9jaGVja2JveC9keW5hbWljLWNoZWNrYm94Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0IsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5SCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxVQUFVLENBQUM7QUFPdEQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsMEJBQW1DO0lBTXRFLFlBQVksTUFBNkI7UUFDdkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSEEsU0FBSSxHQUFXLDJCQUEyQixDQUFDO1FBS3pELElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7UUFFbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsT0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7SUFDdkIsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkVmFsdWVDb25maWcsIER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLXZhbHVlLW1vZGVsJztcblxuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9GSUVMRF9DSEVDS0JPWCA9ICdjaGVja2JveCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0NoZWNrYm94Q29uZmlnIGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZFZhbHVlQ29uZmlnPGJvb2xlYW4+IHtcbiAgbGFiZWxQb3NpdGlvbj86ICdiZWZvcmUnIHwgJ2FmdGVyJztcbiAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljQ2hlY2tib3ggZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbDxib29sZWFuPiB7XG4gIHB1YmxpYyBsYWJlbFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcic7XG4gIHB1YmxpYyBpbmRldGVybWluYXRlOiBib29sZWFuO1xuXG4gIHB1YmxpYyByZWFkb25seSB0eXBlOiBzdHJpbmcgPSBEWU5BTUlDX0ZPUk1fRklFTERfQ0hFQ0tCT1g7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBEeW5hbWljQ2hlY2tib3hDb25maWcpIHtcbiAgICBzdXBlcihjb25maWcpO1xuXG4gICAgdGhpcy52YWx1ZSA9IGNvbmZpZy52YWx1ZSA/PyBmYWxzZTtcblxuICAgIHRoaXMubGFiZWxQb3NpdGlvbiA9IGNvbmZpZy5sYWJlbFBvc2l0aW9uID8/ICdhZnRlcic7XG4gICAgdGhpcy5pbmRldGVybWluYXRlID0gY29uZmlnLmluZGV0ZXJtaW5hdGUgPT09IHRydWUgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSA/PyBmYWxzZTtcbiAgfVxuXG4gIHNldCBjaGVja2VkKGNoZWNrZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnZhbHVlID0gY2hlY2tlZDtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGUoKSB7XG4gICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ export * from './button/dynamic-button.model';
2
+ export * from './checkbox/dynamic-checkbox.model';
3
+ export * from './input/dynamic-input.model';
4
+ export * from './readonly/dynamic-readonly.model';
5
+ export * from './select/dynamic-select.model';
6
+ export * from './textarea/dynamic-textarea.model';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2J1dHRvbi9keW5hbWljLWJ1dHRvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2NoZWNrYm94L2R5bmFtaWMtY2hlY2tib3gubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC9keW5hbWljLWlucHV0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC9keW5hbWljLXNlbGVjdC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3RleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEubW9kZWwnO1xuIl19
@@ -0,0 +1,51 @@
1
+ import { NgFor, NgIf } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { MatInput, MatInputModule } from '@angular/material/input';
8
+ import { DynamicFormFieldBaseComponent } from '../../models/classes/dynamic-form-field-base-component';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/forms";
11
+ import * as i2 from "@angular/material/form-field";
12
+ import * as i3 from "@angular/material/input";
13
+ import * as i4 from "@angular/material/button";
14
+ import * as i5 from "@angular/material/icon";
15
+ export class DynamicInputComponent extends DynamicFormFieldBaseComponent {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.blur = new EventEmitter();
19
+ this.change = new EventEmitter();
20
+ this.focus = new EventEmitter();
21
+ }
22
+ get valueCount() {
23
+ return this.input?.value ? this.input.value.length : 0;
24
+ }
25
+ get maxCountText() {
26
+ return `${this.valueCount} / ${this.model.maxLength}`;
27
+ }
28
+ get showClear() {
29
+ return !!this.control.value && !this.control.disabled;
30
+ }
31
+ 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: { blur: "blur", change: "change", focus: "focus" }, 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\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
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicInputComponent, decorators: [{
35
+ 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"] }]
37
+ }], propDecorators: { input: [{
38
+ type: ViewChild,
39
+ args: [MatInput, { static: true }]
40
+ }], model: [{
41
+ type: Input
42
+ }], group: [{
43
+ type: Input
44
+ }], blur: [{
45
+ type: Output
46
+ }], change: [{
47
+ type: Output
48
+ }], focus: [{
49
+ type: Output
50
+ }] } });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0RBQXdELENBQUM7Ozs7Ozs7QUFVdkcsTUFBTSxPQUFPLHFCQUFzQixTQUFRLDZCQUE2QjtJQVB4RTs7UUFhWSxTQUFJLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0MsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9DLFVBQUssR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQWF6RDtJQVhDLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3hELENBQUM7K0dBcEJVLHFCQUFxQjttR0FBckIscUJBQXFCLHlOQUNyQixRQUFRLHFGQ2xCckIsMGpDQW1DaUIsc0ZEcEJMLElBQUksNkZBQUUsS0FBSyxrSEFBRSxtQkFBbUIsNC9CQUFFLGtCQUFrQixpdUJBQUUsY0FBYywwV0FBRSxlQUFlLDJMQUFFLGFBQWE7OzRGQUVuRyxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0UsZUFBZSxjQUdiLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUM7OEJBR3hFLEtBQUs7c0JBQTNDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFNUIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dCwgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljSW5wdXQgfSBmcm9tICcuL2R5bmFtaWMtaW5wdXQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkeW5hbWljLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICdkeW5hbWljLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbJ21hdC1mb3JtLWZpZWxkIHt3aWR0aDogMTAwJTt9J10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmLCBOZ0ZvciwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkQmFzZUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoTWF0SW5wdXQsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0ITogTWF0SW5wdXQ7XG5cbiAgQElucHV0KCkgbW9kZWwhOiBEeW5hbWljSW5wdXQ7XG4gIEBJbnB1dCgpIGdyb3VwITogVW50eXBlZEZvcm1Hcm91cDtcblxuICBAT3V0cHV0KCkgYmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGdldCB2YWx1ZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXQ/LnZhbHVlID8gdGhpcy5pbnB1dC52YWx1ZS5sZW5ndGggOiAwO1xuICB9XG5cbiAgZ2V0IG1heENvdW50VGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnZhbHVlQ291bnR9IC8gJHt0aGlzLm1vZGVsLm1heExlbmd0aH1gO1xuICB9XG5cbiAgZ2V0IHNob3dDbGVhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbnRyb2wudmFsdWUgJiYgIXRoaXMuY29udHJvbC5kaXNhYmxlZDtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxuICBbaWRdPVwiaWRcIlxuICBjb2xvcj1cInByaW1hcnlcIj5cbiAgPG1hdC1sYWJlbCAqbmdJZj1cIm1vZGVsLmxhYmVsXCI+e3ttb2RlbC5sYWJlbH19PC9tYXQtbGFiZWw+XG5cbiAgPHNwYW4gbWF0VGV4dFByZWZpeFxuICAgICpuZ0lmPVwibW9kZWwucHJlZml4XCI+e3ttb2RlbC5wcmVmaXh9fTwvc3Bhbj5cblxuICA8aW5wdXQgbWF0SW5wdXRcbiAgICBbdHlwZV09XCJtb2RlbC5pbnB1dFR5cGVcIlxuICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibW9kZWwubmFtZVwiXG4gICAgW2F0dHIubWluXT1cIm1vZGVsLm1pblwiXG4gICAgW2F0dHIubWF4XT1cIm1vZGVsLm1heFwiXG4gICAgW2F0dHIubWluTGVuZ3RoXT1cIm1vZGVsLm1pbkxlbmd0aFwiXG4gICAgW2F0dHIubWF4TGVuZ3RoXT1cIm1vZGVsLm1heExlbmd0aFwiXG4gICAgW3BhdHRlcm5dPVwibW9kZWwucGF0dGVyblwiXG4gICAgW2F1dG9jb21wbGV0ZV09XCJtb2RlbC5hdXRvY29tcGxldGVcIiAvPlxuXG4gIDxidXR0b24gbWF0U3VmZml4XG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgKm5nSWY9XCJzaG93Q2xlYXJcIlxuICAgIChjbGljayk9XCJyZXNldENvbnRyb2woKVwiPlxuICAgIDxtYXQtaWNvbiBmb250SWNvbj1cImNsZWFyXCI+PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPG1hdC1oaW50ICpuZ0lmPVwibW9kZWwuaGludFwiXG4gICAgYWxpZ249XCJzdGFydFwiPnt7bW9kZWwuaGludH19PC9tYXQtaGludD5cblxuICA8bWF0LWhpbnQgKm5nSWY9XCJtb2RlbC5tYXhMZW5ndGhcIlxuICAgIGFsaWduPVwiZW5kXCI+e3ttYXhDb3VudFRleHR9fTwvbWF0LWhpbnQ+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsaWRhdG9yIG9mIG1vZGVsLnZhbGlkYXRvcnNcIlxuICAgIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImhhc0Vycm9yKHZhbGlkYXRvci5uYW1lKVwiPnt7dmFsaWRhdG9yLm1lc3NhZ2V9fTwvbWF0LWVycm9yPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWZvcm0tZmllbGQ+Il19
@@ -0,0 +1,18 @@
1
+ import { DynamicFormFieldValueModel } from '../../models/classes/dynamic-form-field-value-model';
2
+ export const DYNAMIC_FORM_FIELD_INPUT = 'input';
3
+ export class DynamicInput extends DynamicFormFieldValueModel {
4
+ constructor(config) {
5
+ super(config);
6
+ this.type = DYNAMIC_FORM_FIELD_INPUT;
7
+ this.inputType = config.inputType ?? 'text';
8
+ this.max = config.max ?? null;
9
+ this.min = config.min ?? null;
10
+ this.maxLength = typeof config.maxLength === 'number' ? config.maxLength : null;
11
+ this.minLength = typeof config.minLength === 'number' ? config.minLength : null;
12
+ this.step = config.step ?? null;
13
+ this.pattern = config.pattern ?? '';
14
+ this.autocomplete = config.autocomplete ?? 'off';
15
+ this.prefix = config.prefix ?? null;
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb250cm9scy9pbnB1dC9keW5hbWljLWlucHV0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0IsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5SCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxPQUFPLENBQUM7QUFnQmhELE1BQU0sT0FBTyxZQUFhLFNBQVEsMEJBQXlEO0lBYXpGLFlBQVksTUFBMEI7UUFDcEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSEEsU0FBSSxHQUFHLHdCQUF3QixDQUFDO1FBSzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUM7UUFDNUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxNQUFNLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hGLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxNQUFNLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hGLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDO1FBQ2pELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7SUFDdEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZFZhbHVlQ29uZmlnLCBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC12YWx1ZS1tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fRklFTERfSU5QVVQgPSAnaW5wdXQnO1xuXG5leHBvcnQgdHlwZSBIdG1sSW5wdXRUeXBlID0gJ3RleHQnIHwgJ251bWJlcicgfCAndGVsJyB8ICdlbWFpbCcgfCAncGFzc3dvcmQnIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ2NvbG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljSW5wdXRDb25maWcgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkVmFsdWVDb25maWc8c3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IG51bGw+IHtcbiAgaW5wdXRUeXBlPzogSHRtbElucHV0VHlwZTtcbiAgbWF4PzogbnVtYmVyO1xuICBtaW4/OiBudW1iZXI7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBzdGVwPzogbnVtYmVyO1xuICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xuICBhdXRvY29tcGxldGU/OiAnb24nIHwgJ29mZic7XG4gIHByZWZpeD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNJbnB1dCBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsPHN0cmluZyB8IG51bWJlciB8IERhdGUgfCBudWxsPiB7XG4gIHB1YmxpYyBpbnB1dFR5cGU6IEh0bWxJbnB1dFR5cGU7XG4gIHB1YmxpYyBtYXg6IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBtaW46IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBtYXhMZW5ndGg6IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBtaW5MZW5ndGg6IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBzdGVwOiBudW1iZXIgfCBudWxsO1xuICBwdWJsaWMgcGF0dGVybjogc3RyaW5nIHwgUmVnRXhwO1xuICBwdWJsaWMgYXV0b2NvbXBsZXRlOiAnb24nIHwgJ29mZic7XG4gIHB1YmxpYyBwcmVmaXg6IHN0cmluZyB8IG51bGw7XG5cbiAgcHVibGljIHJlYWRvbmx5IHR5cGUgPSBEWU5BTUlDX0ZPUk1fRklFTERfSU5QVVQ7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBEeW5hbWljSW5wdXRDb25maWcpIHtcbiAgICBzdXBlcihjb25maWcpO1xuXG4gICAgdGhpcy5pbnB1dFR5cGUgPSBjb25maWcuaW5wdXRUeXBlID8/ICd0ZXh0JztcbiAgICB0aGlzLm1heCA9IGNvbmZpZy5tYXggPz8gbnVsbDtcbiAgICB0aGlzLm1pbiA9IGNvbmZpZy5taW4gPz8gbnVsbDtcbiAgICB0aGlzLm1heExlbmd0aCA9IHR5cGVvZiBjb25maWcubWF4TGVuZ3RoID09PSAnbnVtYmVyJyA/IGNvbmZpZy5tYXhMZW5ndGggOiBudWxsO1xuICAgIHRoaXMubWluTGVuZ3RoID0gdHlwZW9mIGNvbmZpZy5taW5MZW5ndGggPT09ICdudW1iZXInID8gY29uZmlnLm1pbkxlbmd0aCA6IG51bGw7XG4gICAgdGhpcy5zdGVwID0gY29uZmlnLnN0ZXAgPz8gbnVsbDtcbiAgICB0aGlzLnBhdHRlcm4gPSBjb25maWcucGF0dGVybiA/PyAnJztcbiAgICB0aGlzLmF1dG9jb21wbGV0ZSA9IGNvbmZpZy5hdXRvY29tcGxldGUgPz8gJ29mZic7XG4gICAgdGhpcy5wcmVmaXggPSBjb25maWcucHJlZml4ID8/IG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { ReactiveFormsModule } from '@angular/forms';
3
+ import { DynamicFormFieldBaseComponent } from '../../models/classes/dynamic-form-field-base-component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ export class DynamicReadonlyComponent extends DynamicFormFieldBaseComponent {
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicReadonlyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicReadonlyComponent, isStandalone: true, selector: "dynamic-readonly", inputs: { model: "model", group: "group" }, usesInheritance: true, ngImport: i0, template: "<div class=\"dynamic-form-field-readonly\"\n [formGroup]=\"group\"\n [id]=\"id\">\n <div class=\"label\">{{model.label}}</div>\n <span>{{model.value}}</span>\n</div>", styles: [".dynamic-form-field-readonly{width:100%;margin:8px 0;color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.dynamic-form-field-readonly .label{font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);margin-bottom:8px}\n"], dependencies: [{ 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"] }] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicReadonlyComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ standalone: true, imports: [ReactiveFormsModule], selector: 'dynamic-readonly', template: "<div class=\"dynamic-form-field-readonly\"\n [formGroup]=\"group\"\n [id]=\"id\">\n <div class=\"label\">{{model.label}}</div>\n <span>{{model.value}}</span>\n</div>", styles: [".dynamic-form-field-readonly{width:100%;margin:8px 0;color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.dynamic-form-field-readonly .label{font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);margin-bottom:8px}\n"] }]
13
+ }], propDecorators: { model: [{
14
+ type: Input
15
+ }], group: [{
16
+ type: Input
17
+ }] } });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0RBQXdELENBQUM7OztBQVV2RyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsNkJBQTZCOytHQUE5RCx3QkFBd0I7bUdBQXhCLHdCQUF3QiwrSUNackMsMktBS00sNFZERU0sbUJBQW1COzs0RkFLbEIsd0JBQXdCO2tCQVBwQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLG1CQUFtQixDQUFDLFlBQ3BCLGtCQUFrQjs4QkFLbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljUmVhZG9ubHkgfSBmcm9tICcuL2R5bmFtaWMtcmVhZG9ubHkubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2R5bmFtaWMtcmVhZG9ubHknLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtcmVhZG9ubHkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljUmVhZG9ubHlDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkQmFzZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY1JlYWRvbmx5O1xuICBASW5wdXQoKSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHluYW1pYy1mb3JtLWZpZWxkLXJlYWRvbmx5XCJcbiAgW2Zvcm1Hcm91cF09XCJncm91cFwiXG4gIFtpZF09XCJpZFwiPlxuICA8ZGl2IGNsYXNzPVwibGFiZWxcIj57e21vZGVsLmxhYmVsfX08L2Rpdj5cbiAgPHNwYW4+e3ttb2RlbC52YWx1ZX19PC9zcGFuPlxuPC9kaXY+Il19
@@ -0,0 +1,9 @@
1
+ import { DynamicFormFieldValueModel } from '../../models/classes/dynamic-form-field-value-model';
2
+ export const DYNAMIC_FORM_FIELD_READONLY = 'readonly';
3
+ export class DynamicReadonly extends DynamicFormFieldValueModel {
4
+ constructor(config) {
5
+ super(config);
6
+ this.type = DYNAMIC_FORM_FIELD_READONLY;
7
+ }
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yZWFkb25seS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb250cm9scy9yZWFkb25seS9keW5hbWljLXJlYWRvbmx5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0IsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5SCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxVQUFVLENBQUM7QUFLdEQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsMEJBQWdEO0lBR25GLFlBQVksTUFBNkI7UUFDdkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSEEsU0FBSSxHQUFHLDJCQUEyQixDQUFDO0lBSW5ELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRWYWx1ZUNvbmZpZywgRHluYW1pY0Zvcm1GaWVsZFZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtdmFsdWUtbW9kZWwnO1xuXG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0ZJRUxEX1JFQURPTkxZID0gJ3JlYWRvbmx5JztcbmV4cG9ydCB0eXBlIER5bmFtaWNSZWFkb25seVZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDtcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljUmVhZG9ubHlDb25maWcgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkVmFsdWVDb25maWc8RHluYW1pY1JlYWRvbmx5VmFsdWU+IHt9XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljUmVhZG9ubHkgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbDxEeW5hbWljUmVhZG9ubHlWYWx1ZT4ge1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9IERZTkFNSUNfRk9STV9GSUVMRF9SRUFET05MWTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IER5bmFtaWNSZWFkb25seUNvbmZpZykge1xuICAgIHN1cGVyKGNvbmZpZyk7XG4gIH1cbn1cbiJdfQ==