]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/shared/shared-forms/form-validator.service.ts
Support ICU in TS components
[github/Chocobozzz/PeerTube.git] / client / src / app / shared / shared-forms / form-validator.service.ts
index 055fbb2d956a0a64ebc24f51fbc5300ecaad1ff8..f67d5bb33529aab05cf120a36c4953800160526b 100644 (file)
@@ -1,5 +1,5 @@
 import { Injectable } from '@angular/core'
-import { FormBuilder, FormControl, FormGroup, ValidatorFn } from '@angular/forms'
+import { AsyncValidatorFn, FormArray, FormBuilder, FormControl, FormGroup, ValidatorFn } from '@angular/forms'
 import { BuildFormArgument, BuildFormDefaultValues } from '../form-validators/form-validator.model'
 import { FormReactiveErrors, FormReactiveValidationMessages } from './form-reactive'
 
@@ -30,7 +30,7 @@ export class FormValidatorService {
 
       if (field?.MESSAGES) validationMessages[name] = field.MESSAGES as { [ name: string ]: string }
 
-      const defaultValue = defaultValues[name] || ''
+      const defaultValue = defaultValues[name] ?? ''
 
       if (field?.VALIDATORS) group[name] = [ defaultValue, field.VALIDATORS ]
       else group[name] = [ defaultValue ]
@@ -68,11 +68,23 @@ export class FormValidatorService {
 
       form.addControl(
         name,
-        new FormControl(defaultValue, field?.VALIDATORS as ValidatorFn[])
+        new FormControl(defaultValue, field?.VALIDATORS as ValidatorFn[], field?.ASYNC_VALIDATORS as AsyncValidatorFn[])
       )
     }
   }
 
+  updateTreeValidity (group: FormGroup | FormArray): void {
+    for (const key of Object.keys(group.controls)) {
+      const abstractControl = group.controls[key] as FormControl
+
+      if (abstractControl instanceof FormGroup || abstractControl instanceof FormArray) {
+        this.updateTreeValidity(abstractControl)
+      } else {
+        abstractControl.updateValueAndValidity({ emitEvent: false })
+      }
+    }
+  }
+
   private isRecursiveField (field: any) {
     return field && typeof field === 'object' && !field.MESSAGES && !field.VALIDATORS
   }