]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/shared/forms/form-validators/form-validator.service.ts
Blank instead of null for docker env
[github/Chocobozzz/PeerTube.git] / client / src / app / shared / forms / form-validators / form-validator.service.ts
CommitLineData
d18d6478
C
1import { FormBuilder, FormControl, FormGroup, ValidatorFn } from '@angular/forms'
2import { Injectable } from '@angular/core'
3import { FormReactiveErrors, FormReactiveValidationMessages } from '@app/shared/forms/form-reactive'
4import { I18n } from '@ngx-translate/i18n-polyfill'
5
6export type BuildFormArgument = {
7 [ id: string ]: {
8 VALIDATORS: ValidatorFn[],
9 MESSAGES: { [ name: string ]: string }
10 }
11}
12export type BuildFormDefaultValues = {
13 [ name: string ]: string | string[]
14}
15
16@Injectable()
17export class FormValidatorService {
18
19 constructor (
20 private formBuilder: FormBuilder,
21 private i18n: I18n
22 ) {}
23
24 buildForm (obj: BuildFormArgument, defaultValues: BuildFormDefaultValues = {}) {
25 const formErrors: FormReactiveErrors = {}
26 const validationMessages: FormReactiveValidationMessages = {}
27 const group: { [key: string]: any } = {}
28
29 for (const name of Object.keys(obj)) {
30 formErrors[name] = ''
31
32 const field = obj[name]
33 if (field && field.MESSAGES) validationMessages[name] = field.MESSAGES
34
35 const defaultValue = defaultValues[name] || ''
36
37 if (field && field.VALIDATORS) group[name] = [ defaultValue, field.VALIDATORS ]
38 else group[name] = [ defaultValue ]
39 }
40
41 const form = this.formBuilder.group(group)
42 return { form, formErrors, validationMessages }
43 }
44
45 updateForm (
46 form: FormGroup,
47 formErrors: FormReactiveErrors,
48 validationMessages: FormReactiveValidationMessages,
49 obj: BuildFormArgument,
50 defaultValues: BuildFormDefaultValues = {}
51 ) {
52 for (const name of Object.keys(obj)) {
53 formErrors[name] = ''
54
55 const field = obj[name]
56 if (field && field.MESSAGES) validationMessages[name] = field.MESSAGES
57
58 const defaultValue = defaultValues[name] || ''
59
60 if (field && field.VALIDATORS) form.addControl(name, new FormControl(defaultValue, field.VALIDATORS))
61 else form.addControl(name, new FormControl(defaultValue))
62 }
63 }
64
65}