{"version":3,"file":"ngx-field-validation-errors.mjs","sources":["../../../projects/ngx-field-validation-errors/src/lib/constants/ValidationMessages.constant.ts","../../../projects/ngx-field-validation-errors/src/lib/tokens/index.ts","../../../projects/ngx-field-validation-errors/src/lib/services/validation-on-event.ts","../../../projects/ngx-field-validation-errors/src/lib/events/validate.event.ts","../../../projects/ngx-field-validation-errors/src/lib/services/error-template-registry.ts","../../../projects/ngx-field-validation-errors/src/lib/providers/error.provider.ts","../../../projects/ngx-field-validation-errors/src/lib/services/validation.ts","../../../projects/ngx-field-validation-errors/src/lib/directives/ngx-error.ts","../../../projects/ngx-field-validation-errors/src/lib/components/ngx-validation-error/ngx-validation-error.ts","../../../projects/ngx-field-validation-errors/src/lib/components/ngx-validation-error/ngx-validation-error.html","../../../projects/ngx-field-validation-errors/src/public-api.ts","../../../projects/ngx-field-validation-errors/src/ngx-field-validation-errors.ts"],"sourcesContent":["import { IErrorTemplate } from \"../models/IErrorTemplate.model\";\r\n\r\nexport const defaultErrorTemplate: IErrorTemplate = {\r\n  required: '{name} is required.',\r\n  minlength: '{name} must be at least {minLength} characters.',\r\n  maxlength: '{name} cannot exceed {maxLength} characters.',\r\n  min: '{name} must be greater than or equal to {min}.',\r\n  max: '{name} must be less than or equal to {max}.',\r\n  pattern: '{name} is invalid.',\r\n  email: 'Please enter a valid {name}.'\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { IErrorTemplate } from \"../models/IErrorTemplate.model\";\r\nimport { IErrorConfig } from \"../models\";\r\n\r\n//tokens\r\nexport const ERROR_TEMPLATE_TOKEN=new InjectionToken<IErrorTemplate>(\"Error_Template\");\r\nexport const ERROR_CONFIG=new InjectionToken<IErrorConfig>(\"Error_Config\");\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class ValidationOnEvent {\r\n    validateOnEvent:Subject<void>=new Subject();\r\n}\r\n","import { inject } from \"@angular/core\";\r\nimport { EventManagerPlugin } from \"@angular/platform-browser\";\r\nimport { ValidationOnEvent } from \"../services/validation-on-event\";\r\n\r\nexport class ValidateEvent extends EventManagerPlugin{\r\n  validationService:ValidationOnEvent=inject(ValidationOnEvent);\r\n  override supports(eventName: string): boolean {\r\n    return eventName.startsWith(\"click\") && eventName.endsWith(\"validate\");\r\n  }\r\n  override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\r\n    const event:string=eventName.split(\".\")[0];\r\n    const validateHandler=(event:Event)=>{\r\n      this.validationService.validateOnEvent.next();\r\n      handler(event);\r\n    }\r\n    element.addEventListener(event,validateHandler);\r\n    return ()=>element.removeEventListener(event,validateHandler);\r\n  }\r\n\r\n}\r\n","import { Injectable, TemplateRef } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class ErrorTemplateRegistry {\r\n  errorTemplate!:TemplateRef<any>;\r\n\r\n  setErrorUiTemplate(template:TemplateRef<any>){\r\n    this.errorTemplate=template;\r\n  }\r\n\r\n  get getErrorTemplate():TemplateRef<any> | null{\r\n    return this.errorTemplate ?? null;\r\n  }\r\n}\r\n","import { EVENT_MANAGER_PLUGINS } from \"@angular/platform-browser\";\r\nimport { defaultErrorTemplate } from \"../constants/ValidationMessages.constant\";\r\nimport { IErrorConfig } from \"../models\";\r\nimport { ERROR_CONFIG } from \"../tokens\";\r\nimport { ValidateEvent } from \"../events/validate.event\";\r\nimport { makeEnvironmentProviders } from \"@angular/core\";\r\nimport { ErrorTemplateRegistry } from \"../services/error-template-registry\";\r\nimport { ValidationOnEvent } from \"../services/validation-on-event\";\r\n\r\n//provider functions\r\nexport function provideNgxFieldValidation(config?: IErrorConfig) {\r\n  return makeEnvironmentProviders([\r\n    ErrorTemplateRegistry,\r\n    ValidationOnEvent,\r\n    {\r\n      provide: EVENT_MANAGER_PLUGINS,\r\n      useClass: ValidateEvent,\r\n      multi: true\r\n    },\r\n    {\r\n      provide: ERROR_CONFIG,\r\n      useValue: {\r\n        ...config,\r\n        errorTemplate:{...defaultErrorTemplate,...config?.errorTemplate}}\r\n    }\r\n  ]);\r\n}\r\n","import { ElementRef, inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { ERROR_CONFIG} from '../tokens';\r\nimport { IErrorConfig, IErrorTemplate } from '../models';\r\nimport { defaultErrorTemplate } from '../constants/ValidationMessages.constant';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class Validation implements OnDestroy {\r\n  errorElements: any[] = [];\r\n  renderer: Renderer2 = inject(Renderer2);\r\n  elementRef: any;\r\n  errorConfig = inject<IErrorConfig>(ERROR_CONFIG);\r\n\r\n  createErrorElement() {\r\n    this.errorElements.push(this.renderer.createElement(\"span\"));\r\n    this.renderer.addClass(this.errorElements[this.errorElements.length - 1], this.getErrorClass);\r\n    this.renderer.appendChild(this.elementRef.nativeElement.parentNode, this.errorElements[this.errorElements.length - 1]);\r\n  }\r\n\r\n  get getErrorClass(){\r\n    return this.errorConfig?.defaultErrorTemplateType==='icon-text-error'?\"icon-text-error\":\"plain-text-error\";\r\n  }\r\n\r\n  removeErrorElements() {\r\n    this.errorElements.forEach((errorElement: HTMLElement) => {\r\n      this.renderer.removeChild(this.elementRef.nativeElement?.parentNode, errorElement);\r\n    });\r\n    this.errorElements=[];\r\n  }\r\n\r\n  updateErrorMessage(currentElementRef: ElementRef, fieldName: string = \"This field\", errors: any) {\r\n    this.elementRef = currentElementRef;\r\n    this.removeErrorElements();\r\n    this.renderErrorMessage(fieldName, errors);\r\n  }\r\n\r\n  renderErrorMessage(fieldName: string, errors: any) {\r\n    if(!errors){\r\n      return;\r\n    }\r\n    if (this.errorConfig.showFieldError === \"multiple\") {\r\n      Object.keys(errors).forEach((errorKey) => {\r\n        this.createErrorElement();\r\n        const errorMessage: string = this.getOnlyErrorMessage(errorKey, fieldName, errors);\r\n        this.setErrorMessage(this.errorElements[this.errorElements.length - 1], errorMessage)\r\n      });\r\n    }\r\n    else {\r\n      this.createErrorElement();\r\n      const errorMessage = this.getSingleErrorMessage(fieldName, errors);\r\n      if (errorMessage) {\r\n        this.setErrorMessage(this.errorElements[this.errorElements.length - 1], errorMessage)\r\n      }\r\n    }\r\n  }\r\n\r\n  setErrorMessage(element: HTMLElement, errorMessage: string) {\r\n    this.renderer.setProperty(element, \"innerText\", errorMessage);\r\n  }\r\n\r\n  getErrorMessage(fieldName: string = \"field\", errors: any, errorKey: string, errorTemplate: string) {\r\n    let message: string = \"\";\r\n    switch (errorKey) {\r\n      case \"required\":\r\n        message = errorTemplate.replace(\"{name}\", fieldName);\r\n        break;\r\n      case \"maxlength\":\r\n        message = errorTemplate.replace(\"{name}\", fieldName).replace(\"{maxLength}\", errors[errorKey]?.requiredLength);\r\n        break;\r\n      case \"minlength\":\r\n        message = errorTemplate.replace(\"{name}\", fieldName).replace(\"{minLength}\", errors[errorKey]?.requiredLength);\r\n        break;\r\n      case \"email\":\r\n        message = errorTemplate.replace(\"{name}\", fieldName);\r\n        break;\r\n      case \"min\":\r\n        message = errorTemplate.replace(\"{name}\", fieldName).replace(\"{min}\", errors[errorKey]?.min);\r\n        break;\r\n      case \"max\":\r\n        message = errorTemplate.replace(\"{name}\", fieldName).replace(\"{max}\", errors[errorKey]?.max);\r\n        break;\r\n      case \"pattern\":\r\n        message = errorTemplate.replace(\"{name}\",fieldName);\r\n        break;\r\n      default:\r\n        message = errorTemplate ?? \"This field is invalid\";\r\n    }\r\n    return message;\r\n  }\r\n\r\n  getOnlyErrorMessage(errorKey: any, fieldName: string, errors: any): string {\r\n    const deafultMessage: string = \"This {name} is Invalid\";\r\n    const template: string = this.getErrorTemplate(errorKey, deafultMessage,errors);\r\n    return this.getErrorMessage(fieldName, errors, errorKey, template);\r\n  }\r\n\r\n  getMultipleErrorMessage(fieldName: string, errors: any): string[] | null {\r\n    if(!errors) return null;\r\n    const errorsMessage: string[] = [];\r\n    if (errors) {\r\n      Object.keys(errors).forEach((errorKey: string) => {\r\n        errorsMessage.push(this.getOnlyErrorMessage(errorKey, fieldName, errors))\r\n      });\r\n    }\r\n    return errorsMessage;\r\n  }\r\n\r\n  getSingleErrorMessage(fieldName: string, errors: any): string | null {\r\n    if(!errors) return null;\r\n    const firstErrorKey = Object.keys(errors)[0] ?? null;\r\n    if (firstErrorKey) {\r\n      return this.getOnlyErrorMessage(firstErrorKey, fieldName, errors);\r\n    }\r\n    return null;\r\n  }\r\n\r\n  getErrorTemplate(errorKey: string, deafultMessage: string, errors: any): string {\r\n    if (typeof errors[errorKey] === \"string\") {\r\n      return errors[errorKey];\r\n    }\r\n    return this.errorConfig?.errorTemplate ? this.errorConfig.errorTemplate[errorKey as keyof IErrorTemplate] ?? deafultMessage\r\n      : defaultErrorTemplate[errorKey as keyof IErrorTemplate] ?? deafultMessage;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.removeErrorElements();\r\n  }\r\n}\r\n","import { DestroyRef, Directive, ElementRef, HostBinding, inject, Input} from '@angular/core';\r\nimport { AbstractControl, NgControl } from '@angular/forms';\r\nimport { Validation } from '../services/validation';\r\nimport { IErrorConfig, IFieldConfig } from '../models';\r\nimport { ValidationOnEvent } from '../services/validation-on-event';\r\nimport { ERROR_CONFIG } from '../tokens';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Directive({\r\n  selector: '[ngxError]',\r\n  standalone: true,\r\n  exportAs: \"ngxError\",\r\n  providers: [Validation]\r\n})\r\nexport class NgxError {\r\n  @Input(\"ngxError\")\r\n  set setFieldConfig(value:IFieldConfig){\r\n    if(!Object.hasOwn(value,\"defaultErrorTemplate\")){\r\n      this.defaultFieldConfig.defaultErrorTemplate=this.errorConfig?.defaultErrorTemplate ?? true;\r\n    }\r\n    this.fieldConfig={...this.defaultFieldConfig,...value};\r\n    this.defaultErrorTemplate=this.fieldConfig.defaultErrorTemplate ?? this.errorConfig?.defaultErrorTemplate ?? true;\r\n  }\r\n  defaultFieldConfig:IFieldConfig={\r\n    name: \"field\",\r\n    defaultErrorTemplate: true,\r\n    skipOnValidate:false\r\n  };\r\n  fieldConfig!: IFieldConfig;\r\n  private ngControl: NgControl = inject(NgControl);\r\n  private elementRef: ElementRef = inject(ElementRef);\r\n  private validationService: Validation = inject(Validation);\r\n  private validationOnEventService: ValidationOnEvent = inject(ValidationOnEvent);\r\n  private errorConfig = inject<IErrorConfig>(ERROR_CONFIG,{optional:true});\r\n  private destroyRef=inject(DestroyRef);\r\n  control!: AbstractControl | null;\r\n  protected errorElement: any;\r\n  protected errors: string[] | null = null;\r\n  protected error: string | null = null;\r\n  protected defaultErrorTemplate:boolean=true;\r\n  hasError: boolean = false;\r\n  protected ngOnInit(): void {\r\n    this.control = this.ngControl.control;\r\n    this.validationOnEventService.validateOnEvent\r\n    .pipe(takeUntilDestroyed(this.destroyRef))\r\n    .subscribe((_resp: any) => {\r\n      if (!this.fieldConfig?.skipOnValidate) {\r\n        this.control?.markAsDirty();\r\n        this.control?.markAsTouched();\r\n        this.errorHandler();\r\n      }\r\n    });\r\n    this.control?.statusChanges\r\n    .pipe(takeUntilDestroyed(this.destroyRef))\r\n    .subscribe({\r\n      next: (_status: any) => {\r\n        this.errorHandler();\r\n      }\r\n    });\r\n  }\r\n\r\n  private errorHandler() {\r\n    this.errors = this.validationService.getMultipleErrorMessage(this.fieldConfig?.name, this.control?.errors);\r\n    this.error = this.validationService.getSingleErrorMessage(this.fieldConfig?.name, this.control?.errors);\r\n    this.hasError = this.errors !== null || this.error !== null;\r\n    if (!this.fieldConfig?.defaultErrorTemplate) return;\r\n\r\n    if (this.fieldConfig?.defaultErrorTemplate || this.errorConfig?.defaultErrorTemplate) {\r\n      this.validationService.updateErrorMessage(this.elementRef, this.fieldConfig.name, this.control?.errors);\r\n    }\r\n  }\r\n\r\n  @HostBinding(\"class\")\r\n   protected get getFieldBorderClass() {\r\n    return this.errorConfig?.errorFieldBorderStyle == 'solid'\r\n      ? \"solid\" : this.errorConfig?.errorFieldBorderStyle === 'dashed' ? \"dashed\"\r\n        : \"none\";\r\n  }\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { AfterContentInit, Component, ContentChild, inject, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport { IErrorConfig, ITemplateContext } from '../../models';\r\nimport { ErrorTemplateRegistry } from '../../services/error-template-registry';\r\nimport { ERROR_CONFIG } from '../../tokens';\r\n\r\n@Component({\r\n  selector: 'ngx-validation-error',\r\n  imports: [NgTemplateOutlet],\r\n  standalone: true,\r\n  templateUrl: './ngx-validation-error.html',\r\n  styleUrl: './ngx-validation-error.css',\r\n})\r\nexport class NgxValidationError implements OnInit,AfterContentInit {\r\n  @Input(\"for\")\r\n  elementRef!: any;\r\n  @ContentChild(\"customProjectTemplate\") customProjectTemplate!: TemplateRef<any>\r\n  context!: ITemplateContext;\r\n  customTemplate!: TemplateRef<any> | null;\r\n  errorTemplateService: ErrorTemplateRegistry = inject(ErrorTemplateRegistry);\r\n  errorConfig = inject<IErrorConfig>(ERROR_CONFIG);\r\n  errorClass!:string\r\n\r\n  ngAfterContentInit(): void {\r\n    this.customTemplate=this.customProjectTemplate ?? this.errorTemplateService?.getErrorTemplate;\r\n  }\r\n  ngOnInit(): void {\r\n    this.errorClass=this.errorConfig?.defaultErrorTemplateType==='icon-text-error'?\"icon-text-error\":\"plain-text-error\";\r\n  }\r\n}\r\n","@if(errorConfig.showFieldError===\"multiple\" && !elementRef?.defaultErrorTemplate){\r\n  @for (errorMessage of elementRef?.errors; track $index) {\r\n    <ng-container *ngTemplateOutlet=\"(customTemplate || defaultTemplate);context:{error:errorMessage,control:elementRef?.control}\"></ng-container>\r\n  }\r\n}\r\n@else if(errorConfig.showFieldError===\"single\" && !elementRef?.defaultErrorTemplate){\r\n  <ng-container *ngTemplateOutlet=\"(customTemplate || defaultTemplate);context:{error:elementRef?.error,control:elementRef?.control}\"></ng-container>\r\n}\r\n<ng-template #defaultTemplate let-error=\"error\">\r\n   <span [class]=\"errorClass\">\r\n        {{error}}\r\n    </span>\r\n</ng-template>\r\n","/*\r\n * Public API Surface of ngx-field-validation-errors\r\n */\r\nexport * from \"./lib/providers/error.provider\";\r\nexport * from \"./lib/directives/ngx-error\";\r\nexport * from \"./lib/components/ngx-validation-error/ngx-validation-error\";\r\nexport * from \"./lib/services/error-template-registry\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}