{"version":3,"file":"ngneat-error-tailor.mjs","sources":["../../../../projects/ngneat/error-tailor/src/lib/control-error-anchor.directive.ts","../../../../projects/ngneat/error-tailor/src/lib/control-error.component.ts","../../../../projects/ngneat/error-tailor/src/lib/error-tailor.providers.ts","../../../../projects/ngneat/error-tailor/src/lib/form-action.directive.ts","../../../../projects/ngneat/error-tailor/src/lib/control-error.directive.ts","../../../../projects/ngneat/error-tailor/src/lib/error-tailor.module.ts","../../../../projects/ngneat/error-tailor/src/public-api.ts","../../../../projects/ngneat/error-tailor/src/ngneat-error-tailor.ts"],"sourcesContent":["import { Directive, inject, ViewContainerRef } from '@angular/core';\n\n@Directive({\n  selector: '[controlErrorAnchor]',\n  standalone: true,\n  exportAs: 'controlErrorAnchor'\n})\nexport class ControlErrorAnchorDirective {\n  vcr = inject(ViewContainerRef);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  TemplateRef,\n  inject,\n  signal,\n} from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\n\nexport type ErrorComponentTemplate = TemplateRef<{ $implicit: ValidationErrors; text: string }>;\n\nexport interface ControlErrorComponent {\n  customClass: string | string[];\n  text: string | null;\n  createTemplate?(tpl: ErrorComponentTemplate, error: ValidationErrors, text: string): void;\n}\n\n@Component({\n  selector: 'control-error',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    @if (!errorTemplate) {\n      <label class=\"control-error\" [class.hide-control]=\"hideError\">{{ errorText }}</label>\n    }\n    <ng-template *ngTemplateOutlet=\"errorTemplate; context: errorContext\"></ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    `\n      .hide-control {\n        display: none !important;\n      }\n\n      :host {\n        display: block;\n      }\n    `,\n  ],\n})\nexport class DefaultControlErrorComponent implements ControlErrorComponent {\n  errorText: string | null = null;\n  errorTemplate: ErrorComponentTemplate | undefined;\n  errorContext: { $implicit: ValidationErrors; text: string };\n  hideError = true;\n\n  private cdr = inject(ChangeDetectorRef);\n  private host: ElementRef<HTMLElement> = inject(ElementRef);\n  private _addClasses: string[] = [];\n\n  createTemplate(tpl: ErrorComponentTemplate, error: ValidationErrors, text: string) {\n    this.errorTemplate = tpl;\n    this.errorContext = { $implicit: error, text };\n    this.cdr.markForCheck();\n  }\n\n  set customClass(classes: string | string[]) {\n    if (!this.hideError) {\n      this._addClasses = Array.isArray(classes) ? classes : classes.split(/\\s/);\n      this.host.nativeElement.classList.add(...this._addClasses);\n    }\n  }\n\n  set text(value: string | null) {\n    if (value !== this.errorText) {\n      this.errorText = value;\n      this.hideError = !value;\n\n      if (this.hideError) {\n        this.host.nativeElement.classList.remove(...this._addClasses);\n      }\n      this.cdr.markForCheck();\n    }\n  }\n}\n","import { FactorySansProvider, InjectionToken, Type, ValueSansProvider } from '@angular/core';\nimport { ErrorsMap } from './types';\nimport { ControlErrorComponent } from './control-error.component';\n\nexport const FORM_ERRORS = new InjectionToken('FORM_ERRORS', {\n  providedIn: 'root',\n  factory: () => {\n    return {};\n  },\n});\n\nexport interface ErrorsUseValue extends ValueSansProvider {\n  useValue: ErrorsMap;\n}\n\nexport interface ErrorsUseFactory extends FactorySansProvider {\n  useFactory: (...args: any[]) => ErrorsMap;\n}\n\nexport type ErrorsProvider = ErrorsUseValue | ErrorsUseFactory;\n\nexport type ErrorTailorConfig = {\n  errors?: ErrorsProvider;\n  blurPredicate?: (element: Element) => boolean;\n  controlErrorsClass?: string | string[] | undefined;\n  controlCustomClass?: string | string[] | undefined;\n  controlErrorComponent?: Type<ControlErrorComponent>;\n  controlClassOnly?: boolean;\n  controlErrorComponentAnchorFn?: (hostElement: Element, errorElement: Element) => () => void;\n  controlErrorsOn?: {\n    async?: boolean;\n    blur?: boolean;\n    change?: boolean;\n    status?: boolean;\n  };\n};\n\nexport const ErrorTailorConfigProvider = new InjectionToken<ErrorTailorConfig>('ErrorTailorConfigProvider');\n\nexport function provideErrorTailorConfig(config: ErrorTailorConfig) {\n  return [\n    {\n      provide: ErrorTailorConfigProvider,\n      useValue: config,\n    },\n    {\n      provide: FORM_ERRORS,\n      ...config.errors,\n    },\n  ];\n}\n","import { Directive, ElementRef, OnInit, inject } from '@angular/core';\nimport { tap, fromEvent, Observable, Subject, takeUntil } from 'rxjs';\n\n@Directive({\n  standalone: true,\n  selector: 'form[errorTailor]',\n})\nexport class FormActionDirective implements OnInit {\n  private submit = new Subject<Event | null>();\n  private destroy = new Subject<void>();\n  private host: ElementRef<HTMLFormElement> = inject(ElementRef);\n\n  element = this.host.nativeElement;\n  submit$ = this.submit.asObservable();\n  reset$: Observable<Event> = fromEvent(this.element, 'reset').pipe(tap(() => this.submit.next(null)));\n\n  ngOnInit() {\n    fromEvent(this.element, 'submit').pipe(takeUntil(this.destroy)).subscribe(this.submit);\n  }\n}\n","import {\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EmbeddedViewRef,\n  Inject,\n  Input,\n  isDevMode,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Self,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { AbstractControl, ControlContainer, NgControl, ValidationErrors } from '@angular/forms';\nimport {\n  distinctUntilChanged,\n  map,\n  startWith,\n  switchMap,\n  takeUntil,\n  EMPTY,\n  fromEvent,\n  merge,\n  NEVER,\n  Observable,\n  Subject,\n  tap,\n} from 'rxjs';\n\nimport { ControlErrorAnchorDirective } from './control-error-anchor.directive';\nimport { ControlErrorComponent, DefaultControlErrorComponent } from './control-error.component';\nimport { FormActionDirective } from './form-action.directive';\nimport { ErrorTailorConfig, ErrorTailorConfigProvider, FORM_ERRORS } from './error-tailor.providers';\nimport { ErrorsMap } from './types';\n\nconst errorTailorClass = 'error-tailor-has-error';\n\n@Directive({\n  standalone: true,\n  selector:\n    '[formControlName]:not([controlErrorsIgnore]), [formControl]:not([controlErrorsIgnore]), [formGroup]:not([controlErrorsIgnore]), [formGroupName]:not([controlErrorsIgnore]), [formArrayName]:not([controlErrorsIgnore]), [ngModel]:not([controlErrorsIgnore])',\n  exportAs: 'errorTailor',\n})\nexport class ControlErrorsDirective implements OnInit, OnDestroy {\n  @Input('controlErrors') customErrors: ErrorsMap = {};\n  @Input() controlErrorsClass: string | string[] | undefined;\n  @Input() controlCustomClass: string | string[] | undefined;\n  @Input() controlErrorsTpl: TemplateRef<any> | undefined;\n  @Input() controlErrorsOnAsync: boolean | undefined;\n  @Input() controlErrorsOnBlur: boolean | undefined;\n  @Input() controlErrorsOnChange: boolean | undefined;\n  @Input() controlErrorsOnStatusChange: boolean | undefined;\n  @Input() controlErrorAnchor: ControlErrorAnchorDirective;\n\n  private ref: ComponentRef<ControlErrorComponent>;\n  private submit$: Observable<Event>;\n  private reset$: Observable<Event>;\n  private control: AbstractControl;\n  private destroy = new Subject<void>();\n  private mergedConfig: ErrorTailorConfig = {};\n  private customAnchorDestroyFn: () => void;\n  private host: HTMLElement;\n\n  constructor(\n    private vcr: ViewContainerRef,\n    elementRef: ElementRef,\n    @Inject(ErrorTailorConfigProvider) private config: ErrorTailorConfig,\n    @Inject(FORM_ERRORS) private globalErrors,\n    @Optional() private controlErrorAnchorParent: ControlErrorAnchorDirective,\n    @Optional() private form: FormActionDirective,\n    @Optional() @Self() private ngControl: NgControl,\n    @Optional() @Self() private controlContainer: ControlContainer,\n  ) {\n    this.host = elementRef.nativeElement as HTMLElement;\n    this.submit$ = this.form ? this.form.submit$ : EMPTY;\n    this.reset$ = this.form ? this.form.reset$ : EMPTY;\n  }\n\n  ngOnInit() {\n    this.mergedConfig = this.buildConfig();\n\n    this.control = (this.controlContainer || this.ngControl).control;\n    const hasAsyncValidator = !!this.control.asyncValidator;\n\n    const statusChanges$ = this.control.statusChanges.pipe(distinctUntilChanged());\n    const valueChanges$ = this.control.valueChanges;\n    const controlChanges$ = merge(statusChanges$, valueChanges$);\n    let changesOnAsync$: Observable<any> = EMPTY;\n    let changesOnBlur$: Observable<any> = EMPTY;\n    let changesOnChange$: Observable<any> = EMPTY;\n    let changesOnStatusChange$: Observable<any> = EMPTY;\n\n    if (!this.controlErrorsClass || this.controlErrorsClass?.length === 0) {\n      if (this.mergedConfig.controlErrorsClass && this.mergedConfig.controlErrorsClass) {\n        this.controlErrorsClass = this.mergedConfig.controlErrorsClass;\n      }\n    }\n\n    if (!this.controlCustomClass || this.controlCustomClass?.length === 0) {\n      if (this.mergedConfig.controlCustomClass && this.mergedConfig.controlCustomClass) {\n        this.controlCustomClass = this.mergedConfig.controlCustomClass;\n      }\n    }\n\n    if (this.mergedConfig.controlErrorsOn.async && hasAsyncValidator) {\n      // hasAsyncThenUponStatusChange\n      changesOnAsync$ = statusChanges$;\n    }\n\n    if (this.isInput && this.mergedConfig.controlErrorsOn.change) {\n      // on each change\n      changesOnChange$ = valueChanges$;\n    }\n\n    if (this.mergedConfig.controlErrorsOn.status) {\n      changesOnStatusChange$ = statusChanges$;\n    }\n\n    if (this.isInput && this.mergedConfig.controlErrorsOn.blur) {\n      const blur$ = fromEvent(this.host, 'focusout');\n      // blurFirstThenUponChange\n      changesOnBlur$ = blur$.pipe(switchMap(() => valueChanges$.pipe(startWith(true))));\n    }\n\n    const submit$ = merge(\n      this.submit$.pipe(map(() => true)),\n      this.reset$.pipe(\n        map(() => false),\n        tap(() => this.hideError()),\n      ),\n    );\n\n    // when submitted, submitFirstThenUponChanges\n    const changesOnSubmit$ = submit$.pipe(\n      switchMap((submit) => (submit ? controlChanges$.pipe(startWith(true)) : NEVER)),\n    );\n\n    // on reset, clear ComponentRef and customAnchorDestroyFn\n    this.reset$.pipe(takeUntil(this.destroy)).subscribe(() => this.clearRefs());\n\n    merge(changesOnAsync$, changesOnBlur$, changesOnChange$, changesOnSubmit$, changesOnStatusChange$)\n      .pipe(takeUntil(this.destroy))\n      .subscribe(() => {\n        const hasErrors = !!this.control.errors;\n        if (hasErrors) {\n          this.showError();\n        } else {\n          this.hideError();\n        }\n      });\n  }\n\n  private setError(text: string, error?: ValidationErrors) {\n    if (this.mergedConfig.controlClassOnly) {\n      return;\n    }\n\n    this.ref ??= this.resolveAnchor().createComponent<ControlErrorComponent>(this.mergedConfig.controlErrorComponent);\n    const instance = this.ref.instance;\n\n    if (this.controlErrorsTpl) {\n      instance.createTemplate(this.controlErrorsTpl, error, text);\n    } else {\n      instance.text = text;\n    }\n\n    if (this.controlErrorsClass) {\n      instance.customClass = this.controlErrorsClass;\n    }\n\n    if (!this.controlErrorAnchor && this.mergedConfig.controlErrorComponentAnchorFn) {\n      this.customAnchorDestroyFn = this.mergedConfig.controlErrorComponentAnchorFn(\n        this.host,\n        (this.ref.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement,\n      );\n    }\n  }\n\n  /**\n   * Explicit showing of a control error via some custom application code.\n   */\n  showError(): void {\n    const controlErrors = this.control.errors;\n    if (controlErrors) {\n      const [firstKey] = Object.keys(controlErrors);\n      const getError = this.customErrors[firstKey] || this.globalErrors[firstKey];\n      if (!getError) {\n        if (isDevMode()) {\n          console.warn(`[@ngneat/error-tailor]: Missing error message for ${firstKey}`);\n        }\n        return;\n      }\n\n      const text = typeof getError === 'function' ? getError(controlErrors[firstKey]) : getError;\n      this.addCustomClass();\n      this.setError(text, controlErrors);\n    }\n  }\n\n  /**\n   * Explicit hiding of a control error via some custom application code.\n   */\n  hideError(): void {\n    this.removeCustomClass();\n    if (this.ref) {\n      this.setError(null);\n    }\n  }\n\n  ngOnDestroy() {\n    this.destroy.next();\n    this.clearRefs();\n  }\n\n  private get customClasses() {\n    return Array.isArray(this.controlCustomClass)\n      ? this.controlCustomClass\n      : this.controlCustomClass?.split(/\\s/) ?? [];\n  }\n\n  private get isInput() {\n    return this.mergedConfig.blurPredicate(this.host);\n  }\n\n  private clearRefs(): void {\n    if (this.customAnchorDestroyFn) {\n      this.customAnchorDestroyFn();\n      this.customAnchorDestroyFn = null;\n    }\n    this.ref?.destroy();\n    this.ref = null;\n  }\n\n  private resolveAnchor() {\n    if (this.controlErrorAnchor) {\n      return this.controlErrorAnchor.vcr;\n    }\n\n    if (this.controlErrorAnchorParent) {\n      return this.controlErrorAnchorParent.vcr;\n    }\n    return this.vcr;\n  }\n\n  private buildConfig(): ErrorTailorConfig {\n    return {\n      ...{\n        blurPredicate(element) {\n          return element.tagName === 'INPUT' || element.tagName === 'SELECT';\n        },\n        controlErrorComponent: DefaultControlErrorComponent,\n      },\n\n      ...this.config,\n\n      controlErrorsOn: {\n        async: this.controlErrorsOnAsync ?? this.config.controlErrorsOn?.async ?? true,\n        blur: this.controlErrorsOnBlur ?? this.config.controlErrorsOn?.blur ?? true,\n        change: this.controlErrorsOnChange ?? this.config.controlErrorsOn?.change ?? false,\n        status: this.controlErrorsOnStatusChange ?? this.config.controlErrorsOn?.status ?? false,\n      },\n    };\n  }\n\n  private addCustomClass() {\n    if (this.isInput) {\n      this.host.parentElement.classList.add(errorTailorClass);\n      if (this.controlCustomClass) {\n        this.host.classList.add(...this.customClasses);\n      }\n    }\n  }\n\n  private removeCustomClass() {\n    if (this.isInput) {\n      this.host.parentElement.classList.remove(errorTailorClass);\n      if (this.controlCustomClass) {\n        this.host.classList.remove(...this.customClasses);\n      }\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ControlErrorAnchorDirective } from './control-error-anchor.directive';\nimport { DefaultControlErrorComponent } from './control-error.component';\nimport { ControlErrorsDirective } from './control-error.directive';\nimport { FormActionDirective } from './form-action.directive';\n\nconst _errorTailorImports = [\n  ControlErrorsDirective,\n  ControlErrorAnchorDirective,\n  DefaultControlErrorComponent,\n  FormActionDirective,\n];\n\n@NgModule({\n  imports: [_errorTailorImports],\n  exports: [_errorTailorImports],\n})\nexport class errorTailorImports {}\n","/*\n * Public API Surface of error-tailor\n */\n\nexport { errorTailorImports } from './lib/error-tailor.module';\nexport {\n  ControlErrorComponent,\n  ErrorComponentTemplate,\n  DefaultControlErrorComponent,\n} from './lib/control-error.component';\nexport { ControlErrorAnchorDirective } from './lib/control-error-anchor.directive';\nexport { ControlErrorsDirective } from './lib/control-error.directive';\nexport { FormActionDirective } from './lib/form-action.directive';\nexport {\n  ErrorTailorConfig,\n  ErrorsUseValue,\n  ErrorTailorConfigProvider,\n  ErrorsProvider,\n  FORM_ERRORS,\n  ErrorsUseFactory,\n  provideErrorTailorConfig,\n} from './lib/error-tailor.providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ControlErrorAnchorDirective","i2.FormActionDirective"],"mappings":"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"}