@ngil/form-cva 3.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,66 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, EventEmitter, Input, Output, Optional, NgModule, forwardRef } from '@angular/core';
3
- import * as i1 from '@angular/forms';
4
- import { FormGroup, FormArray, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
2
+ import { Injectable, Directive, EventEmitter, Output, Input, Optional, NgModule, forwardRef } from '@angular/core';
5
3
  import { Subject, takeUntil, BehaviorSubject, combineLatest } from 'rxjs';
4
+ import * as i2 from '@angular/forms';
5
+ import { FormGroup, FormArray, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
6
6
  import { takeUntil as takeUntil$1 } from 'rxjs/operators';
7
7
  import { CommonModule } from '@angular/common';
8
8
 
9
+ const DEFAULT_ERROR_MESSAGES = {
10
+ required: '{{fieldName}} is required.',
11
+ max: 'Maximum {{fieldName}} is {{max}}.',
12
+ min: 'Minimum {{fieldName}} is {{min}}.',
13
+ maxlength: '{{fieldName}} can be max {{requiredLength}} characters long.',
14
+ minlength: '{{fieldName}} must be at least {{requiredLength}} characters long.',
15
+ email: '{{fieldName}} must be an email.'
16
+ };
17
+
18
+ class NgilErrorMessagesService {
19
+ constructor() {
20
+ this.errorMessages = DEFAULT_ERROR_MESSAGES;
21
+ this.config = {
22
+ useDefaultReplacer: true
23
+ };
24
+ this.errorMessagesChangedSubject = new Subject();
25
+ this.errorMessagesChanged$ = this.errorMessagesChangedSubject.asObservable();
26
+ }
27
+ addErrorMessages(errorMessages) {
28
+ this.errorMessages = { ...this.errorMessages, ...errorMessages };
29
+ }
30
+ setErrorMessages(errorMessages) {
31
+ this.errorMessages = errorMessages;
32
+ }
33
+ /**
34
+ * @deprecated
35
+ * use setConfig instead
36
+ */
37
+ setUserReplacer(config) {
38
+ this.config = { ...this.config, ...config };
39
+ }
40
+ setConfig(config) {
41
+ this.config = { ...this.config, ...config };
42
+ }
43
+ getErrorMessage(errorKey, interpolateParams) {
44
+ if (!this.errorMessages[errorKey]) {
45
+ return `Missing error message to the error with key ${errorKey}`;
46
+ }
47
+ if (this.config.useDefaultReplacer || !this.config.replacer) {
48
+ return this.errorMessages[errorKey].replace(/{{(\w+)}}/g, (placeholderWithDelimiters, placeholderWithoutDelimiters) => interpolateParams[placeholderWithoutDelimiters]
49
+ ? interpolateParams[placeholderWithoutDelimiters]
50
+ : placeholderWithDelimiters);
51
+ }
52
+ return this.config.replacer
53
+ ? this.config.replacer(this.errorMessages[errorKey], interpolateParams)
54
+ : this.errorMessages[errorKey];
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilErrorMessagesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
57
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilErrorMessagesService, providedIn: 'root' }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilErrorMessagesService, decorators: [{
60
+ type: Injectable,
61
+ args: [{ providedIn: 'root' }]
62
+ }] });
63
+
9
64
  /**
10
65
  *
11
66
  */
@@ -85,10 +140,10 @@ class AbstractFormArrayComponent {
85
140
  this.destroy$.next();
86
141
  this.destroy$.complete();
87
142
  }
88
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormArrayComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
89
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractFormArrayComponent, ngImport: i0 }); }
143
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractFormArrayComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
144
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type: AbstractFormArrayComponent, isStandalone: true, ngImport: i0 }); }
90
145
  }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormArrayComponent, decorators: [{
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractFormArrayComponent, decorators: [{
92
147
  type: Directive
93
148
  }] });
94
149
 
@@ -131,10 +186,10 @@ class AbstractFormComponent {
131
186
  this.destroy$.next();
132
187
  this.destroy$.complete();
133
188
  }
134
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
135
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractFormComponent, inputs: { formViewModel: "formViewModel" }, outputs: { submitted: "submitted" }, ngImport: i0 }); }
189
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
190
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type: AbstractFormComponent, isStandalone: true, inputs: { formViewModel: "formViewModel" }, outputs: { submitted: "submitted" }, ngImport: i0 }); }
136
191
  }
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormComponent, decorators: [{
192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractFormComponent, decorators: [{
138
193
  type: Directive
139
194
  }], propDecorators: { formViewModel: [{
140
195
  type: Input
@@ -192,33 +247,19 @@ class AbstractFormGroupComponent {
192
247
  this.destroy$.next();
193
248
  this.destroy$.complete();
194
249
  }
195
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
196
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractFormGroupComponent, ngImport: i0 }); }
250
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractFormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
251
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type: AbstractFormGroupComponent, isStandalone: true, ngImport: i0 }); }
197
252
  }
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormGroupComponent, decorators: [{
253
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractFormGroupComponent, decorators: [{
199
254
  type: Directive
200
255
  }] });
201
256
 
202
- const errorMessages = {
203
- required: '{{fieldName}} is required.',
204
- max: 'Maximum {{fieldName}} is {{max}}.',
205
- min: 'Minimum {{fieldName}} is {{min}}.',
206
- maxlength: '{{fieldName}} can be max {{requiredLength}} characters long.',
207
- minlength: '{{fieldName}} must be at least {{requiredLength}} characters long.',
208
- email: '{{fieldName}} must be an email.'
209
- };
210
- function getErrorMessage(errorKey, replacements) {
211
- if (!errorMessages[errorKey]) {
212
- return `Missing error message to the error with key ${errorKey}`;
213
- }
214
- return errorMessages[errorKey].replace(/{{(\w+)}}/g, (placeholderWithDelimiters, placeholderWithoutDelimiters) => replacements[placeholderWithoutDelimiters] ? replacements[placeholderWithoutDelimiters] : placeholderWithDelimiters);
215
- }
216
-
217
257
  class AbstractInputComponent {
218
258
  set errorMessage(errorMessage) {
219
259
  this.errorMessage$.next(errorMessage);
220
260
  }
221
- constructor(controlContainer) {
261
+ constructor(errorMessagesService, controlContainer) {
262
+ this.errorMessagesService = errorMessagesService;
222
263
  this.controlContainer = controlContainer;
223
264
  this.formControlName = '';
224
265
  this.label = '';
@@ -240,6 +281,7 @@ class AbstractInputComponent {
240
281
  }
241
282
  this.setRequiredState();
242
283
  this.listenStatusChanges();
284
+ this.listenErrorMessagesChanges();
243
285
  }
244
286
  setRequiredState() {
245
287
  if (!this.parentControl || !this.parentControl?.validator) {
@@ -268,11 +310,14 @@ class AbstractInputComponent {
268
310
  listenStatusChanges() {
269
311
  this.parentControl?.statusChanges.pipe(takeUntil$1(this.destroy$)).subscribe(() => this.setErrors());
270
312
  }
313
+ listenErrorMessagesChanges() {
314
+ this.errorMessagesService.errorMessagesChanged$.pipe(takeUntil$1(this.destroy$)).subscribe(() => this.setErrors());
315
+ }
271
316
  setErrors() {
272
317
  if (this.parentControl?.errors) {
273
318
  const errorKey = Object.keys(this.parentControl?.errors)[0];
274
319
  const errorObj = this.parentControl?.errors[`${errorKey}`];
275
- this.errorMessage$.next(getErrorMessage(errorKey, {
320
+ this.errorMessage$.next(this.errorMessagesService.getErrorMessage(errorKey, {
276
321
  fieldName: this.label,
277
322
  ...errorObj
278
323
  }));
@@ -285,12 +330,12 @@ class AbstractInputComponent {
285
330
  this.destroy$.next();
286
331
  this.destroy$.complete();
287
332
  }
288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractInputComponent, deps: [{ token: i1.ControlContainer, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
289
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractInputComponent, inputs: { formControlName: "formControlName", errorMessage: "errorMessage", label: "label", readonly: "readonly", required: "required", disabled: "disabled" }, ngImport: i0 }); }
333
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractInputComponent, deps: [{ token: NgilErrorMessagesService }, { token: i2.ControlContainer, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
334
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type: AbstractInputComponent, isStandalone: true, inputs: { formControlName: "formControlName", errorMessage: "errorMessage", label: "label", readonly: "readonly", required: "required", disabled: "disabled" }, ngImport: i0 }); }
290
335
  }
291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractInputComponent, decorators: [{
336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractInputComponent, decorators: [{
292
337
  type: Directive
293
- }], ctorParameters: () => [{ type: i1.ControlContainer, decorators: [{
338
+ }], ctorParameters: () => [{ type: NgilErrorMessagesService }, { type: i2.ControlContainer, decorators: [{
294
339
  type: Optional
295
340
  }] }], propDecorators: { formControlName: [{
296
341
  type: Input
@@ -307,11 +352,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
307
352
  }] } });
308
353
 
309
354
  class NgilUiCommonFormCvaModule {
310
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
311
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, imports: [CommonModule] }); }
312
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, imports: [CommonModule] }); }
355
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilUiCommonFormCvaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
356
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.4", ngImport: i0, type: NgilUiCommonFormCvaModule, imports: [CommonModule] }); }
357
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilUiCommonFormCvaModule, imports: [CommonModule] }); }
313
358
  }
314
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, decorators: [{
359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgilUiCommonFormCvaModule, decorators: [{
315
360
  type: NgModule,
316
361
  args: [{
317
362
  imports: [CommonModule]
@@ -337,5 +382,5 @@ function createControlValueAccessorProviders(component) {
337
382
  * Generated bundle index. Do not edit.
338
383
  */
339
384
 
340
- export { AbstractFormArrayComponent, AbstractFormComponent, AbstractFormGroupComponent, AbstractInputComponent, NgilUiCommonFormCvaModule, createControlValueAccessorProviders };
385
+ export { AbstractFormArrayComponent, AbstractFormComponent, AbstractFormGroupComponent, AbstractInputComponent, DEFAULT_ERROR_MESSAGES, NgilErrorMessagesService, NgilUiCommonFormCvaModule, createControlValueAccessorProviders };
341
386
  //# sourceMappingURL=ngil-form-cva.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngil-form-cva.mjs","sources":["../../../../../../../libs/ngil/ui/common/form-cva/src/lib/models/abstract-form-array-component.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/models/abstract-form-component.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/models/abstract-form-group.component.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/error-messages.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/models/abstract-input-component.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/ngil-ui-common-form-cva.module.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/utils/control-value-accessor.util.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/ngil-form-cva.ts"],"sourcesContent":["import { AfterViewInit, Directive, OnDestroy } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormArray,\r\n FormGroup,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FormValueOf } from './form.model';\r\n\r\n/**\r\n *\r\n */\r\n@Directive()\r\nexport abstract class AbstractFormArrayComponent<F extends AbstractControl<any>>\r\n implements AfterViewInit, OnDestroy, ControlValueAccessor, Validator\r\n{\r\n protected abstract createFormArray(): FormArray<F>;\r\n protected abstract createFormArrayItem(item?: FormValueOf<F>): F;\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n protected onChange?: (value: FormValueOf<F>[]) => void;\r\n protected onTouched?: () => void;\r\n\r\n formGroup = new FormGroup({\r\n formArray: this.createFormArray()\r\n });\r\n get formArray() {\r\n return this.formGroup.controls.formArray;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.listenValueChanges();\r\n }\r\n\r\n protected listenValueChanges(): void {\r\n this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n if (this.onChange) {\r\n this.onChange(this.formArray.getRawValue());\r\n }\r\n });\r\n }\r\n\r\n registerOnChange(fn: (value: FormValueOf<F>[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n writeValue(items: FormValueOf<F>[] | undefined | null): void {\r\n this.prepareControls(items);\r\n\r\n if (items) {\r\n this.formArray.patchValue(items, { emitEvent: false });\r\n } else {\r\n this.formArray.reset(undefined, { emitEvent: false });\r\n }\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.formGroup.disable({ emitEvent: false }) : this.formGroup.enable({ emitEvent: false });\r\n }\r\n\r\n validate(): ValidationErrors | null {\r\n if (this.formArray.invalid) {\r\n return { invalidFormArray: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n protected prepareControls(items: FormValueOf<F>[] | undefined | null): void {\r\n items = items || [];\r\n\r\n if (this.formArray.value.length < items.length) {\r\n this.addExtraControls(items);\r\n }\r\n\r\n if (this.formArray.value.length > items.length) {\r\n this.removeExtraControls(items);\r\n }\r\n }\r\n\r\n private addExtraControls(items: FormValueOf<F>[]): void {\r\n items.forEach((item, index) => {\r\n const control = this.formArray.at(index);\r\n if (!control) {\r\n this.formArray.push(this.createFormArrayItem(item));\r\n }\r\n });\r\n }\r\n\r\n private removeExtraControls(items: FormValueOf<F>[]): void {\r\n let formArrayIndex = 0;\r\n this.formArray.value.forEach((item, index) => {\r\n if (!items[index]) {\r\n this.formArray.removeAt(formArrayIndex);\r\n } else {\r\n formArrayIndex++;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import { Directive, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Directive()\r\nexport abstract class AbstractFormComponent<T> implements OnDestroy, OnInit {\r\n @Input() formViewModel?: T;\r\n\r\n @Output() submitted: EventEmitter<T> = new EventEmitter();\r\n\r\n abstract form: FormGroup;\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n get isSubmitDisabled(): boolean {\r\n return !this.form.valid || this.form.pristine;\r\n }\r\n\r\n get isCancelDisabled(): boolean {\r\n return !this.form.dirty;\r\n }\r\n\r\n protected getFormDefaultValue(model?: T): T | undefined {\r\n return model;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.form.patchValue(this.getFormDefaultValue(this.formViewModel) || {}, { emitEvent: false });\r\n }\r\n\r\n submit(): void {\r\n if (!this.isSubmitDisabled) {\r\n this.submitted.emit({\r\n ...this.formViewModel,\r\n ...this.form.value\r\n });\r\n } else {\r\n Object.values(this.form.controls).forEach(control => control.updateValueAndValidity());\r\n }\r\n }\r\n\r\n cancel(): void {\r\n if (!this.isCancelDisabled) {\r\n this.form.reset(this.getFormDefaultValue(this.formViewModel), { emitEvent: false });\r\n this.form.markAsPristine();\r\n this.form.markAsUntouched();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","/**\r\n * This class implements ControlValueAccessor logic for a FormGroup.\r\n * NG_VALUE_ACCESSOR and NG_VALIDATORS must be provided in the component.\r\n *\r\n * The FormGroup changes will be automatically change the parent FormControl value.\r\n *\r\n * Example:\r\n\r\n */\r\n\r\nimport { AfterViewInit, Directive, OnDestroy } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, FormGroup, ValidationErrors, Validator } from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FlatFormControlsOf, FormValueOf } from './form.model';\r\n\r\n@Directive()\r\nexport abstract class AbstractFormGroupComponent<\r\n T extends { [K in keyof T]: any },\r\n F extends { [K in keyof T]: AbstractControl<any, any> } = FlatFormControlsOf<T>\r\n> implements ControlValueAccessor, Validator, OnDestroy, AfterViewInit\r\n{\r\n abstract formGroup: FormGroup<F>;\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n protected onChange?: (value: FormValueOf<FormGroup<F>>) => void;\r\n protected onTouched?: () => void;\r\n\r\n ngAfterViewInit(): void {\r\n this.listenValueChanges();\r\n }\r\n\r\n protected listenValueChanges(): void {\r\n this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n if (this.onChange) {\r\n this.onChange(this.formGroup.getRawValue());\r\n }\r\n });\r\n }\r\n\r\n registerOnChange(fn: (value: FormValueOf<FormGroup<F>>) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n writeValue(formValue: T | undefined | null): void {\r\n if (formValue) {\r\n this.formGroup.patchValue(formValue, { emitEvent: false });\r\n } else {\r\n this.formGroup.reset(undefined, { emitEvent: false });\r\n }\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.formGroup.disable({ emitEvent: false }) : this.formGroup.enable({ emitEvent: false });\r\n }\r\n\r\n validate(): ValidationErrors | null {\r\n if (this.formGroup.invalid) {\r\n return { invalidFormGroup: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","const errorMessages: Record<string, string> = {\r\n required: '{{fieldName}} is required.',\r\n max: 'Maximum {{fieldName}} is {{max}}.',\r\n min: 'Minimum {{fieldName}} is {{min}}.',\r\n maxlength: '{{fieldName}} can be max {{requiredLength}} characters long.',\r\n minlength: '{{fieldName}} must be at least {{requiredLength}} characters long.',\r\n email: '{{fieldName}} must be an email.'\r\n};\r\n\r\nexport function getErrorMessage(errorKey: string, replacements: Record<string, string>): string {\r\n if (!errorMessages[errorKey]) {\r\n return `Missing error message to the error with key ${errorKey}`;\r\n }\r\n\r\n return errorMessages[errorKey].replace(/{{(\\w+)}}/g, (placeholderWithDelimiters, placeholderWithoutDelimiters) =>\r\n replacements[placeholderWithoutDelimiters] ? replacements[placeholderWithoutDelimiters] : placeholderWithDelimiters\r\n );\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit, Optional } from '@angular/core';\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, FormArray } from '@angular/forms';\r\nimport { BehaviorSubject, Subject, combineLatest } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { getErrorMessage } from '../error-messages';\r\n\r\n@Directive()\r\nexport abstract class AbstractInputComponent<T = string> implements OnInit, ControlValueAccessor, OnDestroy {\r\n @Input() formControlName = '';\r\n @Input() set errorMessage(errorMessage: string) {\r\n this.errorMessage$.next(errorMessage);\r\n }\r\n @Input() label = '';\r\n @Input() readonly = false;\r\n @Input() required = false;\r\n @Input() disabled = false;\r\n\r\n protected parentControl?: AbstractControl | null;\r\n protected onChange?: (value: T | null) => void;\r\n protected onTouched?: () => void;\r\n protected readonly destroy$ = new Subject<void>();\r\n protected readonly errorMessage$ = new BehaviorSubject<string>('');\r\n\r\n model$ = combineLatest({\r\n errorMessage: this.errorMessage$\r\n });\r\n\r\n constructor(@Optional() private readonly controlContainer?: ControlContainer) {}\r\n\r\n ngOnInit(): void {\r\n if (this.controlContainer?.control instanceof FormArray) {\r\n this.parentControl = this.controlContainer?.control.at(+this.formControlName);\r\n } else {\r\n this.parentControl = this.controlContainer?.control?.get(this.formControlName);\r\n }\r\n this.setRequiredState();\r\n this.listenStatusChanges();\r\n }\r\n\r\n private setRequiredState(): void {\r\n if (!this.parentControl || !this.parentControl?.validator) {\r\n return;\r\n }\r\n\r\n const validators = this.parentControl?.validator({ value: '' } as AbstractControl);\r\n if (validators && Object.keys(validators).includes('required')) {\r\n this.required = true;\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n if (this.onTouched) {\r\n this.onTouched();\r\n }\r\n this.setErrors();\r\n }\r\n\r\n registerOnChange(fn: (value: T | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n abstract writeValue(value: T): void;\r\n\r\n protected listenStatusChanges(): void {\r\n this.parentControl?.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(() => this.setErrors());\r\n }\r\n\r\n protected setErrors(): void {\r\n if (this.parentControl?.errors) {\r\n const errorKey = Object.keys(this.parentControl?.errors)[0];\r\n const errorObj = this.parentControl?.errors[`${errorKey}`];\r\n this.errorMessage$.next(\r\n getErrorMessage(errorKey, {\r\n fieldName: this.label,\r\n ...errorObj\r\n })\r\n );\r\n } else {\r\n this.errorMessage$.next('');\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule]\r\n})\r\nexport class NgilUiCommonFormCvaModule {}\r\n","import { forwardRef, Type } from '@angular/core';\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport function createControlValueAccessorProviders(component: Type<unknown>) {\r\n return [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n }\r\n ];\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
1
+ {"version":3,"file":"ngil-form-cva.mjs","sources":["../../../../../../../libs/ngil/ui/common/form-cva/src/lib/error-messages.model.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/error-messages.service.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/models/abstract-form-array-component.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/models/abstract-form-component.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/models/abstract-form-group.component.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/models/abstract-input-component.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/ngil-ui-common-form-cva.module.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/lib/utils/control-value-accessor.util.ts","../../../../../../../libs/ngil/ui/common/form-cva/src/ngil-form-cva.ts"],"sourcesContent":["export interface NgilErrorMessageConfig {\r\n /**\r\n * @deprecated\r\n * set replacer property to override the default replacer\r\n */\r\n useDefaultReplacer?: boolean;\r\n replacer?: (i18nKey: string, replacements: Record<string, string>) => string;\r\n}\r\n\r\nexport const DEFAULT_ERROR_MESSAGES: Record<string, string> = {\r\n required: '{{fieldName}} is required.',\r\n max: 'Maximum {{fieldName}} is {{max}}.',\r\n min: 'Minimum {{fieldName}} is {{min}}.',\r\n maxlength: '{{fieldName}} can be max {{requiredLength}} characters long.',\r\n minlength: '{{fieldName}} must be at least {{requiredLength}} characters long.',\r\n email: '{{fieldName}} must be an email.'\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { DEFAULT_ERROR_MESSAGES, NgilErrorMessageConfig } from './error-messages.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgilErrorMessagesService {\r\n private errorMessages: Record<string, string> = DEFAULT_ERROR_MESSAGES;\r\n private config: NgilErrorMessageConfig = {\r\n useDefaultReplacer: true\r\n };\r\n private errorMessagesChangedSubject = new Subject<void>();\r\n errorMessagesChanged$ = this.errorMessagesChangedSubject.asObservable();\r\n\r\n addErrorMessages(errorMessages: Record<string, string>) {\r\n this.errorMessages = { ...this.errorMessages, ...errorMessages };\r\n }\r\n\r\n setErrorMessages(errorMessages: Record<string, string>) {\r\n this.errorMessages = errorMessages;\r\n }\r\n\r\n /**\r\n * @deprecated\r\n * use setConfig instead\r\n */\r\n setUserReplacer(config: Partial<NgilErrorMessageConfig>) {\r\n this.config = { ...this.config, ...config };\r\n }\r\n\r\n setConfig(config: Partial<NgilErrorMessageConfig>) {\r\n this.config = { ...this.config, ...config };\r\n }\r\n\r\n getErrorMessage(errorKey: string, interpolateParams: Record<string, string>): string {\r\n if (!this.errorMessages[errorKey]) {\r\n return `Missing error message to the error with key ${errorKey}`;\r\n }\r\n\r\n if (this.config.useDefaultReplacer || !this.config.replacer) {\r\n return this.errorMessages[errorKey].replace(\r\n /{{(\\w+)}}/g,\r\n (placeholderWithDelimiters, placeholderWithoutDelimiters) =>\r\n interpolateParams[placeholderWithoutDelimiters]\r\n ? interpolateParams[placeholderWithoutDelimiters]\r\n : placeholderWithDelimiters\r\n );\r\n }\r\n\r\n return this.config.replacer\r\n ? this.config.replacer(this.errorMessages[errorKey], interpolateParams)\r\n : this.errorMessages[errorKey];\r\n }\r\n}\r\n","import { AfterViewInit, Directive, OnDestroy } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormArray,\r\n FormGroup,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FormValueOf } from './form.model';\r\n\r\n/**\r\n *\r\n */\r\n@Directive()\r\nexport abstract class AbstractFormArrayComponent<F extends AbstractControl<any>>\r\n implements AfterViewInit, OnDestroy, ControlValueAccessor, Validator\r\n{\r\n protected abstract createFormArray(): FormArray<F>;\r\n protected abstract createFormArrayItem(item?: FormValueOf<F>): F;\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n protected onChange?: (value: FormValueOf<F>[]) => void;\r\n protected onTouched?: () => void;\r\n\r\n formGroup = new FormGroup({\r\n formArray: this.createFormArray()\r\n });\r\n get formArray() {\r\n return this.formGroup.controls.formArray;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.listenValueChanges();\r\n }\r\n\r\n protected listenValueChanges(): void {\r\n this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n if (this.onChange) {\r\n this.onChange(this.formArray.getRawValue());\r\n }\r\n });\r\n }\r\n\r\n registerOnChange(fn: (value: FormValueOf<F>[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n writeValue(items: FormValueOf<F>[] | undefined | null): void {\r\n this.prepareControls(items);\r\n\r\n if (items) {\r\n this.formArray.patchValue(items, { emitEvent: false });\r\n } else {\r\n this.formArray.reset(undefined, { emitEvent: false });\r\n }\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.formGroup.disable({ emitEvent: false }) : this.formGroup.enable({ emitEvent: false });\r\n }\r\n\r\n validate(): ValidationErrors | null {\r\n if (this.formArray.invalid) {\r\n return { invalidFormArray: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n protected prepareControls(items: FormValueOf<F>[] | undefined | null): void {\r\n items = items || [];\r\n\r\n if (this.formArray.value.length < items.length) {\r\n this.addExtraControls(items);\r\n }\r\n\r\n if (this.formArray.value.length > items.length) {\r\n this.removeExtraControls(items);\r\n }\r\n }\r\n\r\n private addExtraControls(items: FormValueOf<F>[]): void {\r\n items.forEach((item, index) => {\r\n const control = this.formArray.at(index);\r\n if (!control) {\r\n this.formArray.push(this.createFormArrayItem(item));\r\n }\r\n });\r\n }\r\n\r\n private removeExtraControls(items: FormValueOf<F>[]): void {\r\n let formArrayIndex = 0;\r\n this.formArray.value.forEach((item, index) => {\r\n if (!items[index]) {\r\n this.formArray.removeAt(formArrayIndex);\r\n } else {\r\n formArrayIndex++;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import { Directive, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Directive()\r\nexport abstract class AbstractFormComponent<T> implements OnDestroy, OnInit {\r\n @Input() formViewModel?: T;\r\n\r\n @Output() submitted: EventEmitter<T> = new EventEmitter();\r\n\r\n abstract form: FormGroup;\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n get isSubmitDisabled(): boolean {\r\n return !this.form.valid || this.form.pristine;\r\n }\r\n\r\n get isCancelDisabled(): boolean {\r\n return !this.form.dirty;\r\n }\r\n\r\n protected getFormDefaultValue(model?: T): T | undefined {\r\n return model;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.form.patchValue(this.getFormDefaultValue(this.formViewModel) || {}, { emitEvent: false });\r\n }\r\n\r\n submit(): void {\r\n if (!this.isSubmitDisabled) {\r\n this.submitted.emit({\r\n ...this.formViewModel,\r\n ...this.form.value\r\n });\r\n } else {\r\n Object.values(this.form.controls).forEach(control => control.updateValueAndValidity());\r\n }\r\n }\r\n\r\n cancel(): void {\r\n if (!this.isCancelDisabled) {\r\n this.form.reset(this.getFormDefaultValue(this.formViewModel), { emitEvent: false });\r\n this.form.markAsPristine();\r\n this.form.markAsUntouched();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","/**\r\n * This class implements ControlValueAccessor logic for a FormGroup.\r\n * NG_VALUE_ACCESSOR and NG_VALIDATORS must be provided in the component.\r\n *\r\n * The FormGroup changes will be automatically change the parent FormControl value.\r\n *\r\n * Example:\r\n\r\n */\r\n\r\nimport { AfterViewInit, Directive, OnDestroy } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, FormGroup, ValidationErrors, Validator } from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FlatFormControlsOf, FormValueOf } from './form.model';\r\n\r\n@Directive()\r\nexport abstract class AbstractFormGroupComponent<\r\n T extends { [K in keyof T]: any },\r\n F extends { [K in keyof T]: AbstractControl<any, any> } = FlatFormControlsOf<T>\r\n> implements ControlValueAccessor, Validator, OnDestroy, AfterViewInit\r\n{\r\n abstract formGroup: FormGroup<F>;\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n protected onChange?: (value: FormValueOf<FormGroup<F>>) => void;\r\n protected onTouched?: () => void;\r\n\r\n ngAfterViewInit(): void {\r\n this.listenValueChanges();\r\n }\r\n\r\n protected listenValueChanges(): void {\r\n this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n if (this.onChange) {\r\n this.onChange(this.formGroup.getRawValue());\r\n }\r\n });\r\n }\r\n\r\n registerOnChange(fn: (value: FormValueOf<FormGroup<F>>) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n writeValue(formValue: T | undefined | null): void {\r\n if (formValue) {\r\n this.formGroup.patchValue(formValue, { emitEvent: false });\r\n } else {\r\n this.formGroup.reset(undefined, { emitEvent: false });\r\n }\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.formGroup.disable({ emitEvent: false }) : this.formGroup.enable({ emitEvent: false });\r\n }\r\n\r\n validate(): ValidationErrors | null {\r\n if (this.formGroup.invalid) {\r\n return { invalidFormGroup: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit, Optional } from '@angular/core';\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, FormArray } from '@angular/forms';\r\nimport { BehaviorSubject, Subject, combineLatest } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgilErrorMessagesService } from '../error-messages.service';\r\n\r\n@Directive()\r\nexport abstract class AbstractInputComponent<T = string> implements OnInit, ControlValueAccessor, OnDestroy {\r\n @Input() formControlName = '';\r\n @Input() set errorMessage(errorMessage: string) {\r\n this.errorMessage$.next(errorMessage);\r\n }\r\n @Input() label = '';\r\n @Input() readonly = false;\r\n @Input() required = false;\r\n @Input() disabled = false;\r\n\r\n protected parentControl?: AbstractControl | null;\r\n protected onChange?: (value: T | null) => void;\r\n protected onTouched?: () => void;\r\n protected readonly destroy$ = new Subject<void>();\r\n protected readonly errorMessage$ = new BehaviorSubject<string>('');\r\n\r\n model$ = combineLatest({\r\n errorMessage: this.errorMessage$\r\n });\r\n\r\n constructor(\r\n private readonly errorMessagesService: NgilErrorMessagesService,\r\n @Optional() private readonly controlContainer?: ControlContainer\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (this.controlContainer?.control instanceof FormArray) {\r\n this.parentControl = this.controlContainer?.control.at(+this.formControlName);\r\n } else {\r\n this.parentControl = this.controlContainer?.control?.get(this.formControlName);\r\n }\r\n this.setRequiredState();\r\n this.listenStatusChanges();\r\n this.listenErrorMessagesChanges();\r\n }\r\n\r\n private setRequiredState(): void {\r\n if (!this.parentControl || !this.parentControl?.validator) {\r\n return;\r\n }\r\n\r\n const validators = this.parentControl?.validator({ value: '' } as AbstractControl);\r\n if (validators && Object.keys(validators).includes('required')) {\r\n this.required = true;\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n if (this.onTouched) {\r\n this.onTouched();\r\n }\r\n this.setErrors();\r\n }\r\n\r\n registerOnChange(fn: (value: T | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n abstract writeValue(value: T): void;\r\n\r\n protected listenStatusChanges(): void {\r\n this.parentControl?.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(() => this.setErrors());\r\n }\r\n\r\n protected listenErrorMessagesChanges() {\r\n this.errorMessagesService.errorMessagesChanged$.pipe(takeUntil(this.destroy$)).subscribe(() => this.setErrors());\r\n }\r\n\r\n protected setErrors(): void {\r\n if (this.parentControl?.errors) {\r\n const errorKey = Object.keys(this.parentControl?.errors)[0];\r\n const errorObj = this.parentControl?.errors[`${errorKey}`];\r\n this.errorMessage$.next(\r\n this.errorMessagesService.getErrorMessage(errorKey, {\r\n fieldName: this.label,\r\n ...errorObj\r\n })\r\n );\r\n } else {\r\n this.errorMessage$.next('');\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule]\r\n})\r\nexport class NgilUiCommonFormCvaModule {}\r\n","import { forwardRef, Type } from '@angular/core';\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport function createControlValueAccessorProviders(component: Type<unknown>) {\r\n return [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n }\r\n ];\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil","i1.NgilErrorMessagesService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngil/form-cva",
3
- "version": "3.0.0",
3
+ "version": "5.0.0",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0"
6
6
  },
@@ -11,21 +11,19 @@
11
11
  },
12
12
  "homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngil/ui/common/cva#readme",
13
13
  "peerDependencies": {
14
- "@angular/core": "^17.0.0",
15
- "@angular/forms": "^17.0.0",
16
- "rxjs": "^7.0.0",
17
- "@angular/common": "^17.0.0"
14
+ "@angular/core": ">=17.0.0",
15
+ "@angular/forms": ">=17.0.0",
16
+ "rxjs": ">=7.0.0",
17
+ "@angular/common": ">=17.0.0"
18
18
  },
19
19
  "module": "fesm2022/ngil-form-cva.mjs",
20
- "typings": "index.d.ts",
20
+ "typings": "types/ngil-form-cva.d.ts",
21
21
  "exports": {
22
22
  "./package.json": {
23
23
  "default": "./package.json"
24
24
  },
25
25
  ".": {
26
- "types": "./index.d.ts",
27
- "esm2022": "./esm2022/ngil-form-cva.mjs",
28
- "esm": "./esm2022/ngil-form-cva.mjs",
26
+ "types": "./types/ngil-form-cva.d.ts",
29
27
  "default": "./fesm2022/ngil-form-cva.mjs"
30
28
  }
31
29
  },
@@ -0,0 +1,175 @@
1
+ import * as rxjs from 'rxjs';
2
+ import { Subject, BehaviorSubject } from 'rxjs';
3
+ import * as i0 from '@angular/core';
4
+ import { AfterViewInit, OnDestroy, OnInit, EventEmitter, Type } from '@angular/core';
5
+ import * as _angular_forms from '@angular/forms';
6
+ import { AbstractControl, FormControl, FormGroup, ControlValueAccessor, Validator, FormArray, ValidationErrors, ControlContainer } from '@angular/forms';
7
+ import * as i1 from '@angular/common';
8
+
9
+ interface NgilErrorMessageConfig {
10
+ /**
11
+ * @deprecated
12
+ * set replacer property to override the default replacer
13
+ */
14
+ useDefaultReplacer?: boolean;
15
+ replacer?: (i18nKey: string, replacements: Record<string, string>) => string;
16
+ }
17
+ declare const DEFAULT_ERROR_MESSAGES: Record<string, string>;
18
+
19
+ declare class NgilErrorMessagesService {
20
+ private errorMessages;
21
+ private config;
22
+ private errorMessagesChangedSubject;
23
+ errorMessagesChanged$: rxjs.Observable<void>;
24
+ addErrorMessages(errorMessages: Record<string, string>): void;
25
+ setErrorMessages(errorMessages: Record<string, string>): void;
26
+ /**
27
+ * @deprecated
28
+ * use setConfig instead
29
+ */
30
+ setUserReplacer(config: Partial<NgilErrorMessageConfig>): void;
31
+ setConfig(config: Partial<NgilErrorMessageConfig>): void;
32
+ getErrorMessage(errorKey: string, interpolateParams: Record<string, string>): string;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgilErrorMessagesService, never>;
34
+ static ɵprov: i0.ɵɵInjectableDeclaration<NgilErrorMessagesService>;
35
+ }
36
+
37
+ /**
38
+ * Create FormControl or FormGroup types to used in a FormGroup using a interface
39
+ */
40
+ type FormControlsOf<T extends Record<string, any>> = {
41
+ [K in keyof Required<T>]: Required<T>[K] extends Record<string, any> ? Required<T>[K] extends any[] ? FormControl<T[K] | null> : FormGroup<FormControlsOf<Required<T>[K]>> : FormControl<T[K] | null>;
42
+ };
43
+ /**
44
+ * Wrap every property in the Record T in a FormControl type
45
+ */
46
+ type FlatFormControlsOf<T extends Record<string, any>> = {
47
+ [K in keyof T]: FormControl<T[K] | null>;
48
+ };
49
+ /**
50
+ * Gives the form value type
51
+ */
52
+ type FormValueOf<T extends AbstractControl<any>> = T['value'];
53
+
54
+ /**
55
+ *
56
+ */
57
+ declare abstract class AbstractFormArrayComponent<F extends AbstractControl<any>> implements AfterViewInit, OnDestroy, ControlValueAccessor, Validator {
58
+ protected abstract createFormArray(): FormArray<F>;
59
+ protected abstract createFormArrayItem(item?: FormValueOf<F>): F;
60
+ protected readonly destroy$: Subject<void>;
61
+ protected onChange?: (value: FormValueOf<F>[]) => void;
62
+ protected onTouched?: () => void;
63
+ formGroup: FormGroup<{
64
+ formArray: FormArray<F>;
65
+ }>;
66
+ get formArray(): FormArray<F>;
67
+ ngAfterViewInit(): void;
68
+ protected listenValueChanges(): void;
69
+ registerOnChange(fn: (value: FormValueOf<F>[]) => void): void;
70
+ registerOnTouched(fn: () => void): void;
71
+ writeValue(items: FormValueOf<F>[] | undefined | null): void;
72
+ setDisabledState(isDisabled: boolean): void;
73
+ validate(): ValidationErrors | null;
74
+ protected prepareControls(items: FormValueOf<F>[] | undefined | null): void;
75
+ private addExtraControls;
76
+ private removeExtraControls;
77
+ ngOnDestroy(): void;
78
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbstractFormArrayComponent<any>, never>;
79
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractFormArrayComponent<any>, never, never, {}, {}, never, never, true, never>;
80
+ }
81
+
82
+ declare abstract class AbstractFormComponent<T> implements OnDestroy, OnInit {
83
+ formViewModel?: T;
84
+ submitted: EventEmitter<T>;
85
+ abstract form: FormGroup;
86
+ protected readonly destroy$: Subject<void>;
87
+ get isSubmitDisabled(): boolean;
88
+ get isCancelDisabled(): boolean;
89
+ protected getFormDefaultValue(model?: T): T | undefined;
90
+ ngOnInit(): void;
91
+ submit(): void;
92
+ cancel(): void;
93
+ ngOnDestroy(): void;
94
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbstractFormComponent<any>, never>;
95
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractFormComponent<any>, never, never, { "formViewModel": { "alias": "formViewModel"; "required": false; }; }, { "submitted": "submitted"; }, never, never, true, never>;
96
+ }
97
+
98
+ /**
99
+ * This class implements ControlValueAccessor logic for a FormGroup.
100
+ * NG_VALUE_ACCESSOR and NG_VALIDATORS must be provided in the component.
101
+ *
102
+ * The FormGroup changes will be automatically change the parent FormControl value.
103
+ *
104
+ * Example:
105
+
106
+ */
107
+
108
+ declare abstract class AbstractFormGroupComponent<T extends {
109
+ [K in keyof T]: any;
110
+ }, F extends {
111
+ [K in keyof T]: AbstractControl<any, any>;
112
+ } = FlatFormControlsOf<T>> implements ControlValueAccessor, Validator, OnDestroy, AfterViewInit {
113
+ abstract formGroup: FormGroup<F>;
114
+ protected readonly destroy$: Subject<void>;
115
+ protected onChange?: (value: FormValueOf<FormGroup<F>>) => void;
116
+ protected onTouched?: () => void;
117
+ ngAfterViewInit(): void;
118
+ protected listenValueChanges(): void;
119
+ registerOnChange(fn: (value: FormValueOf<FormGroup<F>>) => void): void;
120
+ registerOnTouched(fn: () => void): void;
121
+ writeValue(formValue: T | undefined | null): void;
122
+ setDisabledState(isDisabled: boolean): void;
123
+ validate(): ValidationErrors | null;
124
+ ngOnDestroy(): void;
125
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbstractFormGroupComponent<any, any>, never>;
126
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractFormGroupComponent<any, any>, never, never, {}, {}, never, never, true, never>;
127
+ }
128
+
129
+ declare abstract class AbstractInputComponent<T = string> implements OnInit, ControlValueAccessor, OnDestroy {
130
+ private readonly errorMessagesService;
131
+ private readonly controlContainer?;
132
+ formControlName: string;
133
+ set errorMessage(errorMessage: string);
134
+ label: string;
135
+ readonly: boolean;
136
+ required: boolean;
137
+ disabled: boolean;
138
+ protected parentControl?: AbstractControl | null;
139
+ protected onChange?: (value: T | null) => void;
140
+ protected onTouched?: () => void;
141
+ protected readonly destroy$: Subject<void>;
142
+ protected readonly errorMessage$: BehaviorSubject<string>;
143
+ model$: rxjs.Observable<{
144
+ errorMessage: string;
145
+ }>;
146
+ constructor(errorMessagesService: NgilErrorMessagesService, controlContainer?: ControlContainer | undefined);
147
+ ngOnInit(): void;
148
+ private setRequiredState;
149
+ onBlur(): void;
150
+ registerOnChange(fn: (value: T | null) => void): void;
151
+ registerOnTouched(fn: () => void): void;
152
+ setDisabledState(isDisabled: boolean): void;
153
+ abstract writeValue(value: T): void;
154
+ protected listenStatusChanges(): void;
155
+ protected listenErrorMessagesChanges(): void;
156
+ protected setErrors(): void;
157
+ ngOnDestroy(): void;
158
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbstractInputComponent<any>, [null, { optional: true; }]>;
159
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractInputComponent<any>, never, never, { "formControlName": { "alias": "formControlName"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "label": { "alias": "label"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
160
+ }
161
+
162
+ declare class NgilUiCommonFormCvaModule {
163
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgilUiCommonFormCvaModule, never>;
164
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NgilUiCommonFormCvaModule, never, [typeof i1.CommonModule], never>;
165
+ static ɵinj: i0.ɵɵInjectorDeclaration<NgilUiCommonFormCvaModule>;
166
+ }
167
+
168
+ declare function createControlValueAccessorProviders(component: Type<unknown>): {
169
+ provide: i0.InjectionToken<readonly _angular_forms.ControlValueAccessor[]>;
170
+ useExisting: Type<any>;
171
+ multi: boolean;
172
+ }[];
173
+
174
+ export { AbstractFormArrayComponent, AbstractFormComponent, AbstractFormGroupComponent, AbstractInputComponent, DEFAULT_ERROR_MESSAGES, NgilErrorMessagesService, NgilUiCommonFormCvaModule, createControlValueAccessorProviders };
175
+ export type { FlatFormControlsOf, FormControlsOf, FormValueOf, NgilErrorMessageConfig };
package/esm2022/index.mjs DELETED
@@ -1,8 +0,0 @@
1
- export * from './lib/models/abstract-form-array-component';
2
- export * from './lib/models/abstract-form-component';
3
- export * from './lib/models/abstract-form-group.component';
4
- export * from './lib/models/abstract-input-component';
5
- export * from './lib/models/form.model';
6
- export * from './lib/ngil-ui-common-form-cva.module';
7
- export * from './lib/utils/control-value-accessor.util';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tYXJyYXktY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2Fic3RyYWN0LWlucHV0LWNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9mb3JtLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmdpbC11aS1jb21tb24tZm9ybS1jdmEubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvY29udHJvbC12YWx1ZS1hY2Nlc3Nvci51dGlsJztcclxuIl19
@@ -1,15 +0,0 @@
1
- const errorMessages = {
2
- required: '{{fieldName}} is required.',
3
- max: 'Maximum {{fieldName}} is {{max}}.',
4
- min: 'Minimum {{fieldName}} is {{min}}.',
5
- maxlength: '{{fieldName}} can be max {{requiredLength}} characters long.',
6
- minlength: '{{fieldName}} must be at least {{requiredLength}} characters long.',
7
- email: '{{fieldName}} must be an email.'
8
- };
9
- export function getErrorMessage(errorKey, replacements) {
10
- if (!errorMessages[errorKey]) {
11
- return `Missing error message to the error with key ${errorKey}`;
12
- }
13
- return errorMessages[errorKey].replace(/{{(\w+)}}/g, (placeholderWithDelimiters, placeholderWithoutDelimiters) => replacements[placeholderWithoutDelimiters] ? replacements[placeholderWithoutDelimiters] : placeholderWithDelimiters);
14
- }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvZXJyb3ItbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxhQUFhLEdBQTJCO0lBQzVDLFFBQVEsRUFBRSw0QkFBNEI7SUFDdEMsR0FBRyxFQUFFLG1DQUFtQztJQUN4QyxHQUFHLEVBQUUsbUNBQW1DO0lBQ3hDLFNBQVMsRUFBRSw4REFBOEQ7SUFDekUsU0FBUyxFQUFFLG9FQUFvRTtJQUMvRSxLQUFLLEVBQUUsaUNBQWlDO0NBQ3pDLENBQUM7QUFFRixNQUFNLFVBQVUsZUFBZSxDQUFDLFFBQWdCLEVBQUUsWUFBb0M7SUFDcEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sK0NBQStDLFFBQVEsRUFBRSxDQUFDO0lBQ25FLENBQUM7SUFFRCxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMseUJBQXlCLEVBQUUsNEJBQTRCLEVBQUUsRUFBRSxDQUMvRyxZQUFZLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUNwSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yTWVzc2FnZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgcmVxdWlyZWQ6ICd7e2ZpZWxkTmFtZX19IGlzIHJlcXVpcmVkLicsXHJcbiAgbWF4OiAnTWF4aW11bSB7e2ZpZWxkTmFtZX19IGlzIHt7bWF4fX0uJyxcclxuICBtaW46ICdNaW5pbXVtIHt7ZmllbGROYW1lfX0gaXMge3ttaW59fS4nLFxyXG4gIG1heGxlbmd0aDogJ3t7ZmllbGROYW1lfX0gY2FuIGJlIG1heCB7e3JlcXVpcmVkTGVuZ3RofX0gY2hhcmFjdGVycyBsb25nLicsXHJcbiAgbWlubGVuZ3RoOiAne3tmaWVsZE5hbWV9fSBtdXN0IGJlIGF0IGxlYXN0IHt7cmVxdWlyZWRMZW5ndGh9fSBjaGFyYWN0ZXJzIGxvbmcuJyxcclxuICBlbWFpbDogJ3t7ZmllbGROYW1lfX0gbXVzdCBiZSBhbiBlbWFpbC4nXHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlKGVycm9yS2V5OiBzdHJpbmcsIHJlcGxhY2VtZW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XHJcbiAgaWYgKCFlcnJvck1lc3NhZ2VzW2Vycm9yS2V5XSkge1xyXG4gICAgcmV0dXJuIGBNaXNzaW5nIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGVycm9yIHdpdGgga2V5ICR7ZXJyb3JLZXl9YDtcclxuICB9XHJcblxyXG4gIHJldHVybiBlcnJvck1lc3NhZ2VzW2Vycm9yS2V5XS5yZXBsYWNlKC97eyhcXHcrKX19L2csIChwbGFjZWhvbGRlcldpdGhEZWxpbWl0ZXJzLCBwbGFjZWhvbGRlcldpdGhvdXREZWxpbWl0ZXJzKSA9PlxyXG4gICAgcmVwbGFjZW1lbnRzW3BsYWNlaG9sZGVyV2l0aG91dERlbGltaXRlcnNdID8gcmVwbGFjZW1lbnRzW3BsYWNlaG9sZGVyV2l0aG91dERlbGltaXRlcnNdIDogcGxhY2Vob2xkZXJXaXRoRGVsaW1pdGVyc1xyXG4gICk7XHJcbn1cclxuIl19
@@ -1,90 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { FormGroup } from '@angular/forms';
3
- import { Subject, takeUntil } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- /**
6
- *
7
- */
8
- export class AbstractFormArrayComponent {
9
- constructor() {
10
- this.destroy$ = new Subject();
11
- this.formGroup = new FormGroup({
12
- formArray: this.createFormArray()
13
- });
14
- }
15
- get formArray() {
16
- return this.formGroup.controls.formArray;
17
- }
18
- ngAfterViewInit() {
19
- this.listenValueChanges();
20
- }
21
- listenValueChanges() {
22
- this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {
23
- if (this.onChange) {
24
- this.onChange(this.formArray.getRawValue());
25
- }
26
- });
27
- }
28
- registerOnChange(fn) {
29
- this.onChange = fn;
30
- }
31
- registerOnTouched(fn) {
32
- this.onTouched = fn;
33
- }
34
- writeValue(items) {
35
- this.prepareControls(items);
36
- if (items) {
37
- this.formArray.patchValue(items, { emitEvent: false });
38
- }
39
- else {
40
- this.formArray.reset(undefined, { emitEvent: false });
41
- }
42
- }
43
- setDisabledState(isDisabled) {
44
- isDisabled ? this.formGroup.disable({ emitEvent: false }) : this.formGroup.enable({ emitEvent: false });
45
- }
46
- validate() {
47
- if (this.formArray.invalid) {
48
- return { invalidFormArray: true };
49
- }
50
- return null;
51
- }
52
- prepareControls(items) {
53
- items = items || [];
54
- if (this.formArray.value.length < items.length) {
55
- this.addExtraControls(items);
56
- }
57
- if (this.formArray.value.length > items.length) {
58
- this.removeExtraControls(items);
59
- }
60
- }
61
- addExtraControls(items) {
62
- items.forEach((item, index) => {
63
- const control = this.formArray.at(index);
64
- if (!control) {
65
- this.formArray.push(this.createFormArrayItem(item));
66
- }
67
- });
68
- }
69
- removeExtraControls(items) {
70
- let formArrayIndex = 0;
71
- this.formArray.value.forEach((item, index) => {
72
- if (!items[index]) {
73
- this.formArray.removeAt(formArrayIndex);
74
- }
75
- else {
76
- formArrayIndex++;
77
- }
78
- });
79
- }
80
- ngOnDestroy() {
81
- this.destroy$.next();
82
- this.destroy$.complete();
83
- }
84
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormArrayComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
85
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractFormArrayComponent, ngImport: i0 }); }
86
- }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormArrayComponent, decorators: [{
88
- type: Directive
89
- }] });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1hcnJheS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tYXJyYXktY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFJTCxTQUFTLEVBR1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHMUM7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLDBCQUEwQjtJQURoRDtRQU9xQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUlsRCxjQUFTLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDeEIsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7U0FDbEMsQ0FBQyxDQUFDO0tBbUZKO0lBbEZDLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQzNDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVTLGtCQUFrQjtRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNM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QzNCLENBQUM7OEdBOUZtQiwwQkFBMEI7a0dBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEL0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1BcnJheSxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3JcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtVmFsdWVPZiB9IGZyb20gJy4vZm9ybS5tb2RlbCc7XHJcblxyXG4vKipcclxuICpcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGb3JtQXJyYXlDb21wb25lbnQ8RiBleHRlbmRzIEFic3RyYWN0Q29udHJvbDxhbnk+PlxyXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXHJcbntcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlRm9ybUFycmF5KCk6IEZvcm1BcnJheTxGPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlRm9ybUFycmF5SXRlbShpdGVtPzogRm9ybVZhbHVlT2Y8Rj4pOiBGO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCBvbkNoYW5nZT86ICh2YWx1ZTogRm9ybVZhbHVlT2Y8Rj5bXSkgPT4gdm9pZDtcclxuICBwcm90ZWN0ZWQgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcclxuXHJcbiAgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICBmb3JtQXJyYXk6IHRoaXMuY3JlYXRlRm9ybUFycmF5KClcclxuICB9KTtcclxuICBnZXQgZm9ybUFycmF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGlzdGVuVmFsdWVDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbGlzdGVuVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5mb3JtQXJyYXkuZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBGb3JtVmFsdWVPZjxGPltdKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUoaXRlbXM6IEZvcm1WYWx1ZU9mPEY+W10gfCB1bmRlZmluZWQgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLnByZXBhcmVDb250cm9scyhpdGVtcyk7XHJcblxyXG4gICAgaWYgKGl0ZW1zKSB7XHJcbiAgICAgIHRoaXMuZm9ybUFycmF5LnBhdGNoVmFsdWUoaXRlbXMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUFycmF5LnJlc2V0KHVuZGVmaW5lZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpc0Rpc2FibGVkID8gdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkgOiB0aGlzLmZvcm1Hcm91cC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZm9ybUFycmF5LmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZEZvcm1BcnJheTogdHJ1ZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHByZXBhcmVDb250cm9scyhpdGVtczogRm9ybVZhbHVlT2Y8Rj5bXSB8IHVuZGVmaW5lZCB8IG51bGwpOiB2b2lkIHtcclxuICAgIGl0ZW1zID0gaXRlbXMgfHwgW107XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUFycmF5LnZhbHVlLmxlbmd0aCA8IGl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFkZEV4dHJhQ29udHJvbHMoaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZvcm1BcnJheS52YWx1ZS5sZW5ndGggPiBpdGVtcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yZW1vdmVFeHRyYUNvbnRyb2xzKGl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkRXh0cmFDb250cm9scyhpdGVtczogRm9ybVZhbHVlT2Y8Rj5bXSk6IHZvaWQge1xyXG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUFycmF5LmF0KGluZGV4KTtcclxuICAgICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkucHVzaCh0aGlzLmNyZWF0ZUZvcm1BcnJheUl0ZW0oaXRlbSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRXh0cmFDb250cm9scyhpdGVtczogRm9ybVZhbHVlT2Y8Rj5bXSk6IHZvaWQge1xyXG4gICAgbGV0IGZvcm1BcnJheUluZGV4ID0gMDtcclxuICAgIHRoaXMuZm9ybUFycmF5LnZhbHVlLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghaXRlbXNbaW5kZXhdKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkucmVtb3ZlQXQoZm9ybUFycmF5SW5kZXgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvcm1BcnJheUluZGV4Kys7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,53 +0,0 @@
1
- import { Directive, EventEmitter, Input, Output } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class AbstractFormComponent {
5
- constructor() {
6
- this.submitted = new EventEmitter();
7
- this.destroy$ = new Subject();
8
- }
9
- get isSubmitDisabled() {
10
- return !this.form.valid || this.form.pristine;
11
- }
12
- get isCancelDisabled() {
13
- return !this.form.dirty;
14
- }
15
- getFormDefaultValue(model) {
16
- return model;
17
- }
18
- ngOnInit() {
19
- this.form.patchValue(this.getFormDefaultValue(this.formViewModel) || {}, { emitEvent: false });
20
- }
21
- submit() {
22
- if (!this.isSubmitDisabled) {
23
- this.submitted.emit({
24
- ...this.formViewModel,
25
- ...this.form.value
26
- });
27
- }
28
- else {
29
- Object.values(this.form.controls).forEach(control => control.updateValueAndValidity());
30
- }
31
- }
32
- cancel() {
33
- if (!this.isCancelDisabled) {
34
- this.form.reset(this.getFormDefaultValue(this.formViewModel), { emitEvent: false });
35
- this.form.markAsPristine();
36
- this.form.markAsUntouched();
37
- }
38
- }
39
- ngOnDestroy() {
40
- this.destroy$.next();
41
- this.destroy$.complete();
42
- }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
44
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractFormComponent, inputs: { formViewModel: "formViewModel" }, outputs: { submitted: "submitted" }, ngImport: i0 }); }
45
- }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormComponent, decorators: [{
47
- type: Directive
48
- }], propDecorators: { formViewModel: [{
49
- type: Input
50
- }], submitted: [{
51
- type: Output
52
- }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBZ0IscUJBQXFCO0lBRDNDO1FBSVksY0FBUyxHQUFvQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSXZDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBeUNuRDtJQXZDQyxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRVMsbUJBQW1CLENBQUMsS0FBUztRQUNyQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsR0FBRyxJQUFJLENBQUMsYUFBYTtnQkFDckIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7YUFDbkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUN6RixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3BGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0EvQ21CLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUQxQyxTQUFTOzhCQUVDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGb3JtQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGZvcm1WaWV3TW9kZWw/OiBUO1xyXG5cclxuICBAT3V0cHV0KCkgc3VibWl0dGVkOiBFdmVudEVtaXR0ZXI8VD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGFic3RyYWN0IGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgZ2V0IGlzU3VibWl0RGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuZm9ybS52YWxpZCB8fCB0aGlzLmZvcm0ucHJpc3RpbmU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNDYW5jZWxEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5mb3JtLmRpcnR5O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEZvcm1EZWZhdWx0VmFsdWUobW9kZWw/OiBUKTogVCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMuZ2V0Rm9ybURlZmF1bHRWYWx1ZSh0aGlzLmZvcm1WaWV3TW9kZWwpIHx8IHt9LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNTdWJtaXREaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnN1Ym1pdHRlZC5lbWl0KHtcclxuICAgICAgICAuLi50aGlzLmZvcm1WaWV3TW9kZWwsXHJcbiAgICAgICAgLi4udGhpcy5mb3JtLnZhbHVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm0uY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNDYW5jZWxEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQodGhpcy5nZXRGb3JtRGVmYXVsdFZhbHVlKHRoaXMuZm9ybVZpZXdNb2RlbCksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,60 +0,0 @@
1
- /**
2
- * This class implements ControlValueAccessor logic for a FormGroup.
3
- * NG_VALUE_ACCESSOR and NG_VALIDATORS must be provided in the component.
4
- *
5
- * The FormGroup changes will be automatically change the parent FormControl value.
6
- *
7
- * Example:
8
-
9
- */
10
- import { Directive } from '@angular/core';
11
- import { Subject, takeUntil } from 'rxjs';
12
- import * as i0 from "@angular/core";
13
- export class AbstractFormGroupComponent {
14
- constructor() {
15
- this.destroy$ = new Subject();
16
- }
17
- ngAfterViewInit() {
18
- this.listenValueChanges();
19
- }
20
- listenValueChanges() {
21
- this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {
22
- if (this.onChange) {
23
- this.onChange(this.formGroup.getRawValue());
24
- }
25
- });
26
- }
27
- registerOnChange(fn) {
28
- this.onChange = fn;
29
- }
30
- registerOnTouched(fn) {
31
- this.onTouched = fn;
32
- }
33
- writeValue(formValue) {
34
- if (formValue) {
35
- this.formGroup.patchValue(formValue, { emitEvent: false });
36
- }
37
- else {
38
- this.formGroup.reset(undefined, { emitEvent: false });
39
- }
40
- }
41
- setDisabledState(isDisabled) {
42
- isDisabled ? this.formGroup.disable({ emitEvent: false }) : this.formGroup.enable({ emitEvent: false });
43
- }
44
- validate() {
45
- if (this.formGroup.invalid) {
46
- return { invalidFormGroup: true };
47
- }
48
- return null;
49
- }
50
- ngOnDestroy() {
51
- this.destroy$.next();
52
- this.destroy$.complete();
53
- }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractFormGroupComponent, ngImport: i0 }); }
56
- }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormGroupComponent, decorators: [{
58
- type: Directive
59
- }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFpQixTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSTFDLE1BQU0sT0FBZ0IsMEJBQTBCO0lBRGhEO1FBUXFCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBZ0RuRDtJQTVDQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVTLGtCQUFrQjtRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUE4QztRQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQStCO1FBQ3hDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNwQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQXREbUIsMEJBQTBCO2tHQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBRC9DLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGxvZ2ljIGZvciBhIEZvcm1Hcm91cC5cclxuICogTkdfVkFMVUVfQUNDRVNTT1IgYW5kIE5HX1ZBTElEQVRPUlMgbXVzdCBiZSBwcm92aWRlZCBpbiB0aGUgY29tcG9uZW50LlxyXG4gKlxyXG4gKiBUaGUgRm9ybUdyb3VwIGNoYW5nZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNoYW5nZSB0aGUgcGFyZW50IEZvcm1Db250cm9sIHZhbHVlLlxyXG4gKlxyXG4gKiBFeGFtcGxlOlxyXG5cclxuICovXHJcblxyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZsYXRGb3JtQ29udHJvbHNPZiwgRm9ybVZhbHVlT2YgfSBmcm9tICcuL2Zvcm0ubW9kZWwnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZvcm1Hcm91cENvbXBvbmVudDxcclxuICBUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogYW55IH0sXHJcbiAgRiBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfSA9IEZsYXRGb3JtQ29udHJvbHNPZjxUPlxyXG4+IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XHJcbntcclxuICBhYnN0cmFjdCBmb3JtR3JvdXA6IEZvcm1Hcm91cDxGPjtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcm90ZWN0ZWQgb25DaGFuZ2U/OiAodmFsdWU6IEZvcm1WYWx1ZU9mPEZvcm1Hcm91cDxGPj4pID0+IHZvaWQ7XHJcbiAgcHJvdGVjdGVkIG9uVG91Y2hlZD86ICgpID0+IHZvaWQ7XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGlzdGVuVmFsdWVDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbGlzdGVuVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBGb3JtVmFsdWVPZjxGb3JtR3JvdXA8Rj4+KSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUoZm9ybVZhbHVlOiBUIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKGZvcm1WYWx1ZSkge1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKGZvcm1WYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAucmVzZXQodW5kZWZpbmVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlzRGlzYWJsZWQgPyB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSA6IHRoaXMuZm9ybUdyb3VwLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuaW52YWxpZCkge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkRm9ybUdyb3VwOiB0cnVlIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,99 +0,0 @@
1
- import { Directive, Input, Optional } from '@angular/core';
2
- import { ControlContainer, FormArray } from '@angular/forms';
3
- import { BehaviorSubject, Subject, combineLatest } from 'rxjs';
4
- import { takeUntil } from 'rxjs/operators';
5
- import { getErrorMessage } from '../error-messages';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
8
- export class AbstractInputComponent {
9
- set errorMessage(errorMessage) {
10
- this.errorMessage$.next(errorMessage);
11
- }
12
- constructor(controlContainer) {
13
- this.controlContainer = controlContainer;
14
- this.formControlName = '';
15
- this.label = '';
16
- this.readonly = false;
17
- this.required = false;
18
- this.disabled = false;
19
- this.destroy$ = new Subject();
20
- this.errorMessage$ = new BehaviorSubject('');
21
- this.model$ = combineLatest({
22
- errorMessage: this.errorMessage$
23
- });
24
- }
25
- ngOnInit() {
26
- if (this.controlContainer?.control instanceof FormArray) {
27
- this.parentControl = this.controlContainer?.control.at(+this.formControlName);
28
- }
29
- else {
30
- this.parentControl = this.controlContainer?.control?.get(this.formControlName);
31
- }
32
- this.setRequiredState();
33
- this.listenStatusChanges();
34
- }
35
- setRequiredState() {
36
- if (!this.parentControl || !this.parentControl?.validator) {
37
- return;
38
- }
39
- const validators = this.parentControl?.validator({ value: '' });
40
- if (validators && Object.keys(validators).includes('required')) {
41
- this.required = true;
42
- }
43
- }
44
- onBlur() {
45
- if (this.onTouched) {
46
- this.onTouched();
47
- }
48
- this.setErrors();
49
- }
50
- registerOnChange(fn) {
51
- this.onChange = fn;
52
- }
53
- registerOnTouched(fn) {
54
- this.onTouched = fn;
55
- }
56
- setDisabledState(isDisabled) {
57
- this.disabled = isDisabled;
58
- }
59
- listenStatusChanges() {
60
- this.parentControl?.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(() => this.setErrors());
61
- }
62
- setErrors() {
63
- if (this.parentControl?.errors) {
64
- const errorKey = Object.keys(this.parentControl?.errors)[0];
65
- const errorObj = this.parentControl?.errors[`${errorKey}`];
66
- this.errorMessage$.next(getErrorMessage(errorKey, {
67
- fieldName: this.label,
68
- ...errorObj
69
- }));
70
- }
71
- else {
72
- this.errorMessage$.next('');
73
- }
74
- }
75
- ngOnDestroy() {
76
- this.destroy$.next();
77
- this.destroy$.complete();
78
- }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractInputComponent, deps: [{ token: i1.ControlContainer, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
80
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractInputComponent, inputs: { formControlName: "formControlName", errorMessage: "errorMessage", label: "label", readonly: "readonly", required: "required", disabled: "disabled" }, ngImport: i0 }); }
81
- }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractInputComponent, decorators: [{
83
- type: Directive
84
- }], ctorParameters: () => [{ type: i1.ControlContainer, decorators: [{
85
- type: Optional
86
- }] }], propDecorators: { formControlName: [{
87
- type: Input
88
- }], errorMessage: [{
89
- type: Input
90
- }], label: [{
91
- type: Input
92
- }], readonly: [{
93
- type: Input
94
- }], required: [{
95
- type: Input
96
- }], disabled: [{
97
- type: Input
98
- }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtaW5wdXQtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2lsL3VpL2NvbW1vbi9mb3JtLWN2YS9zcmMvbGliL21vZGVscy9hYnN0cmFjdC1pbnB1dC1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQW1CLGdCQUFnQixFQUF3QixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR3BELE1BQU0sT0FBZ0Isc0JBQXNCO0lBRTFDLElBQWEsWUFBWSxDQUFDLFlBQW9CO1FBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFnQkQsWUFBeUMsZ0JBQW1DO1FBQW5DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFuQm5FLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBSXJCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUtQLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQy9CLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFbkUsV0FBTSxHQUFHLGFBQWEsQ0FBQztZQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDakMsQ0FBQyxDQUFDO0lBRTRFLENBQUM7SUFFaEYsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sWUFBWSxTQUFTLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hGLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQzFELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFxQixDQUFDLENBQUM7UUFDbkYsSUFBSSxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBNkI7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFJUyxtQkFBbUI7UUFDM0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVTLFNBQVM7UUFDakIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQy9CLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLGVBQWUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3hCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDckIsR0FBRyxRQUFRO2FBQ1osQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQXRGbUIsc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRDNDLFNBQVM7OzBCQXFCSyxRQUFRO3lDQW5CWixlQUFlO3NCQUF2QixLQUFLO2dCQUNPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vZXJyb3ItbWVzc2FnZXMnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdElucHV0Q29tcG9uZW50PFQgPSBzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWUgPSAnJztcclxuICBASW5wdXQoKSBzZXQgZXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSQubmV4dChlcnJvck1lc3NhZ2UpO1xyXG4gIH1cclxuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xyXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBwcm90ZWN0ZWQgcGFyZW50Q29udHJvbD86IEFic3RyYWN0Q29udHJvbCB8IG51bGw7XHJcbiAgcHJvdGVjdGVkIG9uQ2hhbmdlPzogKHZhbHVlOiBUIHwgbnVsbCkgPT4gdm9pZDtcclxuICBwcm90ZWN0ZWQgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBlcnJvck1lc3NhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgbW9kZWwkID0gY29tYmluZUxhdGVzdCh7XHJcbiAgICBlcnJvck1lc3NhZ2U6IHRoaXMuZXJyb3JNZXNzYWdlJFxyXG4gIH0pO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI/OiBDb250cm9sQ29udGFpbmVyKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbnRyb2xDb250YWluZXI/LmNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgdGhpcy5wYXJlbnRDb250cm9sID0gdGhpcy5jb250cm9sQ29udGFpbmVyPy5jb250cm9sLmF0KCt0aGlzLmZvcm1Db250cm9sTmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhcmVudENvbnRyb2wgPSB0aGlzLmNvbnRyb2xDb250YWluZXI/LmNvbnRyb2w/LmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFJlcXVpcmVkU3RhdGUoKTtcclxuICAgIHRoaXMubGlzdGVuU3RhdHVzQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRSZXF1aXJlZFN0YXRlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnBhcmVudENvbnRyb2wgfHwgIXRoaXMucGFyZW50Q29udHJvbD8udmFsaWRhdG9yKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5wYXJlbnRDb250cm9sPy52YWxpZGF0b3IoeyB2YWx1ZTogJycgfSBhcyBBYnN0cmFjdENvbnRyb2wpO1xyXG4gICAgaWYgKHZhbGlkYXRvcnMgJiYgT2JqZWN0LmtleXModmFsaWRhdG9ycykuaW5jbHVkZXMoJ3JlcXVpcmVkJykpIHtcclxuICAgICAgdGhpcy5yZXF1aXJlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQpIHtcclxuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0RXJyb3JzKCk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IFQgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBhYnN0cmFjdCB3cml0ZVZhbHVlKHZhbHVlOiBUKTogdm9pZDtcclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RlblN0YXR1c0NoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmVudENvbnRyb2w/LnN0YXR1c0NoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldEVycm9ycygpKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzZXRFcnJvcnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRDb250cm9sPy5lcnJvcnMpIHtcclxuICAgICAgY29uc3QgZXJyb3JLZXkgPSBPYmplY3Qua2V5cyh0aGlzLnBhcmVudENvbnRyb2w/LmVycm9ycylbMF07XHJcbiAgICAgIGNvbnN0IGVycm9yT2JqID0gdGhpcy5wYXJlbnRDb250cm9sPy5lcnJvcnNbYCR7ZXJyb3JLZXl9YF07XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlJC5uZXh0KFxyXG4gICAgICAgIGdldEVycm9yTWVzc2FnZShlcnJvcktleSwge1xyXG4gICAgICAgICAgZmllbGROYW1lOiB0aGlzLmxhYmVsLFxyXG4gICAgICAgICAgLi4uZXJyb3JPYmpcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UkLm5leHQoJycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdpbC91aS9jb21tb24vZm9ybS1jdmEvc3JjL2xpYi9tb2RlbHMvZm9ybS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBGb3JtQ29udHJvbCBvciBGb3JtR3JvdXAgdHlwZXMgdG8gdXNlZCBpbiBhIEZvcm1Hcm91cCB1c2luZyBhIGludGVyZmFjZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgRm9ybUNvbnRyb2xzT2Y8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xyXG4gIFtLIGluIGtleW9mIFJlcXVpcmVkPFQ+XTogUmVxdWlyZWQ8VD5bS10gZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgICA/IFJlcXVpcmVkPFQ+W0tdIGV4dGVuZHMgYW55W11cclxuICAgICAgPyBGb3JtQ29udHJvbDxUW0tdIHwgbnVsbD5cclxuICAgICAgOiBGb3JtR3JvdXA8Rm9ybUNvbnRyb2xzT2Y8UmVxdWlyZWQ8VD5bS10+PlxyXG4gICAgOiBGb3JtQ29udHJvbDxUW0tdIHwgbnVsbD47XHJcbn07XHJcblxyXG4vKipcclxuICogV3JhcCBldmVyeSBwcm9wZXJ0eSBpbiB0aGUgUmVjb3JkIFQgaW4gYSBGb3JtQ29udHJvbCB0eXBlXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBGbGF0Rm9ybUNvbnRyb2xzT2Y8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xyXG4gIFtLIGluIGtleW9mIFRdOiBGb3JtQ29udHJvbDxUW0tdIHwgbnVsbD47XHJcbn07XHJcblxyXG4vKipcclxuICogR2l2ZXMgdGhlIGZvcm0gdmFsdWUgdHlwZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgRm9ybVZhbHVlT2Y8VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbDxhbnk+PiA9IFRbJ3ZhbHVlJ107XHJcbiJdfQ==
@@ -1,15 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import * as i0 from "@angular/core";
4
- export class NgilUiCommonFormCvaModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, imports: [CommonModule] }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, imports: [CommonModule] }); }
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- imports: [CommonModule]
13
- }]
14
- }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdpbC11aS1jb21tb24tZm9ybS1jdmEubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2lsL3VpL2NvbW1vbi9mb3JtLWN2YS9zcmMvbGliL25naWwtdWktY29tbW9uLWZvcm0tY3ZhLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLHlCQUF5Qjs4R0FBekIseUJBQXlCOytHQUF6Qix5QkFBeUIsWUFGMUIsWUFBWTsrR0FFWCx5QkFBeUIsWUFGMUIsWUFBWTs7MkZBRVgseUJBQXlCO2tCQUhyQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdpbFVpQ29tbW9uRm9ybUN2YU1vZHVsZSB7fVxyXG4iXX0=
@@ -1,17 +0,0 @@
1
- import { forwardRef } from '@angular/core';
2
- import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- export function createControlValueAccessorProviders(component) {
4
- return [
5
- {
6
- provide: NG_VALUE_ACCESSOR,
7
- useExisting: forwardRef(() => component),
8
- multi: true
9
- },
10
- {
11
- provide: NG_VALIDATORS,
12
- useExisting: forwardRef(() => component),
13
- multi: true
14
- }
15
- ];
16
- }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS1hY2Nlc3Nvci51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2lsL3VpL2NvbW1vbi9mb3JtLWN2YS9zcmMvbGliL3V0aWxzL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxNQUFNLFVBQVUsbUNBQW1DLENBQUMsU0FBd0I7SUFDMUUsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN4QyxLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsYUFBYTtZQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN4QyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3J3YXJkUmVmLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRyb2xWYWx1ZUFjY2Vzc29yUHJvdmlkZXJzKGNvbXBvbmVudDogVHlwZTx1bmtub3duPikge1xyXG4gIHJldHVybiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBjb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gY29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdO1xyXG59XHJcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdpbC1mb3JtLWN2YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdpbC91aS9jb21tb24vZm9ybS1jdmEvc3JjL25naWwtZm9ybS1jdmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
package/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- export * from './lib/models/abstract-form-array-component';
2
- export * from './lib/models/abstract-form-component';
3
- export * from './lib/models/abstract-form-group.component';
4
- export * from './lib/models/abstract-input-component';
5
- export * from './lib/models/form.model';
6
- export * from './lib/ngil-ui-common-form-cva.module';
7
- export * from './lib/utils/control-value-accessor.util';
@@ -1 +0,0 @@
1
- export declare function getErrorMessage(errorKey: string, replacements: Record<string, string>): string;
@@ -1,32 +0,0 @@
1
- import { AfterViewInit, OnDestroy } from '@angular/core';
2
- import { AbstractControl, ControlValueAccessor, FormArray, FormGroup, ValidationErrors, Validator } from '@angular/forms';
3
- import { Subject } from 'rxjs';
4
- import { FormValueOf } from './form.model';
5
- import * as i0 from "@angular/core";
6
- /**
7
- *
8
- */
9
- export declare abstract class AbstractFormArrayComponent<F extends AbstractControl<any>> implements AfterViewInit, OnDestroy, ControlValueAccessor, Validator {
10
- protected abstract createFormArray(): FormArray<F>;
11
- protected abstract createFormArrayItem(item?: FormValueOf<F>): F;
12
- protected readonly destroy$: Subject<void>;
13
- protected onChange?: (value: FormValueOf<F>[]) => void;
14
- protected onTouched?: () => void;
15
- formGroup: FormGroup<{
16
- formArray: FormArray<F>;
17
- }>;
18
- get formArray(): FormArray<F>;
19
- ngAfterViewInit(): void;
20
- protected listenValueChanges(): void;
21
- registerOnChange(fn: (value: FormValueOf<F>[]) => void): void;
22
- registerOnTouched(fn: () => void): void;
23
- writeValue(items: FormValueOf<F>[] | undefined | null): void;
24
- setDisabledState(isDisabled: boolean): void;
25
- validate(): ValidationErrors | null;
26
- protected prepareControls(items: FormValueOf<F>[] | undefined | null): void;
27
- private addExtraControls;
28
- private removeExtraControls;
29
- ngOnDestroy(): void;
30
- static ɵfac: i0.ɵɵFactoryDeclaration<AbstractFormArrayComponent<any>, never>;
31
- static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractFormArrayComponent<any>, never, never, {}, {}, never, never, false, never>;
32
- }
@@ -1,19 +0,0 @@
1
- import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
- import { FormGroup } from '@angular/forms';
3
- import { Subject } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- export declare abstract class AbstractFormComponent<T> implements OnDestroy, OnInit {
6
- formViewModel?: T;
7
- submitted: EventEmitter<T>;
8
- abstract form: FormGroup;
9
- protected readonly destroy$: Subject<void>;
10
- get isSubmitDisabled(): boolean;
11
- get isCancelDisabled(): boolean;
12
- protected getFormDefaultValue(model?: T): T | undefined;
13
- ngOnInit(): void;
14
- submit(): void;
15
- cancel(): void;
16
- ngOnDestroy(): void;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<AbstractFormComponent<any>, never>;
18
- static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractFormComponent<any>, never, never, { "formViewModel": { "alias": "formViewModel"; "required": false; }; }, { "submitted": "submitted"; }, never, never, false, never>;
19
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * This class implements ControlValueAccessor logic for a FormGroup.
3
- * NG_VALUE_ACCESSOR and NG_VALIDATORS must be provided in the component.
4
- *
5
- * The FormGroup changes will be automatically change the parent FormControl value.
6
- *
7
- * Example:
8
-
9
- */
10
- import { AfterViewInit, OnDestroy } from '@angular/core';
11
- import { AbstractControl, ControlValueAccessor, FormGroup, ValidationErrors, Validator } from '@angular/forms';
12
- import { Subject } from 'rxjs';
13
- import { FlatFormControlsOf, FormValueOf } from './form.model';
14
- import * as i0 from "@angular/core";
15
- export declare abstract class AbstractFormGroupComponent<T extends {
16
- [K in keyof T]: any;
17
- }, F extends {
18
- [K in keyof T]: AbstractControl<any, any>;
19
- } = FlatFormControlsOf<T>> implements ControlValueAccessor, Validator, OnDestroy, AfterViewInit {
20
- abstract formGroup: FormGroup<F>;
21
- protected readonly destroy$: Subject<void>;
22
- protected onChange?: (value: FormValueOf<FormGroup<F>>) => void;
23
- protected onTouched?: () => void;
24
- ngAfterViewInit(): void;
25
- protected listenValueChanges(): void;
26
- registerOnChange(fn: (value: FormValueOf<FormGroup<F>>) => void): void;
27
- registerOnTouched(fn: () => void): void;
28
- writeValue(formValue: T | undefined | null): void;
29
- setDisabledState(isDisabled: boolean): void;
30
- validate(): ValidationErrors | null;
31
- ngOnDestroy(): void;
32
- static ɵfac: i0.ɵɵFactoryDeclaration<AbstractFormGroupComponent<any, any>, never>;
33
- static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractFormGroupComponent<any, any>, never, never, {}, {}, never, never, false, never>;
34
- }
@@ -1,34 +0,0 @@
1
- import { OnDestroy, OnInit } from '@angular/core';
2
- import { AbstractControl, ControlContainer, ControlValueAccessor } from '@angular/forms';
3
- import { BehaviorSubject, Subject } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- export declare abstract class AbstractInputComponent<T = string> implements OnInit, ControlValueAccessor, OnDestroy {
6
- private readonly controlContainer?;
7
- formControlName: string;
8
- set errorMessage(errorMessage: string);
9
- label: string;
10
- readonly: boolean;
11
- required: boolean;
12
- disabled: boolean;
13
- protected parentControl?: AbstractControl | null;
14
- protected onChange?: (value: T | null) => void;
15
- protected onTouched?: () => void;
16
- protected readonly destroy$: Subject<void>;
17
- protected readonly errorMessage$: BehaviorSubject<string>;
18
- model$: import("rxjs").Observable<{
19
- errorMessage: string;
20
- }>;
21
- constructor(controlContainer?: ControlContainer | undefined);
22
- ngOnInit(): void;
23
- private setRequiredState;
24
- onBlur(): void;
25
- registerOnChange(fn: (value: T | null) => void): void;
26
- registerOnTouched(fn: () => void): void;
27
- setDisabledState(isDisabled: boolean): void;
28
- abstract writeValue(value: T): void;
29
- protected listenStatusChanges(): void;
30
- protected setErrors(): void;
31
- ngOnDestroy(): void;
32
- static ɵfac: i0.ɵɵFactoryDeclaration<AbstractInputComponent<any>, [{ optional: true; }]>;
33
- static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractInputComponent<any>, never, never, { "formControlName": { "alias": "formControlName"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "label": { "alias": "label"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, false, never>;
34
- }
@@ -1,17 +0,0 @@
1
- import { AbstractControl, FormControl, FormGroup } from '@angular/forms';
2
- /**
3
- * Create FormControl or FormGroup types to used in a FormGroup using a interface
4
- */
5
- export type FormControlsOf<T extends Record<string, any>> = {
6
- [K in keyof Required<T>]: Required<T>[K] extends Record<string, any> ? Required<T>[K] extends any[] ? FormControl<T[K] | null> : FormGroup<FormControlsOf<Required<T>[K]>> : FormControl<T[K] | null>;
7
- };
8
- /**
9
- * Wrap every property in the Record T in a FormControl type
10
- */
11
- export type FlatFormControlsOf<T extends Record<string, any>> = {
12
- [K in keyof T]: FormControl<T[K] | null>;
13
- };
14
- /**
15
- * Gives the form value type
16
- */
17
- export type FormValueOf<T extends AbstractControl<any>> = T['value'];
@@ -1,7 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "@angular/common";
3
- export declare class NgilUiCommonFormCvaModule {
4
- static ɵfac: i0.ɵɵFactoryDeclaration<NgilUiCommonFormCvaModule, never>;
5
- static ɵmod: i0.ɵɵNgModuleDeclaration<NgilUiCommonFormCvaModule, never, [typeof i1.CommonModule], never>;
6
- static ɵinj: i0.ɵɵInjectorDeclaration<NgilUiCommonFormCvaModule>;
7
- }
@@ -1,6 +0,0 @@
1
- import { Type } from '@angular/core';
2
- export declare function createControlValueAccessorProviders(component: Type<unknown>): {
3
- provide: import("@angular/core").InjectionToken<readonly import("@angular/forms").ControlValueAccessor[]>;
4
- useExisting: Type<any>;
5
- multi: boolean;
6
- }[];