{"version":3,"file":"error-collect.mjs","sources":["../../../../packages/abc/error-collect/error-collect.component.ts","../../../../packages/abc/error-collect/error-collect.module.ts","../../../../packages/abc/error-collect/error-collect.ts"],"sourcesContent":["import { Direction, Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  ElementRef,\n  Input,\n  OnInit,\n  ViewEncapsulation,\n  inject,\n  numberAttribute\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { interval } from 'rxjs';\n\nimport { AlainConfigService } from '@delon/util/config';\nimport { NzIconDirective } from 'ng-zorro-antd/icon';\n\n@Component({\n  selector: 'error-collect, [error-collect]',\n  exportAs: 'errorCollect',\n  template: `\n    <i nz-icon nzType=\"exclamation-circle\"></i>\n    <span class=\"error-collect__count\">{{ count }}</span>\n  `,\n  host: {\n    '[class.error-collect]': 'true',\n    '[class.error-collect-rtl]': `dir === 'rtl'`,\n    '[class.d-none]': '_hiden',\n    '(click)': '_click()'\n  },\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [NzIconDirective]\n})\nexport class ErrorCollectComponent implements OnInit {\n  private readonly el: HTMLElement = inject(ElementRef).nativeElement;\n  private readonly cdr = inject(ChangeDetectorRef);\n  private readonly doc = inject(DOCUMENT);\n  private readonly directionality = inject(Directionality);\n  private readonly platform = inject(Platform);\n  private readonly destroy$ = inject(DestroyRef);\n\n  private formEl: HTMLFormElement | null = null;\n\n  _hiden = true;\n  count = 0;\n  dir?: Direction = 'ltr';\n\n  @Input({ transform: numberAttribute }) freq!: number;\n  @Input({ transform: numberAttribute }) offsetTop!: number;\n\n  constructor(configSrv: AlainConfigService) {\n    configSrv.attach(this, 'errorCollect', { freq: 500, offsetTop: 65 + 64 + 8 * 2 });\n  }\n\n  private get errEls(): NodeListOf<HTMLElement> {\n    return this.formEl!.querySelectorAll('.ant-form-item-has-error');\n  }\n\n  private update(): void {\n    const count = this.errEls.length;\n    if (count === this.count) return;\n    this.count = count;\n    this._hiden = count === 0;\n    this.cdr.markForCheck();\n  }\n\n  _click(): boolean {\n    if (this.count === 0) return false;\n    // nz-form-control\n    const els = this.errEls;\n    const formItemEl = this.findParent(els[0], '[nz-form-control]') || els[0];\n    formItemEl.scrollIntoView(true);\n    // fix header height\n    this.doc.documentElement.scrollTop -= this.offsetTop;\n    return true;\n  }\n\n  private install(): void {\n    this.dir = this.directionality.value;\n    this.directionality.change.pipe(takeUntilDestroyed(this.destroy$)).subscribe(direction => {\n      this.dir = direction;\n      this.cdr.detectChanges();\n    });\n    interval(this.freq)\n      .pipe(takeUntilDestroyed(this.destroy$))\n      .subscribe(() => this.update());\n    this.update();\n  }\n\n  private findParent(el: Element, selector: string): HTMLFormElement | null {\n    let retEl: HTMLFormElement | null = null;\n    while (el) {\n      if (el.querySelector(selector)) {\n        retEl = el as HTMLFormElement;\n        break;\n      }\n      el = el.parentElement as HTMLFormElement;\n    }\n    return retEl;\n  }\n\n  ngOnInit(): void {\n    if (!this.platform.isBrowser) return;\n\n    this.formEl = this.findParent(this.el, 'form');\n    if (this.formEl === null) throw new Error('No found form element');\n    this.install();\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { ErrorCollectComponent } from './error-collect.component';\n\nconst COMPONENTS = [ErrorCollectComponent];\n\n@NgModule({\n  imports: [CommonModule, NzIconModule, ...COMPONENTS],\n  exports: COMPONENTS\n})\nexport class ErrorCollectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}