superlikers-dynamic-forms 0.0.0-watch

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 (44) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/components/base-control/base-control.component.mjs +86 -0
  3. package/esm2022/lib/components/checkbox-field/checkbox-field.component.mjs +16 -0
  4. package/esm2022/lib/components/checkbox-group-field/checkbox-group-field.component.mjs +33 -0
  5. package/esm2022/lib/components/errors/errors.component.mjs +45 -0
  6. package/esm2022/lib/components/group-field/group-field.component.mjs +22 -0
  7. package/esm2022/lib/components/help-text/help-text.component.mjs +21 -0
  8. package/esm2022/lib/components/input-field/input-field.component.mjs +16 -0
  9. package/esm2022/lib/components/radio-field/radio-field.component.mjs +16 -0
  10. package/esm2022/lib/components/select-field/select-field.component.mjs +26 -0
  11. package/esm2022/lib/directives/helpText/help-text.directive.mjs +29 -0
  12. package/esm2022/lib/directives/validator-array-message/validator-array-message.directive.mjs +49 -0
  13. package/esm2022/lib/directives/validator-message/validator-message.directive.mjs +49 -0
  14. package/esm2022/lib/models/forms.model.mjs +10 -0
  15. package/esm2022/lib/pipes/control-injector.pipe.mjs +29 -0
  16. package/esm2022/lib/services/control-resolver/control-resolver.service.mjs +42 -0
  17. package/esm2022/lib/utils/control-data.token.mjs +3 -0
  18. package/esm2022/lib/utils/validation-error-messages.token.mjs +23 -0
  19. package/esm2022/public-api.mjs +20 -0
  20. package/esm2022/superlikers-dynamic-forms.mjs +5 -0
  21. package/fesm2022/superlikers-dynamic-forms-select-field.component-DuEQPRWC.mjs +28 -0
  22. package/fesm2022/superlikers-dynamic-forms-select-field.component-DuEQPRWC.mjs.map +1 -0
  23. package/fesm2022/superlikers-dynamic-forms.mjs +459 -0
  24. package/fesm2022/superlikers-dynamic-forms.mjs.map +1 -0
  25. package/index.d.ts +5 -0
  26. package/lib/components/base-control/base-control.component.d.ts +26 -0
  27. package/lib/components/checkbox-field/checkbox-field.component.d.ts +6 -0
  28. package/lib/components/checkbox-group-field/checkbox-group-field.component.d.ts +9 -0
  29. package/lib/components/errors/errors.component.d.ts +13 -0
  30. package/lib/components/group-field/group-field.component.d.ts +11 -0
  31. package/lib/components/help-text/help-text.component.d.ts +6 -0
  32. package/lib/components/input-field/input-field.component.d.ts +6 -0
  33. package/lib/components/radio-field/radio-field.component.d.ts +6 -0
  34. package/lib/components/select-field/select-field.component.d.ts +9 -0
  35. package/lib/directives/helpText/help-text.directive.d.ts +11 -0
  36. package/lib/directives/validator-array-message/validator-array-message.directive.d.ts +15 -0
  37. package/lib/directives/validator-message/validator-message.directive.d.ts +17 -0
  38. package/lib/models/forms.model.d.ts +41 -0
  39. package/lib/pipes/control-injector.pipe.d.ts +10 -0
  40. package/lib/services/control-resolver/control-resolver.service.d.ts +12 -0
  41. package/lib/utils/control-data.token.d.ts +9 -0
  42. package/lib/utils/validation-error-messages.token.d.ts +10 -0
  43. package/package.json +25 -0
  44. package/public-api.d.ts +16 -0
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # NgxDynamicForms
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.0.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project ngx-dynamic-forms` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ngx-dynamic-forms`.
8
+ > Note: Don't forget to add `--project ngx-dynamic-forms` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build ngx-dynamic-forms` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build ngx-dynamic-forms`, go to the dist folder `cd dist/ngx-dynamic-forms` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test ngx-dynamic-forms` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
@@ -0,0 +1,86 @@
1
+ import { Directive, HostBinding, inject } from '@angular/core';
2
+ import { ControlContainer, FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
3
+ import { AsyncPipe, CommonModule } from '@angular/common';
4
+ import { of } from 'rxjs';
5
+ import { CONTROL_DATA } from '../../utils/control-data.token';
6
+ import { ValidatorMessageDirective } from '../../directives/validator-message/validator-message.directive';
7
+ import { HelpTextDirective } from '../../directives/helpText/help-text.directive';
8
+ import { ValidatorArrayMessageDirective } from '../../directives/validator-array-message/validator-array-message.directive';
9
+ import * as i0 from "@angular/core";
10
+ export const sharedControlDeps = [CommonModule, ReactiveFormsModule, ValidatorMessageDirective, HelpTextDirective, ValidatorArrayMessageDirective, AsyncPipe];
11
+ export const controlProvider = {
12
+ provide: ControlContainer,
13
+ useFactory: () => inject(ControlContainer, { skipSelf: true })
14
+ };
15
+ export class BaseControlComponent {
16
+ constructor() {
17
+ this.hostClass = '';
18
+ this.control = inject(CONTROL_DATA);
19
+ this.formControl = new FormControl(this.control.control.value, this.resolveValidators(this.control.control));
20
+ this.id = this.control.control.name + this.control.control.id + (this.control.index ?? '');
21
+ this.parentGroupDir = inject(ControlContainer);
22
+ }
23
+ get parentFormGroup() {
24
+ return this.parentGroupDir.control;
25
+ }
26
+ ngOnInit() {
27
+ this.initialize();
28
+ }
29
+ ngOnDestroy() {
30
+ this.destroy();
31
+ }
32
+ initialize() {
33
+ if (this.control.formGroup) {
34
+ this.control.formGroup.addControl(this.control.control.name, this.formControl);
35
+ }
36
+ else {
37
+ this.parentFormGroup.addControl(this.control.control.name, this.formControl);
38
+ }
39
+ this.hostClass = `field wrapper-${this.control.control.name}`;
40
+ }
41
+ destroy() {
42
+ if (this.control.formGroup)
43
+ return;
44
+ else
45
+ this.parentFormGroup.removeControl(this.control.control.name);
46
+ }
47
+ resolveValidators({ validators = {} }) {
48
+ const validatorsKeys = Object.keys(validators);
49
+ return validatorsKeys.map(key => {
50
+ const value = validators[key];
51
+ if (key === 'required') {
52
+ return Validators.required;
53
+ }
54
+ if (key === 'email') {
55
+ return Validators.email;
56
+ }
57
+ if (key === 'requiredTrue') {
58
+ return Validators.requiredTrue;
59
+ }
60
+ if (key === 'minLength' && typeof value === 'number') {
61
+ return Validators.minLength(value);
62
+ }
63
+ if (key === 'pattern' && typeof value === 'string') {
64
+ return Validators.pattern(value);
65
+ }
66
+ return Validators.nullValidator;
67
+ });
68
+ }
69
+ getOptions() {
70
+ if (this.control.control.options) {
71
+ return of(this.control.control.options);
72
+ }
73
+ if (!this.control.control.asyncOptions)
74
+ return of([]);
75
+ return this.control.control.asyncOptions(this.parentFormGroup);
76
+ }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BaseControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
78
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: BaseControlComponent, host: { properties: { "class": "this.hostClass" } }, ngImport: i0 }); }
79
+ }
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BaseControlComponent, decorators: [{
81
+ type: Directive
82
+ }], propDecorators: { hostClass: [{
83
+ type: HostBinding,
84
+ args: ['class']
85
+ }] } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2R5bmFtaWMtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtY29udHJvbC9iYXNlLWNvbnRyb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFxQyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDakcsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxXQUFXLEVBQWEsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDM0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRXpCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUc3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQTtBQUMxRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQTtBQUNqRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQTs7QUFFM0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUUsaUJBQWlCLEVBQUUsOEJBQThCLEVBQUUsU0FBUyxDQUFDLENBQUE7QUFFN0osTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFtQjtJQUM3QyxPQUFPLEVBQUUsZ0JBQWdCO0lBQ3pCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7Q0FDL0QsQ0FBQTtBQUdELE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFd0IsY0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUVwQyxZQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBRTlCLGdCQUFXLEdBQW9CLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ3hILE9BQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUE7UUFFN0UsbUJBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtLQW9FbEQ7SUFsRUMsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFvQixDQUFBO0lBQ2pELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2hCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ2hGLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM5RSxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDL0QsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztZQUFFLE9BQU07O1lBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFFLFVBQVUsR0FBRyxFQUFFLEVBQVc7UUFDNUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQW1DLENBQUE7UUFFaEYsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUU3QixJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFBO1lBQzVCLENBQUM7WUFFRCxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFBO1lBQ3pCLENBQUM7WUFFRCxJQUFJLEdBQUcsS0FBSyxjQUFjLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFBO1lBQ2hDLENBQUM7WUFFRCxJQUFJLEdBQUcsS0FBSyxXQUFXLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNwQyxDQUFDO1lBRUQsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDbEMsQ0FBQztZQUVELE9BQU8sVUFBVSxDQUFDLGFBQWEsQ0FBQTtRQUNqQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN6QyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVk7WUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUVyRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDaEUsQ0FBQzs4R0EzRVUsb0JBQW9CO2tHQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRGhDLFNBQVM7OEJBRWMsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgT25EZXN0cm95LCBPbkluaXQsIFN0YXRpY1Byb3ZpZGVyLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBBc3luY1BpcGUsIENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgQ09OVFJPTF9EQVRBIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29udHJvbC1kYXRhLnRva2VuJ1xuaW1wb3J0IHsgQ29udHJvbCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3Jtcy5tb2RlbCdcblxuaW1wb3J0IHsgVmFsaWRhdG9yTWVzc2FnZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdmFsaWRhdG9yLW1lc3NhZ2UvdmFsaWRhdG9yLW1lc3NhZ2UuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgSGVscFRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2hlbHBUZXh0L2hlbHAtdGV4dC5kaXJlY3RpdmUnXG5pbXBvcnQgeyBWYWxpZGF0b3JBcnJheU1lc3NhZ2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3ZhbGlkYXRvci1hcnJheS1tZXNzYWdlL3ZhbGlkYXRvci1hcnJheS1tZXNzYWdlLmRpcmVjdGl2ZSdcblxuZXhwb3J0IGNvbnN0IHNoYXJlZENvbnRyb2xEZXBzID0gW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yTWVzc2FnZURpcmVjdGl2ZSwgSGVscFRleHREaXJlY3RpdmUsIFZhbGlkYXRvckFycmF5TWVzc2FnZURpcmVjdGl2ZSwgQXN5bmNQaXBlXVxuXG5leHBvcnQgY29uc3QgY29udHJvbFByb3ZpZGVyOiBTdGF0aWNQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcbiAgdXNlRmFjdG9yeTogKCkgPT4gaW5qZWN0KENvbnRyb2xDb250YWluZXIsIHsgc2tpcFNlbGY6IHRydWUgfSlcbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgQmFzZUNvbnRyb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBob3N0Q2xhc3MgPSAnJ1xuXG4gIGNvbnRyb2wgPSBpbmplY3QoQ09OVFJPTF9EQVRBKVxuXG4gIGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5jb250cm9sLmNvbnRyb2wudmFsdWUsIHRoaXMucmVzb2x2ZVZhbGlkYXRvcnModGhpcy5jb250cm9sLmNvbnRyb2wpKVxuICBpZCA9IHRoaXMuY29udHJvbC5jb250cm9sLm5hbWUgKyB0aGlzLmNvbnRyb2wuY29udHJvbC5pZCArICh0aGlzLmNvbnRyb2wuaW5kZXggPz8gJycpXG5cbiAgcHJpdmF0ZSBwYXJlbnRHcm91cERpciA9IGluamVjdChDb250cm9sQ29udGFpbmVyKVxuXG4gIGdldCBwYXJlbnRGb3JtR3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50R3JvdXBEaXIuY29udHJvbCBhcyBGb3JtR3JvdXBcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3koKVxuICB9XG5cbiAgaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAodGhpcy5jb250cm9sLmZvcm1Hcm91cCkge1xuICAgICAgdGhpcy5jb250cm9sLmZvcm1Hcm91cC5hZGRDb250cm9sKHRoaXMuY29udHJvbC5jb250cm9sLm5hbWUsIHRoaXMuZm9ybUNvbnRyb2wpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFyZW50Rm9ybUdyb3VwLmFkZENvbnRyb2wodGhpcy5jb250cm9sLmNvbnRyb2wubmFtZSwgdGhpcy5mb3JtQ29udHJvbClcbiAgICB9XG5cbiAgICB0aGlzLmhvc3RDbGFzcyA9IGBmaWVsZCB3cmFwcGVyLSR7dGhpcy5jb250cm9sLmNvbnRyb2wubmFtZX1gXG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmNvbnRyb2wuZm9ybUdyb3VwKSByZXR1cm5cbiAgICBlbHNlIHRoaXMucGFyZW50Rm9ybUdyb3VwLnJlbW92ZUNvbnRyb2wodGhpcy5jb250cm9sLmNvbnRyb2wubmFtZSlcbiAgfVxuXG4gIHJlc29sdmVWYWxpZGF0b3JzKHsgdmFsaWRhdG9ycyA9IHt9IH06IENvbnRyb2wpIHtcbiAgICBjb25zdCB2YWxpZGF0b3JzS2V5cyA9IE9iamVjdC5rZXlzKHZhbGlkYXRvcnMpIGFzIEFycmF5PGtleW9mIHR5cGVvZiB2YWxpZGF0b3JzPlxuXG4gICAgcmV0dXJuIHZhbGlkYXRvcnNLZXlzLm1hcChrZXkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWxpZGF0b3JzW2tleV1cblxuICAgICAgaWYgKGtleSA9PT0gJ3JlcXVpcmVkJykge1xuICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgfVxuXG4gICAgICBpZiAoa2V5ID09PSAnZW1haWwnKSB7XG4gICAgICAgIHJldHVybiBWYWxpZGF0b3JzLmVtYWlsXG4gICAgICB9XG5cbiAgICAgIGlmIChrZXkgPT09ICdyZXF1aXJlZFRydWUnKSB7XG4gICAgICAgIHJldHVybiBWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoa2V5ID09PSAnbWluTGVuZ3RoJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWx1ZSlcbiAgICAgIH1cblxuICAgICAgaWYgKGtleSA9PT0gJ3BhdHRlcm4nICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucGF0dGVybih2YWx1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFZhbGlkYXRvcnMubnVsbFZhbGlkYXRvclxuICAgIH0pXG4gIH1cblxuICBnZXRPcHRpb25zKCkge1xuICAgIGlmICh0aGlzLmNvbnRyb2wuY29udHJvbC5vcHRpb25zKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5jb250cm9sLmNvbnRyb2wub3B0aW9ucylcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29udHJvbC5jb250cm9sLmFzeW5jT3B0aW9ucykgcmV0dXJuIG9mKFtdKVxuXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbC5jb250cm9sLmFzeW5jT3B0aW9ucyh0aGlzLnBhcmVudEZvcm1Hcm91cClcbiAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { Component } from '@angular/core';
2
+ import { BaseControlComponent, controlProvider, sharedControlDeps } from '../base-control/base-control.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "../../directives/validator-message/validator-message.directive";
7
+ import * as i4 from "../../directives/helpText/help-text.directive";
8
+ export class CheckboxFieldComponent extends BaseControlComponent {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: CheckboxFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.6", type: CheckboxFieldComponent, isStandalone: true, selector: "app-checkbox-field", usesInheritance: true, ngImport: i0, template: "<div>\n <input\n type=\"checkbox\"\n [id]=\"id\"\n [formControlName]=\"control.control.name\" />\n <label\n [for]=\"id\"\n [innerHTML]=\"control.control.label\">\n </label>\n\n <div\n appHelpText\n [message]=\"control.control.helpText ?? ''\"\n appValidatorMessage\n ngDefaultControl\n [formControlName]=\"control.control.name\"></div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: i1.CommonModule }, { kind: "ngmodule", type: i2.ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.ValidatorMessageDirective, selector: "[appValidatorMessage]" }, { kind: "directive", type: i4.HelpTextDirective, selector: "[appHelpText]", inputs: ["message"] }], viewProviders: [controlProvider] }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: CheckboxFieldComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'app-checkbox-field', standalone: true, imports: [...sharedControlDeps], viewProviders: [controlProvider], template: "<div>\n <input\n type=\"checkbox\"\n [id]=\"id\"\n [formControlName]=\"control.control.name\" />\n <label\n [for]=\"id\"\n [innerHTML]=\"control.control.label\">\n </label>\n\n <div\n appHelpText\n [message]=\"control.control.helpText ?? ''\"\n appValidatorMessage\n ngDefaultControl\n [formControlName]=\"control.control.name\"></div>\n</div>\n" }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvY2hlY2tib3gtZmllbGQvY2hlY2tib3gtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvY2hlY2tib3gtZmllbGQvY2hlY2tib3gtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7Ozs7OztBQVNqSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsb0JBQW9COzhHQUFuRCxzQkFBc0I7a0dBQXRCLHNCQUFzQixxR0NWbkMsNlhBaUJBLDRnQ0RWaUIsQ0FBQyxlQUFlLENBQUM7OzJGQUdyQixzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLEdBQUcsaUJBQWlCLENBQUMsaUJBQ2hCLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEJhc2VDb250cm9sQ29tcG9uZW50LCBjb250cm9sUHJvdmlkZXIsIHNoYXJlZENvbnRyb2xEZXBzIH0gZnJvbSAnLi4vYmFzZS1jb250cm9sL2Jhc2UtY29udHJvbC5jb21wb25lbnQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaGVja2JveC1maWVsZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFsuLi5zaGFyZWRDb250cm9sRGVwc10sXG4gIHZpZXdQcm92aWRlcnM6IFtjb250cm9sUHJvdmlkZXJdLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3gtZmllbGQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94RmllbGRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29udHJvbENvbXBvbmVudCB7fVxuIiwiPGRpdj5cbiAgPGlucHV0XG4gICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5jb250cm9sLm5hbWVcIiAvPlxuICA8bGFiZWxcbiAgICBbZm9yXT1cImlkXCJcbiAgICBbaW5uZXJIVE1MXT1cImNvbnRyb2wuY29udHJvbC5sYWJlbFwiPlxuICA8L2xhYmVsPlxuXG4gIDxkaXZcbiAgICBhcHBIZWxwVGV4dFxuICAgIFttZXNzYWdlXT1cImNvbnRyb2wuY29udHJvbC5oZWxwVGV4dCA/PyAnJ1wiXG4gICAgYXBwVmFsaWRhdG9yTWVzc2FnZVxuICAgIG5nRGVmYXVsdENvbnRyb2xcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuY29udHJvbC5uYW1lXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,33 @@
1
+ import { Component } from '@angular/core';
2
+ import { BaseControlComponent, controlProvider, sharedControlDeps } from '../base-control/base-control.component';
3
+ import { FormArray, FormControl } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "../../directives/helpText/help-text.directive";
8
+ import * as i4 from "../../directives/validator-array-message/validator-array-message.directive";
9
+ export class CheckboxGroupFieldComponent extends BaseControlComponent {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.formControl = new FormArray([], this.resolveValidators(this.control.control));
13
+ }
14
+ change(event) {
15
+ const element = event.target;
16
+ const value = element.value;
17
+ const index = this.formControl.value.indexOf(value);
18
+ if (index === -1) {
19
+ const fc = new FormControl(value);
20
+ this.formControl.push(fc);
21
+ }
22
+ else {
23
+ this.formControl.removeAt(index);
24
+ }
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: CheckboxGroupFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: CheckboxGroupFieldComponent, isStandalone: true, selector: "app-checkbox-group-field", usesInheritance: true, ngImport: i0, template: "<label for=\"\">\n {{ control.control.label }}\n</label>\n\n<div\n [formArrayName]=\"control.control.name\"\n appHelpText\n [message]=\"control.control.helpText ?? ''\"\n appValidatorArrayMessage>\n @for (option of getOptions() | async; track option.value; let index = $index) {\n <div>\n <input\n type=\"checkbox\"\n (change)=\"change($event)\"\n [value]=\"option.value\"\n [id]=\"id + index\" />\n <label [for]=\"id + index\">\n {{ option.label }}\n </label>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: i1.CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: i2.ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i3.HelpTextDirective, selector: "[appHelpText]", inputs: ["message"] }, { kind: "directive", type: i4.ValidatorArrayMessageDirective, selector: "[appValidatorArrayMessage]" }], viewProviders: [controlProvider] }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: CheckboxGroupFieldComponent, decorators: [{
30
+ type: Component,
31
+ args: [{ selector: 'app-checkbox-group-field', standalone: true, imports: [...sharedControlDeps], viewProviders: [controlProvider], template: "<label for=\"\">\n {{ control.control.label }}\n</label>\n\n<div\n [formArrayName]=\"control.control.name\"\n appHelpText\n [message]=\"control.control.helpText ?? ''\"\n appValidatorArrayMessage>\n @for (option of getOptions() | async; track option.value; let index = $index) {\n <div>\n <input\n type=\"checkbox\"\n (change)=\"change($event)\"\n [value]=\"option.value\"\n [id]=\"id + index\" />\n <label [for]=\"id + index\">\n {{ option.label }}\n </label>\n </div>\n }\n</div>\n" }]
32
+ }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvY2hlY2tib3gtZ3JvdXAtZmllbGQvY2hlY2tib3gtZ3JvdXAtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvY2hlY2tib3gtZ3JvdXAtZmllbGQvY2hlY2tib3gtZ3JvdXAtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDakgsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7Ozs7O0FBU3ZELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxvQkFBb0I7SUFQckU7O1FBUVcsZ0JBQVcsR0FBRyxJQUFJLFNBQVMsQ0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtLQWNwRztJQVpDLE1BQU0sQ0FBQyxLQUFZO1FBQ2pCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFBO1FBQ2hELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFjLENBQUE7UUFFcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ25ELElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakIsTUFBTSxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNsQyxDQUFDO0lBQ0gsQ0FBQzs4R0FkVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiwyR0NYeEMsb2lCQXNCQSxxb0JEZGlCLENBQUMsZUFBZSxDQUFDOzsyRkFHckIsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1AsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLGlCQUNoQixDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCYXNlQ29udHJvbENvbXBvbmVudCwgY29udHJvbFByb3ZpZGVyLCBzaGFyZWRDb250cm9sRGVwcyB9IGZyb20gJy4uL2Jhc2UtY29udHJvbC9iYXNlLWNvbnRyb2wuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2hlY2tib3gtZ3JvdXAtZmllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbLi4uc2hhcmVkQ29udHJvbERlcHNdLFxuICB2aWV3UHJvdmlkZXJzOiBbY29udHJvbFByb3ZpZGVyXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LWdyb3VwLWZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveEdyb3VwRmllbGRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29udHJvbENvbXBvbmVudCB7XG4gIG92ZXJyaWRlIGZvcm1Db250cm9sID0gbmV3IEZvcm1BcnJheTxGb3JtQ29udHJvbD4oW10sIHRoaXMucmVzb2x2ZVZhbGlkYXRvcnModGhpcy5jb250cm9sLmNvbnRyb2wpKVxuXG4gIGNoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnRcbiAgICBjb25zdCB2YWx1ZSA9IGVsZW1lbnQudmFsdWUgYXMgbmV2ZXJcblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZS5pbmRleE9mKHZhbHVlKVxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIGNvbnN0IGZjID0gbmV3IEZvcm1Db250cm9sKHZhbHVlKVxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5wdXNoKGZjKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnJlbW92ZUF0KGluZGV4KVxuICAgIH1cbiAgfVxufVxuIiwiPGxhYmVsIGZvcj1cIlwiPlxuICB7eyBjb250cm9sLmNvbnRyb2wubGFiZWwgfX1cbjwvbGFiZWw+XG5cbjxkaXZcbiAgW2Zvcm1BcnJheU5hbWVdPVwiY29udHJvbC5jb250cm9sLm5hbWVcIlxuICBhcHBIZWxwVGV4dFxuICBbbWVzc2FnZV09XCJjb250cm9sLmNvbnRyb2wuaGVscFRleHQgPz8gJydcIlxuICBhcHBWYWxpZGF0b3JBcnJheU1lc3NhZ2U+XG4gIEBmb3IgKG9wdGlvbiBvZiBnZXRPcHRpb25zKCkgfCBhc3luYzsgdHJhY2sgb3B0aW9uLnZhbHVlOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICA8ZGl2PlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIlxuICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgW2lkXT1cImlkICsgaW5kZXhcIiAvPlxuICAgICAgPGxhYmVsIFtmb3JdPVwiaWQgKyBpbmRleFwiPlxuICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
@@ -0,0 +1,45 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { KeyValuePipe } from '@angular/common';
3
+ import { ChangeDetectionStrategy, Component, HostBinding, Input, inject } from '@angular/core';
4
+ import { VALIDATION_ERROR_MESSAGES } from '../../utils/validation-error-messages.token';
5
+ import * as i0 from "@angular/core";
6
+ export class ErrorsComponent {
7
+ constructor() {
8
+ this.errors = null;
9
+ this.hostClass = '';
10
+ this.errorsMap = inject(VALIDATION_ERROR_MESSAGES);
11
+ }
12
+ getError(error) {
13
+ if (!this.errorsMap[error.key]) {
14
+ console.warn(`missing message for ${error.key}`);
15
+ return;
16
+ }
17
+ return this.errorsMap[error.key](error.value);
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ErrorsComponent, isStandalone: true, selector: "app-errors", inputs: { errors: "errors" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: `
21
+ @for (error of errors | keyvalue; track error.key) {
22
+ <div class="error-text">{{ getError(error) }}</div>
23
+ }
24
+ `, isInline: true, dependencies: [{ kind: "pipe", type: KeyValuePipe, name: "keyvalue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ErrorsComponent, decorators: [{
27
+ type: Component,
28
+ args: [{
29
+ selector: 'app-errors',
30
+ standalone: true,
31
+ imports: [KeyValuePipe],
32
+ changeDetection: ChangeDetectionStrategy.OnPush,
33
+ template: `
34
+ @for (error of errors | keyvalue; track error.key) {
35
+ <div class="error-text">{{ getError(error) }}</div>
36
+ }
37
+ `
38
+ }]
39
+ }], propDecorators: { errors: [{
40
+ type: Input
41
+ }], hostClass: [{
42
+ type: HostBinding,
43
+ args: ['class']
44
+ }] } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2R5bmFtaWMtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9ycy9lcnJvcnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQVksWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUc5RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQTs7QUFhdkYsTUFBTSxPQUFPLGVBQWU7SUFYNUI7UUFZVyxXQUFNLEdBQXdDLElBQUksQ0FBQTtRQUVyQyxjQUFTLEdBQUcsRUFBRSxDQUFBO1FBRTFCLGNBQVMsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQTtLQVV4RDtJQVJDLFFBQVEsQ0FBQyxLQUE0QjtRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUNoRCxPQUFNO1FBQ1IsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9DLENBQUM7OEdBZFUsZUFBZTtrR0FBZixlQUFlLHlKQU5oQjs7OztHQUlULHVEQU5TLFlBQVk7OzJGQVFYLGVBQWU7a0JBWDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUU7Ozs7R0FJVDtpQkFDRjs4QkFFVSxNQUFNO3NCQUFkLEtBQUs7Z0JBRWdCLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEtleVZhbHVlLCBLZXlWYWx1ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5cbmltcG9ydCB7IFZBTElEQVRJT05fRVJST1JfTUVTU0FHRVMgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0aW9uLWVycm9yLW1lc3NhZ2VzLnRva2VuJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZXJyb3JzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0tleVZhbHVlUGlwZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIEBmb3IgKGVycm9yIG9mIGVycm9ycyB8IGtleXZhbHVlOyB0cmFjayBlcnJvci5rZXkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci10ZXh0XCI+e3sgZ2V0RXJyb3IoZXJyb3IpIH19PC9kaXY+XG4gICAgfVxuICBgXG59KVxuZXhwb3J0IGNsYXNzIEVycm9yc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsXG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGhvc3RDbGFzcyA9ICcnXG5cbiAgcHJvdGVjdGVkIGVycm9yc01hcCA9IGluamVjdChWQUxJREFUSU9OX0VSUk9SX01FU1NBR0VTKVxuXG4gIGdldEVycm9yKGVycm9yOiBLZXlWYWx1ZTxzdHJpbmcsIGFueT4pIHtcbiAgICBpZiAoIXRoaXMuZXJyb3JzTWFwW2Vycm9yLmtleV0pIHtcbiAgICAgIGNvbnNvbGUud2FybihgbWlzc2luZyBtZXNzYWdlIGZvciAke2Vycm9yLmtleX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzTWFwW2Vycm9yLmtleV0oZXJyb3IudmFsdWUpXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { BaseControlComponent, controlProvider, sharedControlDeps } from '../base-control/base-control.component';
3
+ import { FormGroup } from '@angular/forms';
4
+ import { ControlResolver } from '../../services/control-resolver/control-resolver.service';
5
+ import { ControlInjector } from '../../pipes/control-injector.pipe';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/forms";
9
+ export class GroupFieldComponent extends BaseControlComponent {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.controlResolver = inject(ControlResolver);
13
+ this.formControl = new FormGroup({});
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: GroupFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: GroupFieldComponent, isStandalone: true, selector: "app-group-field", usesInheritance: true, ngImport: i0, template: "<div [formGroupName]=\"control.control.name\">\n @for (control of control.control.controls; track control.name) {\n <ng-container\n [ngComponentOutlet]=\"controlResolver.resolve(control, parentFormGroup) | async\"\n [ngComponentOutletInjector]=\"control.name | controlInjector: control\">\n </ng-container>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: i1.CommonModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: i2.ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "pipe", type: ControlInjector, name: "controlInjector" }], viewProviders: [controlProvider] }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: GroupFieldComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'app-group-field', standalone: true, imports: [...sharedControlDeps, ControlInjector], viewProviders: [controlProvider], template: "<div [formGroupName]=\"control.control.name\">\n @for (control of control.control.controls; track control.name) {\n <ng-container\n [ngComponentOutlet]=\"controlResolver.resolve(control, parentFormGroup) | async\"\n [ngComponentOutletInjector]=\"control.name | controlInjector: control\">\n </ng-container>\n }\n</div>\n" }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZ3JvdXAtZmllbGQvZ3JvdXAtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZ3JvdXAtZmllbGQvZ3JvdXAtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQ2pILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMERBQTBELENBQUE7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOzs7O0FBU25FLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxvQkFBb0I7SUFQN0Q7O1FBUUUsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFaEMsZ0JBQVcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtLQUN6Qzs4R0FKWSxtQkFBbUI7a0dBQW5CLG1CQUFtQixrR0NiaEMsb1ZBUUEsd3NCRENrQyxlQUFlLDZDQUNoQyxDQUFDLGVBQWUsQ0FBQzs7MkZBR3JCLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxHQUFHLGlCQUFpQixFQUFFLGVBQWUsQ0FBQyxpQkFDakMsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEJhc2VDb250cm9sQ29tcG9uZW50LCBjb250cm9sUHJvdmlkZXIsIHNoYXJlZENvbnRyb2xEZXBzIH0gZnJvbSAnLi4vYmFzZS1jb250cm9sL2Jhc2UtY29udHJvbC5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IENvbnRyb2xSZXNvbHZlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnRyb2wtcmVzb2x2ZXIvY29udHJvbC1yZXNvbHZlci5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ29udHJvbEluamVjdG9yIH0gZnJvbSAnLi4vLi4vcGlwZXMvY29udHJvbC1pbmplY3Rvci5waXBlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZ3JvdXAtZmllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbLi4uc2hhcmVkQ29udHJvbERlcHMsIENvbnRyb2xJbmplY3Rvcl0sXG4gIHZpZXdQcm92aWRlcnM6IFtjb250cm9sUHJvdmlkZXJdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXAtZmllbGQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEdyb3VwRmllbGRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29udHJvbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnRyb2xSZXNvbHZlciA9IGluamVjdChDb250cm9sUmVzb2x2ZXIpXG5cbiAgb3ZlcnJpZGUgZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUdyb3VwKHt9KVxufVxuIiwiPGRpdiBbZm9ybUdyb3VwTmFtZV09XCJjb250cm9sLmNvbnRyb2wubmFtZVwiPlxuICBAZm9yIChjb250cm9sIG9mIGNvbnRyb2wuY29udHJvbC5jb250cm9sczsgdHJhY2sgY29udHJvbC5uYW1lKSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nQ29tcG9uZW50T3V0bGV0XT1cImNvbnRyb2xSZXNvbHZlci5yZXNvbHZlKGNvbnRyb2wsIHBhcmVudEZvcm1Hcm91cCkgfCBhc3luY1wiXG4gICAgICBbbmdDb21wb25lbnRPdXRsZXRJbmplY3Rvcl09XCJjb250cm9sLm5hbWUgfCBjb250cm9sSW5qZWN0b3I6IGNvbnRyb2xcIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class HelpTextComponent {
4
+ constructor() {
5
+ this.message = '';
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HelpTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.6", type: HelpTextComponent, isStandalone: true, selector: "app-help-text", inputs: { message: "message" }, ngImport: i0, template: '<p class="help-text">{{ message }}</p>', isInline: true }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HelpTextComponent, decorators: [{
11
+ type: Component,
12
+ args: [{
13
+ selector: 'app-help-text',
14
+ standalone: true,
15
+ imports: [],
16
+ template: '<p class="help-text">{{ message }}</p>'
17
+ }]
18
+ }], propDecorators: { message: [{
19
+ type: Input
20
+ }] } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2R5bmFtaWMtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2hlbHAtdGV4dC9oZWxwLXRleHQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBOztBQVFoRCxNQUFNLE9BQU8saUJBQWlCO0lBTjlCO1FBT1csWUFBTyxHQUFHLEVBQUUsQ0FBQTtLQUN0Qjs4R0FGWSxpQkFBaUI7a0dBQWpCLGlCQUFpQix5R0FGbEIsd0NBQXdDOzsyRkFFdkMsaUJBQWlCO2tCQU43QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLHdDQUF3QztpQkFDbkQ7OEJBRVUsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1oZWxwLXRleHQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbiAgdGVtcGxhdGU6ICc8cCBjbGFzcz1cImhlbHAtdGV4dFwiPnt7IG1lc3NhZ2UgfX08L3A+J1xufSlcbmV4cG9ydCBjbGFzcyBIZWxwVGV4dENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1lc3NhZ2UgPSAnJ1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { Component } from '@angular/core';
2
+ import { BaseControlComponent, controlProvider, sharedControlDeps } from '../base-control/base-control.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "../../directives/validator-message/validator-message.directive";
7
+ import * as i4 from "../../directives/helpText/help-text.directive";
8
+ export class InputFieldComponent extends BaseControlComponent {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InputFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.6", type: InputFieldComponent, isStandalone: true, selector: "app-input-field", usesInheritance: true, ngImport: i0, template: "<label [for]=\"id\">\n {{ control.control.label }}\n</label>\n<input\n appHelpText\n [message]=\"control.control.helpText ?? ''\"\n appValidatorMessage\n [type]=\"control.control.type\"\n [formControlName]=\"control.control.name\"\n [checked]=\"control.control.value\"\n [id]=\"id\" />\n", dependencies: [{ kind: "ngmodule", type: i1.CommonModule }, { kind: "ngmodule", type: i2.ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.ValidatorMessageDirective, selector: "[appValidatorMessage]" }, { kind: "directive", type: i4.HelpTextDirective, selector: "[appHelpText]", inputs: ["message"] }], viewProviders: [controlProvider] }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InputFieldComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'app-input-field', standalone: true, imports: [...sharedControlDeps], viewProviders: [controlProvider], template: "<label [for]=\"id\">\n {{ control.control.label }}\n</label>\n<input\n appHelpText\n [message]=\"control.control.helpText ?? ''\"\n appValidatorMessage\n [type]=\"control.control.type\"\n [formControlName]=\"control.control.name\"\n [checked]=\"control.control.value\"\n [id]=\"id\" />\n" }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQtZmllbGQvaW5wdXQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQtZmllbGQvaW5wdXQtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7Ozs7OztBQVNqSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsb0JBQW9COzhHQUFoRCxtQkFBbUI7a0dBQW5CLG1CQUFtQixrR0NWaEMseVNBV0EsMjFCREppQixDQUFDLGVBQWUsQ0FBQzs7MkZBR3JCLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLGlCQUNoQixDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCYXNlQ29udHJvbENvbXBvbmVudCwgY29udHJvbFByb3ZpZGVyLCBzaGFyZWRDb250cm9sRGVwcyB9IGZyb20gJy4uL2Jhc2UtY29udHJvbC9iYXNlLWNvbnRyb2wuY29tcG9uZW50J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtZmllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbLi4uc2hhcmVkQ29udHJvbERlcHNdLFxuICB2aWV3UHJvdmlkZXJzOiBbY29udHJvbFByb3ZpZGVyXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBJbnB1dEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbnRyb2xDb21wb25lbnQge31cbiIsIjxsYWJlbCBbZm9yXT1cImlkXCI+XG4gIHt7IGNvbnRyb2wuY29udHJvbC5sYWJlbCB9fVxuPC9sYWJlbD5cbjxpbnB1dFxuICBhcHBIZWxwVGV4dFxuICBbbWVzc2FnZV09XCJjb250cm9sLmNvbnRyb2wuaGVscFRleHQgPz8gJydcIlxuICBhcHBWYWxpZGF0b3JNZXNzYWdlXG4gIFt0eXBlXT1cImNvbnRyb2wuY29udHJvbC50eXBlXCJcbiAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmNvbnRyb2wubmFtZVwiXG4gIFtjaGVja2VkXT1cImNvbnRyb2wuY29udHJvbC52YWx1ZVwiXG4gIFtpZF09XCJpZFwiIC8+XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { Component } from '@angular/core';
2
+ import { BaseControlComponent, controlProvider, sharedControlDeps } from '../base-control/base-control.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "../../directives/validator-message/validator-message.directive";
7
+ import * as i4 from "../../directives/helpText/help-text.directive";
8
+ export class RadioFieldComponent extends BaseControlComponent {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RadioFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: RadioFieldComponent, isStandalone: true, selector: "app-radio-field", usesInheritance: true, ngImport: i0, template: "<label for=\"\">\n {{ control.control.label }}\n</label>\n\n<div>\n @for (option of getOptions() | async; track option.value; let i = $index) {\n <div>\n <input\n type=\"radio\"\n [formControlName]=\"control.control.name\"\n [value]=\"option.value\"\n [id]=\"id + i\" />\n <label [for]=\"id + i\">\n {{ option.label }}\n </label>\n </div>\n }\n</div>\n\n<div\n appHelpText\n [message]=\"control.control.helpText ?? ''\"\n appValidatorMessage\n [formControlName]=\"control.control.name\"\n ngDefaultControl></div>\n", dependencies: [{ kind: "ngmodule", type: i1.CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: i2.ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.ValidatorMessageDirective, selector: "[appValidatorMessage]" }, { kind: "directive", type: i4.HelpTextDirective, selector: "[appHelpText]", inputs: ["message"] }], viewProviders: [controlProvider] }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RadioFieldComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'app-radio-field', standalone: true, imports: [...sharedControlDeps], viewProviders: [controlProvider], template: "<label for=\"\">\n {{ control.control.label }}\n</label>\n\n<div>\n @for (option of getOptions() | async; track option.value; let i = $index) {\n <div>\n <input\n type=\"radio\"\n [formControlName]=\"control.control.name\"\n [value]=\"option.value\"\n [id]=\"id + i\" />\n <label [for]=\"id + i\">\n {{ option.label }}\n </label>\n </div>\n }\n</div>\n\n<div\n appHelpText\n [message]=\"control.control.helpText ?? ''\"\n appValidatorMessage\n [formControlName]=\"control.control.name\"\n ngDefaultControl></div>\n" }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvcmFkaW8tZmllbGQvcmFkaW8tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvcmFkaW8tZmllbGQvcmFkaW8tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7Ozs7OztBQVNqSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsb0JBQW9COzhHQUFoRCxtQkFBbUI7a0dBQW5CLG1CQUFtQixrR0NWaEMsb2tCQXlCQSxtbUNEbEJpQixDQUFDLGVBQWUsQ0FBQzs7MkZBR3JCLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLGlCQUNoQixDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCYXNlQ29udHJvbENvbXBvbmVudCwgY29udHJvbFByb3ZpZGVyLCBzaGFyZWRDb250cm9sRGVwcyB9IGZyb20gJy4uL2Jhc2UtY29udHJvbC9iYXNlLWNvbnRyb2wuY29tcG9uZW50J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcmFkaW8tZmllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbLi4uc2hhcmVkQ29udHJvbERlcHNdLFxuICB2aWV3UHJvdmlkZXJzOiBbY29udHJvbFByb3ZpZGVyXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLWZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0ZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbnRyb2xDb21wb25lbnQge31cbiIsIjxsYWJlbCBmb3I9XCJcIj5cbiAge3sgY29udHJvbC5jb250cm9sLmxhYmVsIH19XG48L2xhYmVsPlxuXG48ZGl2PlxuICBAZm9yIChvcHRpb24gb2YgZ2V0T3B0aW9ucygpIHwgYXN5bmM7IHRyYWNrIG9wdGlvbi52YWx1ZTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8ZGl2PlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5jb250cm9sLm5hbWVcIlxuICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgW2lkXT1cImlkICsgaVwiIC8+XG4gICAgICA8bGFiZWwgW2Zvcl09XCJpZCArIGlcIj5cbiAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cblxuPGRpdlxuICBhcHBIZWxwVGV4dFxuICBbbWVzc2FnZV09XCJjb250cm9sLmNvbnRyb2wuaGVscFRleHQgPz8gJydcIlxuICBhcHBWYWxpZGF0b3JNZXNzYWdlXG4gIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5jb250cm9sLm5hbWVcIlxuICBuZ0RlZmF1bHRDb250cm9sPjwvZGl2PlxuIl19
@@ -0,0 +1,26 @@
1
+ import { Component } from '@angular/core';
2
+ import { BaseControlComponent, controlProvider, sharedControlDeps } from '../base-control/base-control.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "../../directives/validator-message/validator-message.directive";
7
+ import * as i4 from "../../directives/helpText/help-text.directive";
8
+ export class SelectFieldComponent extends BaseControlComponent {
9
+ ngOnInit() {
10
+ this.initialize();
11
+ this.setSelectedOption();
12
+ }
13
+ setSelectedOption() {
14
+ const selectedOption = this.control.control.options?.find(option => option.selected);
15
+ if (!selectedOption)
16
+ return;
17
+ this.formControl.setValue(selectedOption.value);
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: SelectFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: SelectFieldComponent, isStandalone: true, selector: "app-radio-field", usesInheritance: true, ngImport: i0, template: "<label for=\"\">{{ control.control.label }}</label>\n<select\n [formControlName]=\"control.control.name\"\n [id]=\"id\">\n @for (option of getOptions() | async; track option.value; let i = $index) {\n <option\n [value]=\"option.value\"\n [disabled]=\"option.disabled\">\n {{ option.label }}\n </option>\n }\n</select>\n\n<div\n appHelpText\n [message]=\"control.control.helpText ?? ''\"\n appValidatorMessage\n [formControlName]=\"control.control.name\"\n ngDefaultControl></div>\n", dependencies: [{ kind: "ngmodule", type: i1.CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: i2.ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.ValidatorMessageDirective, selector: "[appValidatorMessage]" }, { kind: "directive", type: i4.HelpTextDirective, selector: "[appHelpText]", inputs: ["message"] }], viewProviders: [controlProvider] }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: SelectFieldComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: 'app-radio-field', standalone: true, imports: [...sharedControlDeps], viewProviders: [controlProvider], template: "<label for=\"\">{{ control.control.label }}</label>\n<select\n [formControlName]=\"control.control.name\"\n [id]=\"id\">\n @for (option of getOptions() | async; track option.value; let i = $index) {\n <option\n [value]=\"option.value\"\n [disabled]=\"option.disabled\">\n {{ option.label }}\n </option>\n }\n</select>\n\n<div\n appHelpText\n [message]=\"control.control.helpText ?? ''\"\n appValidatorMessage\n [formControlName]=\"control.control.name\"\n ngDefaultControl></div>\n" }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2R5bmFtaWMtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1maWVsZC9zZWxlY3QtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LWZpZWxkL3NlbGVjdC1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFBO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTs7Ozs7O0FBU2pILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFDbkQsUUFBUTtRQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUVqQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNwRixJQUFJLENBQUMsY0FBYztZQUFFLE9BQU07UUFFM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2pELENBQUM7OEdBWlUsb0JBQW9CO2tHQUFwQixvQkFBb0Isa0dDVmpDLGlnQkFtQkEsMnlDRFppQixDQUFDLGVBQWUsQ0FBQzs7MkZBR3JCLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLGlCQUNoQixDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEJhc2VDb250cm9sQ29tcG9uZW50LCBjb250cm9sUHJvdmlkZXIsIHNoYXJlZENvbnRyb2xEZXBzIH0gZnJvbSAnLi4vYmFzZS1jb250cm9sL2Jhc2UtY29udHJvbC5jb21wb25lbnQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yYWRpby1maWVsZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFsuLi5zaGFyZWRDb250cm9sRGVwc10sXG4gIHZpZXdQcm92aWRlcnM6IFtjb250cm9sUHJvdmlkZXJdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RGaWVsZENvbXBvbmVudCBleHRlbmRzIEJhc2VDb250cm9sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplKClcblxuICAgIHRoaXMuc2V0U2VsZWN0ZWRPcHRpb24oKVxuICB9XG5cbiAgc2V0U2VsZWN0ZWRPcHRpb24oKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLmNvbnRyb2wuY29udHJvbC5vcHRpb25zPy5maW5kKG9wdGlvbiA9PiBvcHRpb24uc2VsZWN0ZWQpXG4gICAgaWYgKCFzZWxlY3RlZE9wdGlvbikgcmV0dXJuXG5cbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkT3B0aW9uLnZhbHVlKVxuICB9XG59XG4iLCI8bGFiZWwgZm9yPVwiXCI+e3sgY29udHJvbC5jb250cm9sLmxhYmVsIH19PC9sYWJlbD5cbjxzZWxlY3RcbiAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmNvbnRyb2wubmFtZVwiXG4gIFtpZF09XCJpZFwiPlxuICBAZm9yIChvcHRpb24gb2YgZ2V0T3B0aW9ucygpIHwgYXN5bmM7IHRyYWNrIG9wdGlvbi52YWx1ZTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8b3B0aW9uXG4gICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIj5cbiAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgIDwvb3B0aW9uPlxuICB9XG48L3NlbGVjdD5cblxuPGRpdlxuICBhcHBIZWxwVGV4dFxuICBbbWVzc2FnZV09XCJjb250cm9sLmNvbnRyb2wuaGVscFRleHQgPz8gJydcIlxuICBhcHBWYWxpZGF0b3JNZXNzYWdlXG4gIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5jb250cm9sLm5hbWVcIlxuICBuZ0RlZmF1bHRDb250cm9sPjwvZGl2PlxuIl19
@@ -0,0 +1,29 @@
1
+ import { Directive, ElementRef, Input, ViewContainerRef, inject } from '@angular/core';
2
+ import { HelpTextComponent } from '../../components/help-text/help-text.component';
3
+ import * as i0 from "@angular/core";
4
+ export class HelpTextDirective {
5
+ constructor() {
6
+ this.message = '';
7
+ this.elementRef = inject(ElementRef);
8
+ this.vcr = inject(ViewContainerRef);
9
+ this.componentRef = null;
10
+ }
11
+ ngOnInit() {
12
+ if (!this.message)
13
+ return;
14
+ this.componentRef = this.vcr.createComponent(HelpTextComponent);
15
+ this.componentRef.setInput('message', this.message);
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HelpTextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
18
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: HelpTextDirective, isStandalone: true, selector: "[appHelpText]", inputs: { message: "message" }, ngImport: i0 }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HelpTextDirective, decorators: [{
21
+ type: Directive,
22
+ args: [{
23
+ selector: '[appHelpText]',
24
+ standalone: true
25
+ }]
26
+ }], propDecorators: { message: [{
27
+ type: Input
28
+ }] } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC10ZXh0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2R5bmFtaWMtZm9ybXMvc3JjL2xpYi9kaXJlY3RpdmVzL2hlbHBUZXh0L2hlbHAtdGV4dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDNUcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUE7O0FBTWxGLE1BQU0sT0FBTyxpQkFBaUI7SUFKOUI7UUFLVyxZQUFPLEdBQUcsRUFBRSxDQUFBO1FBRXJCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDdkIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzlCLGlCQUFZLEdBQTJDLElBQUksQ0FBQTtLQVFwRTtJQU5DLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFNO1FBRXpCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3JELENBQUM7OEdBWlUsaUJBQWlCO2tHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFFVSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEhlbHBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9oZWxwLXRleHQvaGVscC10ZXh0LmNvbXBvbmVudCdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcEhlbHBUZXh0XScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSGVscFRleHREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBtZXNzYWdlID0gJydcblxuICBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpXG4gIHByaXZhdGUgdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8SGVscFRleHRDb21wb25lbnQ+IHwgbnVsbCA9IG51bGxcblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubWVzc2FnZSkgcmV0dXJuXG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmNyLmNyZWF0ZUNvbXBvbmVudChIZWxwVGV4dENvbXBvbmVudClcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnbWVzc2FnZScsIHRoaXMubWVzc2FnZSlcbiAgfVxufVxuIl19
@@ -0,0 +1,49 @@
1
+ import { Directive, ElementRef, ViewContainerRef, inject } from '@angular/core';
2
+ import { ControlContainer } from '@angular/forms';
3
+ import { EMPTY, fromEvent, iif, merge, startWith } from 'rxjs';
4
+ import { ErrorsComponent } from '../../components/errors/errors.component';
5
+ import * as i0 from "@angular/core";
6
+ export class ValidatorArrayMessageDirective {
7
+ constructor() {
8
+ this.parentContainer = inject(ControlContainer);
9
+ this.vcr = inject(ViewContainerRef);
10
+ this.elementRef = inject(ElementRef);
11
+ this.componentRef = null;
12
+ }
13
+ get form() {
14
+ return this.parentContainer?.formDirective;
15
+ }
16
+ ngOnInit() {
17
+ const formArray = this.parentContainer.control;
18
+ if (!formArray)
19
+ return;
20
+ this.controlSubscription = merge(formArray.statusChanges, fromEvent(this.elementRef.nativeElement, 'blur'), iif(() => !!this.form, this.form.ngSubmit, EMPTY))
21
+ .pipe(startWith(formArray.status))
22
+ .subscribe(() => {
23
+ if (formArray.errors && this.form?.submitted) {
24
+ if (this.componentRef)
25
+ return;
26
+ this.componentRef = this.vcr.createComponent(ErrorsComponent);
27
+ this.componentRef.changeDetectorRef.markForCheck();
28
+ this.componentRef.setInput('errors', formArray.errors);
29
+ }
30
+ else {
31
+ this.componentRef?.destroy();
32
+ this.componentRef = null;
33
+ }
34
+ });
35
+ }
36
+ ngOnDestroy() {
37
+ this.controlSubscription?.unsubscribe();
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ValidatorArrayMessageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
40
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: ValidatorArrayMessageDirective, isStandalone: true, selector: "[appValidatorArrayMessage]", ngImport: i0 }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ValidatorArrayMessageDirective, decorators: [{
43
+ type: Directive,
44
+ args: [{
45
+ selector: '[appValidatorArrayMessage]',
46
+ standalone: true
47
+ }]
48
+ }] });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLWFycmF5LW1lc3NhZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2RpcmVjdGl2ZXMvdmFsaWRhdG9yLWFycmF5LW1lc3NhZ2UvdmFsaWRhdG9yLWFycmF5LW1lc3NhZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBcUIsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2hILE9BQU8sRUFBRSxnQkFBZ0IsRUFBOEIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsS0FBSyxFQUFnQixTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFBOztBQU0xRSxNQUFNLE9BQU8sOEJBQThCO0lBSjNDO1FBT1Usb0JBQWUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUMxQyxRQUFHLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDdEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUV2QixpQkFBWSxHQUF5QyxJQUFJLENBQUE7S0FrQ2xFO0lBaENDLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxhQUFtRCxDQUFBO0lBQ2xGLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUE7UUFFOUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFNO1FBRXRCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQzlCLFNBQVMsQ0FBQyxhQUFhLEVBQ3ZCLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsRUFDaEQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUNuRDthQUNFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxJQUFJLENBQUMsWUFBWTtvQkFBRSxPQUFNO2dCQUU3QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFBO2dCQUM3RCxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFBO2dCQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3hELENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFBO2dCQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsQ0FBQTtJQUN6QyxDQUFDOzhHQXhDVSw4QkFBOEI7a0dBQTlCLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFKMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgRU1QVFksIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50LCBpaWYsIG1lcmdlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgRXJyb3JzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9lcnJvcnMvZXJyb3JzLmNvbXBvbmVudCdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcFZhbGlkYXRvckFycmF5TWVzc2FnZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFZhbGlkYXRvckFycmF5TWVzc2FnZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBjb250cm9sU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uXG5cbiAgcHJpdmF0ZSBwYXJlbnRDb250YWluZXIgPSBpbmplY3QoQ29udHJvbENvbnRhaW5lcilcbiAgcHJpdmF0ZSB2Y3IgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZilcbiAgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKVxuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8RXJyb3JzQ29tcG9uZW50PiB8IG51bGwgPSBudWxsXG5cbiAgZ2V0IGZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50Q29udGFpbmVyPy5mb3JtRGlyZWN0aXZlIGFzIE5nRm9ybSB8IEZvcm1Hcm91cERpcmVjdGl2ZSB8IG51bGxcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMucGFyZW50Q29udGFpbmVyLmNvbnRyb2xcblxuICAgIGlmICghZm9ybUFycmF5KSByZXR1cm5cblxuICAgIHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbiA9IG1lcmdlKFxuICAgICAgZm9ybUFycmF5LnN0YXR1c0NoYW5nZXMsXG4gICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdibHVyJyksXG4gICAgICBpaWYoKCkgPT4gISF0aGlzLmZvcm0sIHRoaXMuZm9ybSEubmdTdWJtaXQsIEVNUFRZKVxuICAgIClcbiAgICAgIC5waXBlKHN0YXJ0V2l0aChmb3JtQXJyYXkuc3RhdHVzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoZm9ybUFycmF5LmVycm9ycyAmJiB0aGlzLmZvcm0/LnN1Ym1pdHRlZCkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikgcmV0dXJuXG5cbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmNyLmNyZWF0ZUNvbXBvbmVudChFcnJvcnNDb21wb25lbnQpXG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnZXJyb3JzJywgZm9ybUFycmF5LmVycm9ycylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZj8uZGVzdHJveSgpXG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKClcbiAgfVxufVxuIl19
@@ -0,0 +1,49 @@
1
+ import { Directive, ElementRef, ViewContainerRef, inject } from '@angular/core';
2
+ import { NgControl, ControlContainer } from '@angular/forms';
3
+ import { merge, fromEvent, iif, EMPTY, startWith } from 'rxjs';
4
+ import { ErrorsComponent } from '../../components/errors/errors.component';
5
+ import * as i0 from "@angular/core";
6
+ export class ValidatorMessageDirective {
7
+ constructor() {
8
+ this.ngControl = inject(NgControl, { self: true });
9
+ this.elementRef = inject(ElementRef);
10
+ this.componentRef = null;
11
+ this.parentContainer = inject(ControlContainer, { optional: true });
12
+ this.vcr = inject(ViewContainerRef);
13
+ }
14
+ get form() {
15
+ return this.parentContainer?.formDirective;
16
+ }
17
+ ngOnInit() {
18
+ if (!this.ngControl.control)
19
+ return;
20
+ this.controlSubscription = merge(this.ngControl.control.statusChanges, fromEvent(this.elementRef.nativeElement, 'blur'), iif(() => !!this.form, this.form.ngSubmit, EMPTY))
21
+ .pipe(startWith(this.ngControl.control.status))
22
+ .subscribe(() => {
23
+ if (this.ngControl.errors && this.form?.submitted) {
24
+ if (this.componentRef)
25
+ return;
26
+ this.componentRef = this.vcr.createComponent(ErrorsComponent);
27
+ this.componentRef.changeDetectorRef.markForCheck();
28
+ this.componentRef.setInput('errors', this.ngControl.errors);
29
+ }
30
+ else {
31
+ this.componentRef?.destroy();
32
+ this.componentRef = null;
33
+ }
34
+ });
35
+ }
36
+ ngOnDestroy() {
37
+ this.controlSubscription.unsubscribe();
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ValidatorMessageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
40
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: ValidatorMessageDirective, isStandalone: true, selector: "[appValidatorMessage]", ngImport: i0 }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ValidatorMessageDirective, decorators: [{
43
+ type: Directive,
44
+ args: [{
45
+ selector: '[appValidatorMessage]',
46
+ standalone: true
47
+ }]
48
+ }] });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLW1lc3NhZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL2RpcmVjdGl2ZXMvdmFsaWRhdG9yLW1lc3NhZ2UvdmFsaWRhdG9yLW1lc3NhZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBcUIsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2hILE9BQU8sRUFBRSxTQUFTLEVBQThCLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEYsT0FBTyxFQUFnQixLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRTVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQTs7QUFNMUUsTUFBTSxPQUFPLHlCQUF5QjtJQUp0QztRQUtFLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFDN0MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUV2QixpQkFBWSxHQUF5QyxJQUFJLENBQUE7UUFNekQsb0JBQWUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUM5RCxRQUFHLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7S0E4QnZDO0lBbkNDLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxhQUFtRCxDQUFBO0lBQ2xGLENBQUM7SUFPRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztZQUFFLE9BQU07UUFFbkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUNwQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLEVBQ2hELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FDbkQ7YUFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzlDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7Z0JBQ2xELElBQUksSUFBSSxDQUFDLFlBQVk7b0JBQUUsT0FBTTtnQkFFN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQTtnQkFDN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtnQkFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDN0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUE7Z0JBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1lBQzFCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3hDLENBQUM7OEdBeENVLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5nQ29udHJvbCwgTmdGb3JtLCBGb3JtR3JvdXBEaXJlY3RpdmUsIENvbnRyb2xDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgbWVyZ2UsIGZyb21FdmVudCwgaWlmLCBFTVBUWSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgRXJyb3JzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9lcnJvcnMvZXJyb3JzLmNvbXBvbmVudCdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcFZhbGlkYXRvck1lc3NhZ2VdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JNZXNzYWdlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7IHNlbGY6IHRydWUgfSlcbiAgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKVxuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8RXJyb3JzQ29tcG9uZW50PiB8IG51bGwgPSBudWxsXG5cbiAgZ2V0IGZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50Q29udGFpbmVyPy5mb3JtRGlyZWN0aXZlIGFzIE5nRm9ybSB8IEZvcm1Hcm91cERpcmVjdGl2ZSB8IG51bGxcbiAgfVxuXG4gIHByaXZhdGUgcGFyZW50Q29udGFpbmVyID0gaW5qZWN0KENvbnRyb2xDb250YWluZXIsIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgcHJpdmF0ZSB2Y3IgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZilcblxuICBjb250cm9sU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLm5nQ29udHJvbC5jb250cm9sKSByZXR1cm5cblxuICAgIHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbiA9IG1lcmdlKFxuICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zdGF0dXNDaGFuZ2VzLFxuICAgICAgZnJvbUV2ZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYmx1cicpLFxuICAgICAgaWlmKCgpID0+ICEhdGhpcy5mb3JtLCB0aGlzLmZvcm0hLm5nU3VibWl0LCBFTVBUWSlcbiAgICApXG4gICAgICAucGlwZShzdGFydFdpdGgodGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zdGF0dXMpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbC5lcnJvcnMgJiYgdGhpcy5mb3JtPy5zdWJtaXR0ZWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHJldHVyblxuXG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZjci5jcmVhdGVDb21wb25lbnQoRXJyb3JzQ29tcG9uZW50KVxuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2Vycm9ycycsIHRoaXMubmdDb250cm9sLmVycm9ycylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZj8uZGVzdHJveSgpXG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ export var ControlTypeValues;
2
+ (function (ControlTypeValues) {
3
+ ControlTypeValues["INPUT"] = "input";
4
+ ControlTypeValues["GROUP"] = "group";
5
+ ControlTypeValues["CHECKBOX"] = "checkbox";
6
+ ControlTypeValues["CHECKBOX_GROUP"] = "checkbox-group";
7
+ ControlTypeValues["RADIO"] = "radio";
8
+ ControlTypeValues["SELECT"] = "select";
9
+ })(ControlTypeValues || (ControlTypeValues = {}));
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9keW5hbWljLWZvcm1zL3NyYy9saWIvbW9kZWxzL2Zvcm1zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sQ0FBTixJQUFZLGlCQU9YO0FBUEQsV0FBWSxpQkFBaUI7SUFDM0Isb0NBQWUsQ0FBQTtJQUNmLG9DQUFlLENBQUE7SUFDZiwwQ0FBcUIsQ0FBQTtJQUNyQixzREFBaUMsQ0FBQTtJQUNqQyxvQ0FBZSxDQUFBO0lBQ2Ysc0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVBXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFPNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5cbmV4cG9ydCB0eXBlIENvbnRyb2xUeXBlID0gJ2lucHV0JyB8ICdncm91cCcgfCAnY2hlY2tib3gnIHwgJ2NoZWNrYm94LWdyb3VwJyB8ICdyYWRpbycgfCAnc2VsZWN0J1xuXG5leHBvcnQgZW51bSBDb250cm9sVHlwZVZhbHVlcyB7XG4gIElOUFVUID0gJ2lucHV0JyxcbiAgR1JPVVAgPSAnZ3JvdXAnLFxuICBDSEVDS0JPWCA9ICdjaGVja2JveCcsXG4gIENIRUNLQk9YX0dST1VQID0gJ2NoZWNrYm94LWdyb3VwJyxcbiAgUkFESU8gPSAncmFkaW8nLFxuICBTRUxFQ1QgPSAnc2VsZWN0J1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmdcbiAgdmFsdWU6IHVua25vd25cbiAgc2VsZWN0ZWQ/OiBib29sZWFuXG4gIGRpc2FibGVkPzogYm9vbGVhblxufVxuXG50eXBlIEN1c3RvbVZhbGlkYXRvcnMgPSBvYmplY3RcbnR5cGUgVmFsaWRhdG9yc0tleXMgPSBrZXlvZiBPbWl0PHR5cGVvZiBWYWxpZGF0b3JzICYgQ3VzdG9tVmFsaWRhdG9ycywgJ3Byb3RvdHlwZScgfCAnY29tcG9zZScgfCAnY29tcG9zZUFzeW5jJz5cblxuZXhwb3J0IGludGVyZmFjZSBDb250cm9sIHtcbiAgaWQ6IG51bWJlclxuICBsYWJlbDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBjb250cm9sVHlwZTogQ29udHJvbFR5cGVcbiAgaGVscFRleHQ/OiBzdHJpbmdcbiAgdHlwZT86IHN0cmluZ1xuICB2YWx1ZT86IHVua25vd25cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIGFzeW5jT3B0aW9ucz86IChmb3JtOiBGb3JtR3JvdXApID0+IE9ic2VydmFibGU8T3B0aW9uW10+XG4gIG9wdGlvbnM/OiBPcHRpb25bXVxuICBjb250cm9scz86IENvbnRyb2xbXVxuICB2aXNpYmxlPzogKGZvcm06IEZvcm1Hcm91cCkgPT4gYm9vbGVhblxuICB2YWxpZGF0b3JzPzoge1xuICAgIFtrZXkgaW4gVmFsaWRhdG9yc0tleXNdPzogdW5rbm93blxuICB9XG59XG5cbmV4cG9ydCB0eXBlIENvbnRyb2xNYXAgPSB7XG4gIFtUIGluIENvbnRyb2xbJ2NvbnRyb2xUeXBlJ11dOiAoKSA9PiBQcm9taXNlPFR5cGU8dW5rbm93bj4+XG59XG4iXX0=
@@ -0,0 +1,29 @@
1
+ import { Injector, Pipe, inject } from '@angular/core';
2
+ import { CONTROL_DATA } from '../utils/control-data.token';
3
+ import * as i0 from "@angular/core";
4
+ export class ControlInjector {
5
+ constructor() {
6
+ this.injector = inject(Injector);
7
+ }
8
+ transform(name, control, formGroup, index) {
9
+ return Injector.create({
10
+ parent: this.injector,
11
+ providers: [
12
+ {
13
+ provide: CONTROL_DATA,
14
+ useValue: { key: name, control, formGroup, index }
15
+ }
16
+ ]
17
+ });
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ControlInjector, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
20
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: ControlInjector, isStandalone: true, name: "controlInjector" }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ControlInjector, decorators: [{
23
+ type: Pipe,
24
+ args: [{
25
+ name: 'controlInjector',
26
+ standalone: true
27
+ }]
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC1pbmplY3Rvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3Jtcy9zcmMvbGliL3BpcGVzL2NvbnRyb2wtaW5qZWN0b3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXJFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTs7QUFPMUQsTUFBTSxPQUFPLGVBQWU7SUFKNUI7UUFLRSxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0tBYTVCO0lBWEMsU0FBUyxDQUFDLElBQVksRUFBRSxPQUFnQixFQUFFLFNBQXFCLEVBQUUsS0FBYztRQUM3RSxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsWUFBWTtvQkFDckIsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTtpQkFDbkQ7YUFDRjtTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7OEdBYlUsZUFBZTs0R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUozQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29udHJvbCB9IGZyb20gJy4uL21vZGVscy9mb3Jtcy5tb2RlbCdcbmltcG9ydCB7IENPTlRST0xfREFUQSB9IGZyb20gJy4uL3V0aWxzL2NvbnRyb2wtZGF0YS50b2tlbidcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdjb250cm9sSW5qZWN0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIENvbnRyb2xJbmplY3RvciBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBpbmplY3RvciA9IGluamVjdChJbmplY3RvcilcblxuICB0cmFuc2Zvcm0obmFtZTogc3RyaW5nLCBjb250cm9sOiBDb250cm9sLCBmb3JtR3JvdXA/OiBGb3JtR3JvdXAsIGluZGV4PzogbnVtYmVyKTogSW5qZWN0b3Ige1xuICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBDT05UUk9MX0RBVEEsXG4gICAgICAgICAgdXNlVmFsdWU6IHsga2V5OiBuYW1lLCBjb250cm9sLCBmb3JtR3JvdXAsIGluZGV4IH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==