X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fforms%2Fform-validators%2Fform-validator.service.ts;h=249fdf1198bb418e6de8464ec4a9dfa856b6c111;hb=3866f1a02f73665541468fbadcc3cd2cc459aef2;hp=19a8bef25c6f008f4c030e90144ebdab44adc8be;hpb=a4101923e699e49ceb9ff36e971c75417fafc9f0;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/forms/form-validators/form-validator.service.ts b/client/src/app/shared/forms/form-validators/form-validator.service.ts index 19a8bef25..249fdf119 100644 --- a/client/src/app/shared/forms/form-validators/form-validator.service.ts +++ b/client/src/app/shared/forms/form-validators/form-validator.service.ts @@ -7,10 +7,10 @@ export type BuildFormValidator = { MESSAGES: { [ name: string ]: string } } export type BuildFormArgument = { - [ id: string ]: BuildFormValidator + [ id: string ]: BuildFormValidator | BuildFormArgument } export type BuildFormDefaultValues = { - [ name: string ]: string | string[] + [ name: string ]: string | string[] | BuildFormDefaultValues } @Injectable() @@ -29,7 +29,16 @@ export class FormValidatorService { formErrors[name] = '' const field = obj[name] - if (field && field.MESSAGES) validationMessages[name] = field.MESSAGES + if (this.isRecursiveField(field)) { + const result = this.buildForm(field as BuildFormArgument, defaultValues[name] as BuildFormDefaultValues) + group[name] = result.form + formErrors[name] = result.formErrors + validationMessages[name] = result.validationMessages + + continue + } + + if (field && field.MESSAGES) validationMessages[name] = field.MESSAGES as { [ name: string ]: string } const defaultValue = defaultValues[name] || '' @@ -52,13 +61,27 @@ export class FormValidatorService { formErrors[name] = '' const field = obj[name] - if (field && field.MESSAGES) validationMessages[name] = field.MESSAGES + if (this.isRecursiveField(field)) { + this.updateForm( + form[name], + formErrors[name] as FormReactiveErrors, + validationMessages[name] as FormReactiveValidationMessages, + obj[name] as BuildFormArgument, + defaultValues[name] as BuildFormDefaultValues + ) + continue + } + + if (field && field.MESSAGES) validationMessages[name] = field.MESSAGES as { [ name: string ]: string } const defaultValue = defaultValues[name] || '' - if (field && field.VALIDATORS) form.addControl(name, new FormControl(defaultValue, field.VALIDATORS)) + if (field && field.VALIDATORS) form.addControl(name, new FormControl(defaultValue, field.VALIDATORS as ValidatorFn[])) else form.addControl(name, new FormControl(defaultValue)) } } + private isRecursiveField (field: any) { + return field && typeof field === 'object' && !field.MESSAGES && !field.VALIDATORS + } }