{"version":3,"file":"ngx-reactive-form-class-validator.mjs","sources":["../../../../libs/ngx-reactive-form-class-validator/src/lib/class-validator-form-array.ts","../../../../libs/ngx-reactive-form-class-validator/src/lib/class-validator-form-control.ts","../../../../libs/ngx-reactive-form-class-validator/src/lib/class-validator-form-group.ts","../../../../libs/ngx-reactive-form-class-validator/src/lib/class-validator-form-builder.service.ts","../../../../libs/ngx-reactive-form-class-validator/src/lib/class-validator-form-builder.module.ts","../../../../libs/ngx-reactive-form-class-validator/src/ngx-reactive-form-class-validator.ts"],"sourcesContent":["import {\n  AbstractControl,\n  AbstractControlOptions,\n  AsyncValidatorFn,\n  FormArray,\n  ValidatorFn\n} from '@angular/forms';\n\nexport class ClassValidatorFormArray extends FormArray {\n  public constructor(\n    controls: AbstractControl[],\n    validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\n    asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null,\n  ) {\n    super(\n      controls,\n      validatorOrOpts,\n      asyncValidator,\n    );\n  }\n}\n","import {\n  AbstractControlOptions,\n  AsyncValidatorFn,\n  FormControl,\n  ValidationErrors,\n  ValidatorFn,\n  Validators\n} from '@angular/forms';\nimport { validateSync } from 'class-validator';\n\nexport class ClassValidatorFormControl<T = any> extends FormControl<T | any> {\n  private formGroupClassValue: any;\n  private name: string;\n\n  /**\n   * Creates a new `ClassValidatorFormControl` instance.\n   *\n   * @param formState Initializes the control with an initial value,\n   * or an object that defines the initial value and disabled state.\n   *\n   * @param validatorOrOpts A synchronous validator function, or an array of\n   * such functions, or an `AbstractControlOptions` object that contains validation functions\n   * and a validation trigger.\n   *\n   * @param asyncValidator A single async validator or array of async validator functions\n   *\n   */\n  public constructor(\n    formState?: any,\n    validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\n    asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n  ) {\n    super(formState, validatorOrOpts, asyncValidator);\n\n    this.setValidatorsWithDynamicValidation(validatorOrOpts);\n  }\n\n  /**\n   * @internal\n   */\n  public setNameAndFormGroupClassValue(name: string, value: any, eagerValidation: boolean = false): void {\n    this.name = name;\n    this.formGroupClassValue = value;\n\n    if (eagerValidation) {\n      this.updateValueAndValidity();\n    }\n  }\n\n  /**\n   * Sets the synchronous validators that are active on this control as well as resetting the dynamic `class-validator`.  Calling\n   * this overwrites any existing sync validators.\n   *\n   * When you add or remove a validator at run time, you must call\n   * `updateValueAndValidity()` for the new validation to take effect.\n   *\n   */\n  public setValidatorsWithDynamicValidation(newValidator: ValidatorFn | ValidatorFn[] | AbstractControlOptions | undefined): void {\n    this.setValidators(\n      newValidator\n        ? [this.composeValidators(newValidator), this.dynamicValidator]\n        : this.dynamicValidator);\n  }\n\n  private composeValidators(validator: ValidatorFn | ValidatorFn[] | AbstractControlOptions): ValidatorFn {\n    if (validator instanceof Array) {\n      return Validators.compose(validator);\n    }\n\n    if ((validator as AbstractControlOptions).validators) {\n      return this.composeValidators((validator as AbstractControlOptions).validators);\n    }\n\n    return validator as ValidatorFn;\n  }\n\n  private readonly dynamicValidator = (control: ClassValidatorFormControl): ValidationErrors => {\n    this.formGroupClassValue[this.name] = control.value;\n\n    const validationErrors = validateSync(this.formGroupClassValue)\n      .find(error => error.property === this.name);\n\n    return validationErrors ? validationErrors.constraints : undefined;\n  };\n}\n","import {\n  AbstractControl,\n  AbstractControlOptions,\n  AsyncValidatorFn,\n  FormGroup,\n  ValidatorFn,\n  ɵOptionalKeys\n} from '@angular/forms';\n\nimport { ClassValidatorFormControl } from './class-validator-form-control';\nimport { ClassType } from './types';\nimport { ClassValidatorFormGroupOptions } from './class-validator-form-group-options.interface';\n\nexport class ClassValidatorFormGroup<TControl extends {\n  [K in keyof TControl]: AbstractControl<any>;\n} = any> extends FormGroup<TControl> {\n  private classValue: any;\n\n  /**\n   * Creates a new `ClassValidatorFormGroup` instance.\n   *\n   * @param formClassType the `classType` containing `class-validator` decorators to be used to validate form\n   * @param controls A collection of child controls. The key for each child is the name\n   * under which it is registered.\n   *\n   * @param validatorOrOpts A synchronous validator function, or an array of\n   * such functions, or an `AbstractControlOptions` object that contains validation functions\n   * and a validation trigger.\n   *\n   * @param asyncValidator A single async validator or array of async validator functions\n   *\n   * @param options Options object of type `ClassValidatorFormGroupOptions` allowing\n   * to define eagerValidation that validate controls immediately upon creation. Default is false (validators are executed starting from ngAfterViewInit hook)\n   * See https://github.com/abarghoud/ngx-reactive-form-class-validator/issues/47\n   *\n   */\n  public constructor(\n    private readonly formClassType: ClassType<any>,\n    controls: TControl,\n    validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\n    asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null,\n    private readonly options?: ClassValidatorFormGroupOptions,\n  ) {\n    super(controls, validatorOrOpts, asyncValidator);\n\n    this.assignFormValueToClassValue();\n    this.setClassValidatorControlsContainerGroupClassValue();\n  }\n\n  /**\n   * Add a control to this group.\n   *\n   * This method also updates the value and validity of the control.\n   *\n   * @param name The control name to add to the collection\n   * @param control Provides the control for the given name\n   * @param options Specifies whether this FormGroup instance should emit events after a new\n   *     control is added.\n   * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n   * `valueChanges` observables emit events with the latest status and value when the control is\n   * added. When false, no events are emitted.\n   *\n   */\n  public addControl<K extends string&keyof TControl>(\n    name: K,\n    control: Required<TControl>[K],\n    options?: {\n      emitEvent?: boolean;\n    },\n  ): void {\n    super.addControl(name, control, options);\n    this.assignFormValueToClassValue();\n    this.setClassValidatorControlsContainerGroupClassValue();\n  }\n\n  /**\n   * Remove a control from this group.\n   *\n   * @param name The control name to remove from the collection\n   * @param options Specifies whether this FormGroup instance should emit events after a\n   *     control is removed.\n   * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n   * `valueChanges` observables emit events with the latest status and value when the control is\n   * removed. When false, no events are emitted.\n   */\n  public removeControl<S extends string>(\n    name: ɵOptionalKeys<TControl>&S, options: {emitEvent?: boolean;} = {}\n  ): void {\n    super.removeControl(name, options);\n    this.assignFormValueToClassValue();\n    this.setClassValidatorControlsContainerGroupClassValue();\n  }\n\n  private setClassValidatorControlsContainerGroupClassValue(): void {\n    Object.entries(this.controls).forEach(([controlName, control]) => {\n      if (control instanceof ClassValidatorFormControl) {\n        control.setNameAndFormGroupClassValue(controlName, this.classValue, this.options?.eagerValidation);\n      }\n    });\n  }\n\n  private assignFormValueToClassValue(): void {\n    this.classValue = Object.assign(new this.formClassType(), this.value);\n  }\n}\n\n","import { Injectable } from '@angular/core';\nimport {\n  AbstractControl,\n  AbstractControlOptions,\n  AsyncValidatorFn,\n  FormArray,\n  FormControl,\n  FormControlState,\n  FormGroup,\n  ValidatorFn\n} from '@angular/forms';\n\nimport { ClassValidatorFormGroup } from './class-validator-form-group';\nimport { ClassValidatorFormControl } from './class-validator-form-control';\nimport { ClassValidatorFormArray } from './class-validator-form-array';\nimport { ClassType } from './types';\nimport { ClassValidatorFormGroupOptions } from './class-validator-form-group-options.interface';\n\n// Coming from https://github.com/angular/angular/blob/3b0b7d22109c79b4dceb4ae069c3927894cf1bd6/packages/forms/src/form_builder.ts#L14\nconst isAbstractControlOptions = (options: AbstractControlOptions | { [key: string]: any }): options is AbstractControlOptions =>\n  (options as AbstractControlOptions).asyncValidators !== undefined ||\n  (options as AbstractControlOptions).validators !== undefined ||\n  (options as AbstractControlOptions).updateOn !== undefined;\n\n@Injectable()\nexport class ClassValidatorFormBuilderService {\n  /**\n   * @description\n   * Construct a new `FormGroup` instance.\n   *\n   * @param formClassType the `classType` containing `class-validator` decorators to be used to validate form\n   * @param controlsConfig A collection of child controls. The key for each child is the name\n   * under which it is registered.\n   *\n   * @param options Configuration options object for the `FormGroup`. The object can\n   * have two shapes:\n   *\n   * 1) `AbstractControlOptions` object (preferred), which consists of:\n   * * `validators`: A synchronous validator function, or an array of validator functions\n   * * `asyncValidators`: A single async validator or array of async validator functions\n   * * `updateOn`: The event upon which the control should be updated (options: 'change' | 'blur' |\n   * submit')\n   *\n   * 2) Legacy configuration object, which consists of:\n   * * `validator`: A synchronous validator function, or an array of validator functions\n   * * `asyncValidator`: A single async validator or array of async validator functions\n   *\n   * @param classValidatorGroupOptions Options object of type `ClassValidatorFormGroupOptions` allowing\n   * to define eagerValidation that validate controls immediately upon creation. Default is false (validators are executed starting from ngAfterViewInit hook)\n   * See https://github.com/abarghoud/ngx-reactive-form-class-validator/issues/47\n   *\n   */\n  public group(\n    formClassType: ClassType<any>,\n    controlsConfig: { [p: string]: any },\n    options?: AbstractControlOptions | { [p: string]: any } | null,\n    classValidatorGroupOptions?: ClassValidatorFormGroupOptions,\n  ): ClassValidatorFormGroup {\n    // Coming from https://github.com/angular/angular/blob/3b0b7d22109c79b4dceb4ae069c3927894cf1bd6/packages/forms/src/form_builder.ts#L59\n    const controls = this.reduceControls(controlsConfig);\n\n    let validators: ValidatorFn | ValidatorFn[] | null = null;\n    let asyncValidators: AsyncValidatorFn | AsyncValidatorFn[] | null = null;\n    let updateOn;\n\n    if (options) {\n      if (isAbstractControlOptions(options)) {\n        // `options` are `AbstractControlOptions`\n        validators = options.validators ? options.validators : null;\n        asyncValidators = options.asyncValidators ? options.asyncValidators : null;\n        updateOn = options.updateOn ? options.updateOn : undefined;\n      } else {\n        // `options` are legacy form group options\n        validators = options['validator'] !== null ? options['validator'] : null;\n        asyncValidators = options['asyncValidator'] !== null ? options['asyncValidator'] : null;\n      }\n    }\n\n    return new ClassValidatorFormGroup(formClassType, controls, { asyncValidators, updateOn, validators }, undefined, classValidatorGroupOptions);\n  }\n\n  /**\n   * Constructs a new `FormArray` from the given array of configurations,\n   * validators and options.\n   *\n   * @param controlsConfig An array of child controls or control configs. Each\n   * child control is given an index when it is registered.\n   *\n   * @param validatorOrOpts A synchronous validator function, or an array of\n   * such functions, or an `AbstractControlOptions` object that contains\n   * validation functions and a validation trigger.\n   *\n   * @param asyncValidator A single async validator or array of async validator\n   * functions.\n   */\n  public array<T>(\n    controlsConfig: Array<T>,\n    validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\n    asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n  ): FormArray {\n    const controls = controlsConfig.map(control => this.createControl(control));\n\n    return new ClassValidatorFormArray(controls, validatorOrOpts, asyncValidator);\n  }\n\n\n  /**\n   * @description\n   * Construct a new `FormControl` with the given state, validators and options.\n   *\n   * @param formState Initializes the control with an initial state value, or\n   * with an object that contains both a value and a disabled status.\n   *\n   * @param validatorOrOpts A synchronous validator function, or an array of\n   * such functions, or an `AbstractControlOptions` object that contains\n   * validation functions and a validation trigger.\n   *\n   * @param asyncValidator A single async validator or array of async validator\n   * functions.\n   *\n   * @usageNotes\n   *\n   * ### Initialize a control as disabled\n   *\n   * The following example returns a control with an initial value in a disabled state.\n   *\n   * <code-example path=\"forms/ts/formBuilder/form_builder_example.ts\" region=\"disabled-control\">\n   * </code-example>\n   */\n  public control<T>(\n    formState: T|FormControlState<T>,\n    validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\n    asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n  ): ClassValidatorFormControl {\n    return new ClassValidatorFormControl(formState, validatorOrOpts, asyncValidator);\n  }\n\n  // Coming from https://github.com/angular/angular/blob/3b0b7d22109c79b4dceb4ae069c3927894cf1bd6/packages/forms/src/form_builder.ts#L133\n  private reduceControls(controlsConfig: { [k: string]: any }): { [key: string]: AbstractControl } {\n    const controls: { [key: string]: AbstractControl } = {};\n\n    Object.keys(controlsConfig).forEach(controlName => {\n      controls[controlName] = this.createControl(controlsConfig[controlName]);\n    });\n\n    return controls;\n  }\n\n  private createControl(controlConfig: any): AbstractControl {\n    if (\n      controlConfig instanceof FormControl\n      || controlConfig instanceof FormGroup\n      || controlConfig instanceof FormArray\n    ) {\n      return controlConfig;\n    } else if (Array.isArray(controlConfig)) {\n      const value = controlConfig[0];\n      const validator: ValidatorFn = controlConfig.length > 1 ? controlConfig[1] : null;\n      const asyncValidator: AsyncValidatorFn = controlConfig.length > 2 ? controlConfig[2] : null;\n\n      return this.control(value, validator, asyncValidator);\n    } else {\n      return this.control(controlConfig);\n    }\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ClassValidatorFormBuilderService } from './class-validator-form-builder.service';\n\n@NgModule({\n  imports: [CommonModule],\n  providers: [ClassValidatorFormBuilderService],\n})\nexport class ClassValidatorFormBuilderModule {\n  public static forRoot(): ModuleWithProviders<ClassValidatorFormBuilderModule> {\n    return {\n      ngModule: ClassValidatorFormBuilderModule,\n      providers: [\n        ClassValidatorFormBuilderService,\n      ],\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}