{"version":3,"file":"ngx-error-message.mjs","sources":["../../../projects/ngx-error-message/src/lib/ngx-error-message-constant.ts","../../../projects/ngx-error-message/src/lib/ngx-error-message.token.ts","../../../projects/ngx-error-message/src/lib/ngx-error-message.service.ts","../../../projects/ngx-error-message/src/lib/ngx-error-message.pipe.ts","../../../projects/ngx-error-message/src/lib/ngx-error-message.component.ts","../../../projects/ngx-error-message/src/lib/ngx-error-message.directive.ts","../../../projects/ngx-error-message/src/lib/ngx-error-message.module.ts","../../../projects/ngx-error-message/src/public-api.ts","../../../projects/ngx-error-message/src/ngx-error-message.ts"],"sourcesContent":["const octetPattern = '(25[0-5]|2[0-4]\\\\d|1\\\\d{2}|\\\\d{1,2})'\nconst countryCode = '\\\\+?[-.\\\\s]?\\\\d{1,2}[-.\\\\s]?'\nconst areaCode = '\\\\(?\\\\d{3}\\\\)?'\nconst phoneNumber = '\\\\d{3}[-.\\\\s]?\\\\d{4}'\nconst protocol = '(https?:\\\\/\\\\/)?'\nconst domain = '[\\\\w\\\\d-]+(\\\\.[\\\\w\\\\d-]+)+'\nconst path = '(\\\\/[-\\\\w\\\\d.]*)*\\\\/?'\nconst query = '(\\\\?[\\\\w\\\\d=&]*)?'\nconst fragment = '(#[\\\\w\\\\d-]*)?'\n\nexport const regEx = {\n  phoneNumber: new RegExp(\n    `^(${countryCode})?${areaCode}[-.\\\\s]?${phoneNumber}$`,\n  ),\n  websiteUrl: new RegExp(`^${protocol}${domain}${path}${query}${fragment}$`),\n  numeric: /^\\d+$/,\n  smallLetters: /^[a-z]+$/,\n  capitalLetters: /^[A-Z]+$/,\n  alphabet: /^[a-zA-Z\\s\\u00C0-\\u017F]+$/,\n  alphaNumeric: /^[a-zA-Z0-9\\s\\u00C0-\\u017F]+$/,\n  ip: new RegExp(`^(${octetPattern})(\\\\.(${octetPattern})){3}$`),\n}\n\nexport const requiredRegex = /^((?!actual).)*$/\n","import { InjectionToken } from '@angular/core'\nimport { ErrorMessageConfig } from './ngx-error-message-interfaces'\n\nexport const ERROR_MESSAGE_CONFIG = new InjectionToken<ErrorMessageConfig>(\n  'ERROR_MESSAGE_CONFIG',\n)\n","import { Injectable, inject } from '@angular/core'\nimport { ValidationErrors } from '@angular/forms'\n\nimport { regEx, requiredRegex } from './ngx-error-message-constant'\nimport { TranslateService } from '@ngx-translate/core'\nimport { ErrorMessageConfig } from './ngx-error-message-interfaces'\nimport { ERROR_MESSAGE_CONFIG } from './ngx-error-message.token'\n\n@Injectable()\nexport class NgxErrorMessageService {\n  private readonly config = inject<ErrorMessageConfig>(ERROR_MESSAGE_CONFIG)\n  private readonly translate = inject(TranslateService, { optional: true })\n\n  getErrorMessage(\n    controlErrors: ValidationErrors,\n    patternKey?: string,\n    fieldName?: string,\n  ) {\n    const lastError = Object.entries(controlErrors).pop()\n    if (!lastError) {\n      return ''\n    }\n\n    const [errorKey, errorValue] = lastError\n\n    if (typeof errorValue === 'boolean') {\n      return this.getMessage(errorKey, fieldName)\n    }\n\n    if (errorKey === 'pattern') {\n      const patternErrorKey = this.patternMatchExpression(\n        errorValue,\n        patternKey,\n      )\n      return this.getMessage(patternErrorKey, fieldName)\n    }\n    const requiredValue = this.getValueByRegexFromObject(\n      errorValue,\n      requiredRegex,\n    )\n    return this.getMessage(errorKey, fieldName, requiredValue)\n  }\n\n  private patternMatchExpression(\n    value: Record<string, unknown>,\n    patternKey?: string,\n  ): string {\n    const pattern = value['requiredPattern'] as string\n    const regExpDefault = Object.entries(regEx).find(\n      ([, val]) => val.toString() === pattern,\n    )\n    return `${this.config.patternsPrefix}.${regExpDefault ? regExpDefault[0] : patternKey}`\n  }\n\n  private getValueByRegexFromObject(\n    obj: Record<string, unknown>,\n    regex: RegExp,\n  ): string {\n    const [, findValue] =\n      Object.entries(obj).find(([key]) => regex.test(key)) ?? []\n    return findValue as string\n  }\n\n  private interpolateMessage(\n    message: string,\n    params: Record<string, string>,\n  ): string {\n    return message.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => params[key] ?? '')\n  }\n\n  private getNestedMessage(\n    obj: Record<string, unknown>,\n    path: string,\n  ): string | undefined {\n    return path\n      .split('.')\n      .reduce(\n        (acc, key) => acc && (acc[key] as never),\n        obj,\n      ) as unknown as string\n  }\n\n  private getMessage(key: string, fieldName?: string, param?: string): string {\n    const options = {\n      ...(fieldName && { fieldName }),\n      ...(param && { param }),\n    }\n    if (Object.keys(this.config.errorMessages!).length > 0) {\n      const messageTemplate =\n        this.getNestedMessage(this.config.errorMessages!, key) ?? ''\n      return this.interpolateMessage(messageTemplate, options)\n    }\n\n    return param || fieldName\n      ? this.translate?.instant(\n          `${this.config.validationsPrefix}.${key}`,\n          options,\n        )\n      : this.translate?.instant(`${this.config.validationsPrefix}.${key}`)\n  }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core'\nimport { ValidationErrors } from '@angular/forms'\nimport { NgxErrorMessageService } from './ngx-error-message.service'\n\n@Pipe({\n  name: 'ngxErrorMessage',\n})\nexport class NgxErrorMessagePipe implements PipeTransform {\n  private readonly errorMessageService = inject(NgxErrorMessageService)\n  private cachedData!: string\n  private cachedError = ''\n  private cachedLang = ''\n\n  transform(\n    value: ValidationErrors | null,\n    lang?: string,\n    patternKey?: string,\n    fieldName?: string,\n  ): string {\n    if (!value) {\n      return ''\n    }\n    if (lang !== this.cachedLang) {\n      this.cachedLang = lang ?? ''\n      this.cachedError = ''\n    }\n    const [lastErrorKey] = Object.keys(value).slice(-1)\n    if (lastErrorKey !== this.cachedError) {\n      this.cachedError = lastErrorKey\n      this.cachedData = this.errorMessageService.getErrorMessage(\n        value,\n        patternKey,\n        fieldName,\n      )\n    }\n    return this.cachedData ?? ''\n  }\n}\n","import {\n  Component,\n  Input,\n  OnInit,\n  ElementRef,\n  Renderer2,\n  inject,\n} from '@angular/core'\nimport { NgControl } from '@angular/forms'\nimport { LangChangeEvent, TranslateService } from '@ngx-translate/core'\nimport { Subject, distinctUntilChanged } from 'rxjs'\nimport { ClassNames, ErrorWhenType } from './ngx-error-message-interfaces'\nimport { NgxErrorMessagePipe } from './ngx-error-message.pipe'\n\n@Component({\n  selector: 'ngx-error-message',\n  template: `\n    @if (hasError) {\n      <small [class]=\"classNames.message\">{{\n        ngControl.errors | ngxErrorMessage: lang : patternKey : fieldName\n      }}</small>\n    }\n  `,\n  imports: [NgxErrorMessagePipe],\n})\nexport class NgxErrorMessageComponent implements OnInit {\n  @Input() classNames!: ClassNames\n  @Input() fieldName!: string\n  @Input() ngControl!: NgControl\n  @Input() when!: ErrorWhenType | ErrorWhenType[]\n  @Input() patternKey?: string\n\n  protected lang?: string\n  private readonly translate = inject(TranslateService)\n  private readonly elementRef = inject(ElementRef)\n  private readonly renderer = inject(Renderer2)\n  private readonly destroy$ = new Subject<void>()\n  private previousErrorState = false\n\n  get hasError(): boolean {\n    const invalid = Array.isArray(this.when)\n      ? this.when.every((condition) => this.ngControl[condition])\n      : this.ngControl[this.when]\n    if (this.previousErrorState !== invalid) {\n      this.previousErrorState = !!invalid\n      this.updateErrorContainer(!!invalid)\n    }\n    return !!invalid\n  }\n\n  ngOnInit(): void {\n    this.translate.onLangChange\n      .pipe(distinctUntilChanged())\n      .subscribe(({ lang }: LangChangeEvent) => (this.lang = lang))\n  }\n\n  private updateErrorContainer(invalid: boolean): void {\n    const inputElement = this.elementRef.nativeElement.previousElementSibling\n    if (!inputElement) {\n      return\n    }\n    const errorClass = this.classNames.control\n    invalid\n      ? this.renderer.addClass(inputElement, errorClass)\n      : this.renderer.removeClass(inputElement, errorClass)\n  }\n}\n","import {\n  Directive,\n  ViewContainerRef,\n  OnInit,\n  Input,\n  inject,\n  ComponentRef,\n} from '@angular/core'\nimport { NgControl } from '@angular/forms'\nimport { NgxErrorMessageComponent } from './ngx-error-message.component'\nimport { ClassNames, ErrorWhenType } from './ngx-error-message-interfaces'\n\n@Directive({\n  selector: '[ngxErrorMessage]',\n})\nexport class NgxErrorMessageDirective implements OnInit {\n  @Input() set ngxErrorMessage(value: string) {\n    this.fieldName = value\n    if (!this.componentRef) {\n      return\n    }\n    this.componentRef.instance.fieldName = this.fieldName\n  }\n  @Input() classNames: ClassNames = {\n    control: 'error-container',\n    message: 'error-message',\n  }\n  @Input() patternKey?: string\n  @Input() when: ErrorWhenType | ErrorWhenType[] = ['invalid', 'touched']\n\n  private fieldName: string = ''\n  private readonly ngControl = inject(NgControl)\n  private readonly container = inject(ViewContainerRef)\n  private componentRef?: ComponentRef<NgxErrorMessageComponent>\n\n  ngOnInit(): void {\n    const hostViewContainerRef = this.container\n    if (!this.componentRef) {\n      hostViewContainerRef.clear()\n      this.componentRef = hostViewContainerRef.createComponent(\n        NgxErrorMessageComponent,\n      )\n    }\n    const instance = this.componentRef.instance\n    instance.classNames = this.classNames\n    instance.ngControl = this.ngControl\n    instance.patternKey = this.patternKey\n    instance.when = this.when\n    instance.fieldName = this.fieldName\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { TranslateModule } from '@ngx-translate/core'\n\nimport { NgxErrorMessageComponent } from './ngx-error-message.component'\nimport { NgxErrorMessageDirective } from './ngx-error-message.directive'\nimport { NgxErrorMessagePipe } from './ngx-error-message.pipe'\nimport { ErrorMessageConfig } from './ngx-error-message-interfaces'\nimport { ERROR_MESSAGE_CONFIG } from './ngx-error-message.token'\nimport { NgxErrorMessageService } from './ngx-error-message.service'\n\n@NgModule({\n  imports: [\n    CommonModule,\n    TranslateModule,\n    NgxErrorMessageComponent,\n    NgxErrorMessageDirective,\n    NgxErrorMessagePipe,\n  ],\n  exports: [NgxErrorMessageDirective],\n})\nexport class NgxErrorMessageModule {\n  static forRoot(\n    config?: ErrorMessageConfig,\n  ): ModuleWithProviders<NgxErrorMessageModule> {\n    return NgxErrorMessageModule.forRootOrChild(config)\n  }\n\n  static forChild(\n    config?: ErrorMessageConfig,\n  ): ModuleWithProviders<NgxErrorMessageModule> {\n    return NgxErrorMessageModule.forRootOrChild(config)\n  }\n\n  private static forRootOrChild(\n    config?: ErrorMessageConfig,\n  ): ModuleWithProviders<NgxErrorMessageModule> {\n    return {\n      ngModule: NgxErrorMessageModule,\n      providers: [\n        {\n          provide: ERROR_MESSAGE_CONFIG,\n          useValue: {\n            validationsPrefix: config?.validationsPrefix ?? 'validations',\n            patternsPrefix: config?.patternsPrefix ?? 'pattern',\n            errorMessages: config?.errorMessages ?? {},\n          },\n        },\n        NgxErrorMessageService,\n      ],\n    }\n  }\n}\n","/*\n * Public API Surface of ngx-error-message\n */\n\nexport * from './lib/ngx-error-message.directive'\nexport * from './lib/ngx-error-message.service'\nexport { regEx } from './lib/ngx-error-message-constant'\nexport * from './lib/ngx-error-message.module'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}