{"version":3,"file":"ng-devui-form.mjs","sources":["../../devui/form/form-control.component.ts","../../devui/form/form-control.component.html","../../devui/form/form-label.component.ts","../../devui/form/form-label.component.html","../../devui/form/form-item.component.ts","../../devui/form/validator-directive/validators.ts","../../devui/form/validator-directive/validate.type.ts","../../devui/form/validator-directive/form-control-rules.directive.ts","../../devui/form/form.directive.ts","../../devui/form/form-operation.component.ts","../../devui/form/services/d-validate-sync.service.ts","../../devui/form/validator-directive/d-validate-sync.directive.ts","../../devui/form/form.module.ts","../../devui/form/ng-devui-form.ts"],"sourcesContent":["import { ChangeDetectorRef, Component, ElementRef, HostBinding, Input, OnInit, Renderer2, TemplateRef } from '@angular/core';\nimport { DFormControlStatus } from './validator-directive/validate.type';\n\n@Component({\n  selector: 'd-form-control',\n  templateUrl: './form-control.component.html',\n  styleUrls: ['./form-control.component.scss'],\n  preserveWhitespaces: false,\n})\nexport class FormControlComponent implements OnInit {\n  @Input() extraInfo: string | TemplateRef<any>;\n  get extraInfoTemplate() {\n    return this.extraInfo instanceof TemplateRef ? this.extraInfo : null;\n  }\n\n  errorMessage: string;\n  @Input() feedbackStatus: DFormControlStatus | null;\n\n  @Input() suffixTemplate: TemplateRef<any>;\n\n  @HostBinding('class.devui-form-control-has-feedback') get status() {\n    return !!this.feedbackStatus;\n  }\n\n  @HostBinding('class.devui-form-control-has-suffix') get suffix() {\n    return !!this.suffixTemplate;\n  }\n\n  /**\n   * @desc Compatible with z-index of components that include dropdown menu, will be remove.\n   *\n   */\n  @HostBinding('class.devui-control-has-open-dropdown') get dropdownOpen() {\n    return !!this.elementRef.nativeElement.querySelector('.devui-dropdown-origin-open');\n  }\n\n  constructor(private elementRef: ElementRef, renderer: Renderer2, private cdr: ChangeDetectorRef) {\n    renderer.addClass(elementRef.nativeElement, 'devui-form-controls');\n  }\n\n  ngOnInit() {}\n\n  public updateErrorMessage(message: string) {\n    this.errorMessage = message;\n    this.cdr.detectChanges();\n  }\n\n  public updateFeedbackStatus(status: DFormControlStatus | null): void {\n    this.feedbackStatus = status;\n    this.cdr.detectChanges();\n  }\n}\n","<div class=\"devui-form-control-container\">\n  <ng-content></ng-content>\n  <span *ngIf=\"suffixTemplate\" class=\"devui-form-item-suffix suffix\">\n    <ng-template [ngTemplateOutlet]=\"suffixTemplate\"></ng-template>\n  </span>\n\n  <span [attr.class]=\"'devui-form-item-icon devui-form-item-icon-' + feedbackStatus\" *ngIf=\"feedbackStatus\">\n    <svg *ngIf=\"feedbackStatus === 'error'\" width=\"14px\" height=\"14px\" viewBox=\"0 0 16 16\">\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <circle cx=\"8\" cy=\"8\" r=\"8\"></circle>\n        <polygon\n          points=\"8.07106781 6.65685425 10.8994949 3.82842712 12.3137085 5.24264069 9.48528137 8.07106781 12.3137085 10.8994949 10.8994949 12.3137085 8.07106781 9.48528137 5.24264069 12.3137085 3.82842712 10.8994949 6.65685425 8.07106781 3.82842712 5.24264069 5.24264069 3.82842712\"\n        ></polygon>\n      </g>\n    </svg>\n    <svg *ngIf=\"feedbackStatus === 'success'\" width=\"14px\" height=\"14px\" viewBox=\"0 0 16 16\">\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <circle cx=\"8\" cy=\"8\" r=\"8\"></circle>\n        <polygon\n          points=\"6.53553391 9.77817459 12.1923882 4.12132034 13.6066017 5.53553391 6.53553391 12.6066017 3 9.07106781 4.41421356 7.65685425 6.53553391 9.77817459\"\n        ></polygon>\n      </g>\n    </svg>\n    <svg *ngIf=\"feedbackStatus === 'pending'\" width=\"14px\" height=\"14px\" viewBox=\"0 0 16 16\">\n      <g id=\"loading\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <path\n          d=\"M8,0 C12.4,0 16,3.6 16,8 C16,12.4 12.4,16 8,16 C3.6,16 0,12.4 0,8 C0,3.6 3.6,0 8,0 Z M8,1 C4.15,1 1,4.15 1,8 C1,11.85 4.15,15 8,15 C11.85,15 15,11.85 15,8 C15,4.15 11.85,1 8,1 Z\"\n          fill-rule=\"nonzero\"\n        ></path>\n        <path d=\"M8,0 C12.4,0 16,3.6 16,8 L15,8 C15,4.15 11.85,1 8,1 L8,0 Z\" fill-rule=\"nonzero\"></path>\n      </g>\n    </svg>\n  </span>\n</div>\n<div class=\"devui-form-control-inner-content\">\n  <div class=\"devui-form-message\" *ngIf=\"errorMessage\">\n    <span class=\"devui-form-message-text\">\n      <span>\n        {{ errorMessage }}\n      </span>\n    </span>\n  </div>\n  <div *ngIf=\"extraInfo\" class=\"devui-form-control-extra-info\">\n    <ng-template [ngTemplateOutlet]=\"extraInfoTemplate || defaultTemplate\"> </ng-template>\n    <ng-template #defaultTemplate>\n      {{ extraInfo }}\n    </ng-template>\n  </div>\n</div>\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input, Renderer2, TemplateRef\n} from '@angular/core';\nimport { DFormControlStatus } from './validator-directive/validate.type';\n\n@Component({\n  selector: 'd-form-label',\n  templateUrl: './form-label.component.html',\n  styleUrls: ['./form-label.component.scss'],\n  preserveWhitespaces: false\n})\nexport class FormLabelComponent {\n  @Input() required = false;\n  @Input() hasHelp = false;\n  @Input() helpTips = '';\n  @Input() customHelpTipTemplate: TemplateRef<any>;\n\n  feedbackStatus: DFormControlStatus | null = null;\n\n  @HostBinding('class.devui-form-label-has-feedback') get status() {\n    return this.feedbackStatus !== null;\n  }\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    elementRef: ElementRef,\n    renderer: Renderer2\n  ) {\n    renderer.addClass(elementRef.nativeElement, 'devui-form-label');\n  }\n\n  public updateFeedbackStatus(status: DFormControlStatus | null): void {\n    this.feedbackStatus = status;\n    this.cdr.detectChanges();\n  }\n}\n","<span class=\"devui-form-span\" [ngClass]=\"{ 'devui-required': required }\">\n  <ng-content></ng-content>\n</span>\n<svg\n  *ngIf=\"hasHelp\"\n  dPopover\n  [content]=\"customHelpTipTemplate || helpTipsTemplate\"\n  [popType]=\"'info'\"\n  [position]=\"'top'\"\n  [controlled]=\"true\"\n  trigger=\"hover\"\n  class=\"devui-helping\"\n  width=\"16px\"\n  height=\"16px\"\n  viewBox=\"0 0 16 16\"\n>\n  <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n    <path\n      d=\"M8,1 C9.88227821,1 11.6450792,1.74560326 12.9497351,3.05025198 C14.2543924,4.35492369 15,6.11772556 15,8 C15,9.88227587 14.2543913,11.6450767 12.949734,12.949734 C11.6450767,14.2543913 9.88227587,15 8,15 C6.11772556,15 4.35492369,14.2543924 3.05024866,12.9497318 C1.74560326,11.6450792 1,9.88227821 1,8 C1,6.11772322 1.74560213,4.35492125 3.0502542,3.05024755 C4.35492125,1.74560213 6.11772322,1 8,1 Z M8,11.2634757 C7.47757297,11.2634757 7.05405405,11.6869946 7.05405405,12.2094216 C7.05405405,12.7318486 7.47757297,13.1553676 8,13.1553676 C8.52242703,13.1553676 8.94594595,12.7318486 8.94594595,12.2094216 C8.94594595,11.6869946 8.52242703,11.2634757 8,11.2634757 Z M8,3.12834054 C6.43270866,3.12834054 5.16216216,4.39888703 5.16216216,5.96617838 C5.16216216,6.27963729 5.41627082,6.53374595 5.72972973,6.53374595 C6.04318864,6.53374595 6.2972973,6.27963729 6.2972973,5.96617838 C6.2972973,5.02580486 7.05962648,4.26347568 8,4.26347568 C8.94037352,4.26347568 9.7027027,5.02580486 9.7027027,5.96617838 C9.7027027,6.9065519 8.94037352,7.66888108 8,7.66888108 C7.68654109,7.66888108 7.43243243,7.92298974 7.43243243,8.23644865 L7.43243243,8.23644865 L7.43243243,9.74996216 L7.44157671,9.85198315 C7.48963374,10.1167525 7.72136986,10.3175297 8,10.3175297 L8,10.3175297 L8.10202099,10.3083855 C8.36679036,10.2603284 8.56756757,10.0285923 8.56756757,9.74996216 L8.56756757,9.74996216 L8.56756757,8.74578378 L8.72552115,8.71042694 C9.94134023,8.38984467 10.8378378,7.28270311 10.8378378,5.96617838 C10.8378378,4.39888703 9.56729134,3.12834054 8,3.12834054 Z\"\n      fill-rule=\"nonzero\"\n    ></path>\n  </g>\n</svg>\n<svg *ngIf=\"feedbackStatus === 'error'\" class=\"devui-icon devui-icon-error\" width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n  <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n    <circle cx=\"8\" cy=\"8\" r=\"7\"></circle>\n    <path\n      d=\"M8,0 C3.6,0 0,3.6 0,8 C0,12.4 3.6,16 8,16 C12.4,16 16,12.4 16,8 C16,3.6 12.4,0 8,0 Z M9,12.6 L7,12.6 L7,10.6 L9,10.6 L9,12.6 Z M9,9.1 L7,9.1 L6.9,3.1 L9.1,3.1 L9,9.1 Z\"\n      fill-rule=\"nonzero\"\n    ></path>\n  </g>\n</svg>\n<ng-template #helpTipsTemplate>\n  <span class=\"devui-help-tips\">{{ helpTips }}</span>\n</ng-template>\n","import { ChangeDetectorRef, Component, ContentChild, ElementRef, HostBinding, Input, OnInit, Renderer2 } from '@angular/core';\nimport { FormControlComponent } from './form-control.component';\nimport { FormLabelComponent } from './form-label.component';\nimport { DFormControlStatus } from './validator-directive/validate.type';\n\n@Component({\n  selector: 'd-form-item',\n  template: ` <ng-content></ng-content> `,\n  styleUrls: ['./form-item.component.scss'],\n  preserveWhitespaces: false,\n})\nexport class FormItemComponent implements OnInit {\n  @HostBinding('class.devui-form-has-error-msg') _hasErrorMsg = false;\n\n  /**\n   * @deprecated Use dHasFeedback to replace, No longer support for label\n   */\n  @Input() dFeedbackType: 'label' | 'control';\n\n  @Input() dHasFeedback = false;\n\n  @ContentChild(FormControlComponent) controlInstance: FormControlComponent;\n  @ContentChild(FormLabelComponent) labelInstance: FormLabelComponent;\n\n  constructor(elementRef: ElementRef, renderer: Renderer2, private cdr: ChangeDetectorRef) {\n    // FIXME: 循环依赖，打包后将不可用：FormItemComponent -> FormDirective -> DFormControlRuleDirective -> FormItemComponent\n    // @Optional() @Host() @SkipSelf() private _dForm: FormDirective,\n\n    renderer.addClass(elementRef.nativeElement, 'devui-form-item');\n  }\n\n  ngOnInit() {}\n\n  updateFeedback(status: DFormControlStatus | null, updateMessage: string): void {\n    this._hasErrorMsg = !!updateMessage;\n\n    const feedbackType = this.dFeedbackType;\n    if (feedbackType === 'label' && this.labelInstance) {\n      this.labelInstance.updateFeedbackStatus(status);\n    } else if ((feedbackType === 'control' || this.dHasFeedback) && this.controlInstance) {\n      this.controlInstance.updateFeedbackStatus(status);\n    }\n\n    if (this.controlInstance) {\n      this.controlInstance.updateErrorMessage(updateMessage);\n    }\n\n    this.cdr.detectChanges();\n  }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n// @dynamic\nexport class DValidators {\n  // eslint-disable-next-line max-len\n  private static readonly ScriptPattern = /<+\\/?[Ss][Cc][Rr][Ii][Pp][Tt] *.*>*/;\n  // eslint-disable-next-line max-len\n  private static readonly UrlPattern = /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5]))\\.){3}((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5])))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i;\n  private static readonly Ipv4Pattern = /^(((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5]))\\.){3}((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5]))$/i;\n  // eslint-disable-next-line max-len\n  private static readonly Ipv6Pattern = /^(((([\\da-f]{1,4}):){7}([\\da-f]{1,4}))|(((([\\da-f]{1,4}):){1,7}:)|((([\\da-f]{1,4}):){6}:([\\da-f]{1,4}))|((([\\da-f]{1,4}):){5}:(([\\da-f]{1,4}):)?([\\da-f]{1,4}))|((([\\da-f]{1,4}):){4}:(([\\da-f]{1,4}):){0,2}([\\da-f]{1,4}))|((([\\da-f]{1,4}):){3}:(([\\da-f]{1,4}):){0,3}([\\da-f]{1,4}))|((([\\da-f]{1,4}):){2}:(([\\da-f]{1,4}):){0,4}([\\da-f]{1,4}))|((([\\da-f]{1,4}):){1}:(([\\da-f]{1,4}):){0,5}([\\da-f]{1,4}))|(::(([\\da-f]{1,4}):){0,6}([\\da-f]{1,4}))|(::([\\da-f]{1,4})?))|(((([\\da-f]{1,4}):){6}(((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5]))\\.){3}((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5])))|((([\\da-f]{1,4}):){5}:(((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5]))\\.){3}((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5])))|((([\\da-f]{1,4}):){4}:(([\\da-f]{1,4}):)?(((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5]))\\.){3}((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5])))|((([\\da-f]{1,4}):){3}:(([\\da-f]{1,4}):){0,2}(((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5]))\\.){3}((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5])))|((([\\da-f]{1,4}):){2}:(([\\da-f]{1,4}):){0,3}(((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5]))\\.){3}((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5])))|(([\\da-f]{1,4})::(([\\da-f]{1,4}):){0,4}(((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5]))\\.){3}((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5])))|(::(([\\da-f]{1,4}):){0,5}(((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5]))\\.){3}((1?[1-9]?\\d)|(10\\d)|(2[0-4]\\d)|(25[0-5])))))$/i;\n  private static readonly AlphabetPattern = /^[a-zA-Z]+(\\s+[a-zA-Z]+)*$/;\n  private static readonly DigitPattern = /^\\d+$/;\n  private static readonly IntegerPattern = /^-?\\d+$/;\n  private static readonly NumberPattern = /^(?:-?\\d+|[+-]?[\\d]+([\\.][\\d]+)?([Ee][+-]?[\\d]+)?|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/; // 支持科学计数法\n  private static readonly PortRange: [number, number] = [0, 65535];\n  private static isEmptyInput(value: any): boolean {\n    return value === null || value.length === 0;\n  }\n\n  /* Failed if only has whitespace */\n  public static whiteSpace(control: AbstractControl): ValidationErrors | null {\n    let res = null;\n    if (typeof control.value === 'string' && control.value.length !== 0 && control.value.trim().length === 0) {\n      res = { whitespace: true };\n    }\n    return res;\n  }\n\n  /**\n   * 校验是否包含\n   * @param contain\n   * @returns\n   */\n  public static contains(contain: string | number): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      if (DValidators.isEmptyInput(control.value) || DValidators.isEmptyInput(contain)) {\n        return null;\n      }\n\n      return control.value.indexOf(contain) === -1 ? { contains: { requiredContains: contain, actualValue: control.value } } : null;\n    };\n  }\n\n  /**\n   * 校验是否不包含\n   * @param contain\n   * @returns\n   */\n  public static notContains(contain: string | number): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      if (DValidators.isEmptyInput(control.value) || DValidators.isEmptyInput(contain)) {\n        return null;\n      }\n\n      return control.value.indexOf(contain) !== -1 ? { notContains: { requiredNotContains: contain, actualValue: control.value } } : null;\n    };\n  }\n\n  /**\n   * 校验是否相等\n   * @param equal\n   * @returns\n   */\n  public static equal(equal: string | number | boolean): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      if (DValidators.isEmptyInput(control.value) || DValidators.isEmptyInput(equal)) {\n        return null;\n      }\n\n      return control.value !== equal ? { equal: { requiredEqual: equal, actualValue: control.value } } : null;\n    };\n  }\n\n  /**\n   * 校验是否不相等\n   * @param equal\n   * @returns\n   */\n  public static notEqual(equal: string | number): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      if (DValidators.isEmptyInput(control.value) || DValidators.isEmptyInput(equal)) {\n        return null;\n      }\n\n      return control.value === equal ? { notEqual: { requiredNotEqual: equal, actualValue: control.value } } : null;\n    };\n  }\n\n  /**\n   * 校验端口号\n   * @param control\n   * @returns\n   */\n  public static port(control: AbstractControl): ValidationErrors | null {\n    if (DValidators.isEmptyInput(control.value)) {\n      return null;\n    }\n\n    return DValidators.DigitPattern.test(control.value) &&\n      control.value >= DValidators.PortRange[0] &&\n      control.value <= DValidators.PortRange[1]\n      ? null\n      : { port: { min: DValidators.PortRange[0], max: DValidators.PortRange[1] } };\n  }\n\n  /**\n   * 校验日期是否合法\n   * @param control\n   * @returns\n   */\n  public static date(control: AbstractControl): ValidationErrors | null {\n    if (DValidators.isEmptyInput(control.value)) {\n      return null; // don't validate empty values to allow optional controls\n    }\n\n    return !/Invalid|NaN/.test(new Date(control.value).toString()) ? null : { date: true };\n  }\n\n  /**\n   * 校验 url 是否合法\n   * @param control\n   * @returns\n   */\n  public static url(control: AbstractControl): ValidationErrors | null {\n    if (DValidators.isEmptyInput(control.value)) {\n      return null; // don't validate empty values to allow optional controls\n    }\n\n    return DValidators.UrlPattern.test(control.value) ? null : { url: true };\n  }\n\n  /**\n   * 校验整数\n   * @param control\n   * @returns\n   */\n  public static integer(control: AbstractControl): ValidationErrors | null {\n    if (DValidators.isEmptyInput(control.value)) {\n      return null; // don't validate empty values to allow optional controls\n    }\n\n    return DValidators.IntegerPattern.test(control.value) ? null : { integer: true };\n  }\n\n  /**\n   * 校验是否是数字\n   * @param control\n   * @returns\n   */\n  public static digits(control: AbstractControl): ValidationErrors | null {\n    if (DValidators.isEmptyInput(control.value)) {\n      return null; // don't validate empty values to allow optional controls\n    }\n\n    return DValidators.DigitPattern.test(control.value) ? null : { digits: true };\n  }\n\n  /**\n   * 校验数字，支持科学计数法\n   * @param control\n   * @returns\n   */\n  public static number(control: AbstractControl): ValidationErrors | null {\n    if (DValidators.isEmptyInput(control.value)) {\n      return null; // don't validate empty values to allow optional controls\n    }\n\n    return DValidators.NumberPattern.test(control.value) ? null : { number: true };\n  }\n\n  /**\n   * 校验是否是字母\n   * @param control\n   * @returns\n   */\n  public static alphabet(control: AbstractControl): ValidationErrors | null {\n    if (DValidators.isEmptyInput(control.value)) {\n      return null;\n    }\n\n    return DValidators.AlphabetPattern.test(control.value) ? null : { alphabet: true };\n  }\n\n  /**\n   * 校验是 script 标签\n   * @param control\n   * @returns\n   */\n  public static notScript(control: AbstractControl): ValidationErrors | null {\n    if (DValidators.isEmptyInput(control.value)) {\n      return null;\n    }\n\n    return DValidators.ScriptPattern.test(control.value) ? { notScript: true } : null;\n  }\n\n  /**\n   * 校验 ipv4\n   * @param control\n   * @returns\n   */\n  public static ipv4(control: AbstractControl): ValidationErrors | null {\n    if (DValidators.isEmptyInput(control.value)) {\n      return null;\n    }\n\n    return DValidators.Ipv4Pattern.test(control.value) ? null : { ipv4: true };\n  }\n\n  /**\n   * 校验 ipv6\n   * @param control\n   * @returns\n   */\n  public static ipv6(control: AbstractControl): ValidationErrors | null {\n    if (DValidators.isEmptyInput(control.value)) {\n      return null;\n    }\n\n    return DValidators.Ipv6Pattern.test(control.value) ? null : { ipv6: true };\n  }\n}\n","import { TemplateRef } from '@angular/core';\nimport { AsyncValidatorFn, ValidatorFn, Validators } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { DValidators } from './validators';\n\n/* pristine: 抛出error包括pristine状态\n ** dirty: 抛出error需在dirty状态\n */\nexport type DValidationErrorStrategy = 'pristine' | 'dirty';\n\nexport type DFormControlStatus = 'error' | 'pending' | 'success';\n\n// DForm ValidatorFn\nexport type DValidatorFn = (value: any) => boolean | string | { [key: string]: string } | null;\n\n// DForm AsyncValidatorFn\nexport type DAsyncValidatorFn = (value: any) => Observable<boolean | string | { [key: string]: string } | null>;\n\n/* id: 自定义验证器必须具有（也可不必）\n ** validator: 自定义验证器必须传入，可支持函数与正则类型，函数必须返回true或false\n ** 其他key：必须是已注册key\n ** priority: error抛出的优先级，同时错误，值越大越优先抛出，值相同，后注册先抛出\n ** COMMENT: 我们这里将提供warning状态，warning状态不会向上传递，不会加入实际校验器中，在所有校验器校验完成后进行校验，若有错则不再进行校验，若无错，则进行校验。\n ** warning若为异步校验器，只更新当前devui-pending状态，不更新全局\n */\nexport interface DValidateRule {\n  id?: string;\n  validator?: DValidatorFn | ValidatorFn;\n  message?: string | { [key: string]: string } | TemplateRef<any>;\n  errorStrategy?: DValidationErrorStrategy;\n  priority?: number;\n  isNgValidator?: boolean;\n  validateLevel?: 'error' | 'warning'; // 校验级别\n  [id: string]: boolean | number | string |\n  { [key: string]: string } | RegExp | DValidatorFn | ValidatorFn | undefined | TemplateRef<any>; // 万能key\n}\nexport interface DAsyncValidateRule {\n  id?: string;\n  validator?: DAsyncValidatorFn | AsyncValidatorFn;\n  message?: string | { [key: string]: string } | TemplateRef<any>;\n  errorStrategy?: DValidationErrorStrategy;\n  priority?: number;\n  isNgValidator?: boolean;\n  validateLevel?: 'error' | 'warning'; // 校验级别\n  [id: string]:\n  | boolean\n  | number\n  | string\n  | { [key: string]: string }\n  | RegExp\n  | DAsyncValidatorFn\n  | AsyncValidatorFn\n  | undefined\n  | TemplateRef<any>; // 万能key\n}\n\n// TODO: 还需提供一个debounceTime\nexport type DValidateRules =\n  | {\n    validators?: DValidateRule[];\n    asyncValidators?: DAsyncValidateRule[];\n    asyncDebounceTime?: number; // 异步校验器debounceTime\n    errorStrategy?: DValidationErrorStrategy; // error更新策略\n    message?: string | { [key: string]: string } | TemplateRef<any>; // 统一配置的message\n    updateOn?: 'change' | 'blur' | 'submit'; // model更新策略\n    messageShowType?: 'popover' | 'text' | 'none'; // 消息自动显示策略（当前仅单个表单组件下生效），自身附着popover | form-control下显示 | 不显示，\n    popPosition?:\n    | 'left'\n    | 'right'\n    | 'top'\n    | 'bottom'\n    | 'bottom-left'\n    | 'bottom-right'\n    | 'top-left'\n    | 'top-right'\n    | 'left-top'\n    | 'left-bottom'\n    | 'right-top'\n    | 'right-bottom'\n    | (\n      | 'left'\n      | 'right'\n      | 'top'\n      | 'bottom'\n      | 'bottom-left'\n      | 'bottom-right'\n      | 'top-left'\n      | 'top-right'\n      | 'left-top'\n      | 'left-bottom'\n      | 'right-top'\n      | 'right-bottom'\n    )[];\n  }\n  | DValidateRule[];\n\nexport interface DValidateErrorStatus {\n  errorMessage: string | { [key: string]: string } | null;\n  showError: boolean;\n  errors: { [key: string]: any };\n}\n\n/* TODO: 这里是否需要导出 */\nexport const ruleReservedWords = [\n  'id',\n  'validator',\n  'message',\n  'errorStrategy',\n  'priority',\n  'isNgValidator',\n  'popPosition',\n  'asyncDebounceTime',\n];\n\n// 这里要考虑如果可全局添加默认\nexport const dDefaultValidators = {\n  required: Validators.required,\n  minlength: Validators.minLength, // 实际设置时再次调用该方法传入具体值\n  maxlength: Validators.maxLength, // 实际设置时再次调用该方法传入具体值\n  min: Validators.min,\n  max: Validators.max,\n  requiredTrue: Validators.requiredTrue,\n  email: Validators.email,\n  pattern: Validators.pattern,\n  whitespace: DValidators.whiteSpace,\n};\n\nexport interface DPopConfig {\n  popMaxWidth?: number;\n  scrollElement?: Element;\n  zIndex?: number;\n  showAnimation?: boolean;\n}\n","import {\r\n  ComponentFactoryResolver,\r\n  ComponentRef,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Host,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n  Output,\r\n  Self,\r\n  SimpleChanges,\r\n  SkipSelf,\r\n  TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  AbstractControlDirective,\r\n  AsyncValidatorFn,\r\n  ControlContainer,\r\n  NgControl,\r\n  ValidationErrors,\r\n  ValidatorFn,\r\n} from '@angular/forms';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { OverlayContainerRef } from 'ng-devui/overlay-container';\r\nimport { PopoverComponent } from 'ng-devui/popover';\r\nimport { Observable, Subject, fromEvent, merge, timer } from 'rxjs';\r\nimport { map, switchMap, takeUntil } from 'rxjs/operators';\r\nimport { FormItemComponent } from '../form-item.component';\r\nimport {\r\n  DAsyncValidateRule,\r\n  DFormControlStatus,\r\n  DPopConfig,\r\n  DValidateErrorStatus,\r\n  DValidateRule,\r\n  DValidateRules,\r\n  DValidationErrorStrategy,\r\n  dDefaultValidators,\r\n  ruleReservedWords,\r\n} from './validate.type';\r\n\r\n@Directive()\r\nexport abstract class DAbstractControlRuleDirective implements OnChanges {\r\n  /* mode is _cd.control */\r\n  public readonly _cd: AbstractControlDirective; // model is _cd.control\r\n\r\n  /* parent dValidateRuleDirective */\r\n  private _parent: DAbstractControlRuleDirective;\r\n\r\n  /* 预置rules: originRules */\r\n  private _originRules: DValidateRules;\r\n\r\n  /* rules */\r\n  private _rules: DValidateRules;\r\n\r\n  /* 统一设置错误抛出策略 */\r\n  private _errorStrategy: DValidationErrorStrategy = 'dirty'; // 统一设置错误抛出策略\r\n\r\n  /* rules map */\r\n  private _messageOpts: { [key: string]: DValidateRule | DAsyncValidateRule };\r\n\r\n  /* 是否已经注册监听 */\r\n  private _registered = false;\r\n\r\n  public readonly errors: { [key: string]: any } | null;\r\n\r\n  private _errorMessage: string = null;\r\n\r\n  /* status warning */\r\n  private _warning: boolean;\r\n\r\n  /* 内置国际化text */\r\n  i18nFormText: I18nInterface['form'];\r\n\r\n  /* language key */\r\n  _locale: string;\r\n  set locale(key: string) {\r\n    this._locale = key;\r\n    this._parseErrors(this._cd.control.errors);\r\n    this.updateStatusAndMessageToView(this._cd.control.status);\r\n  }\r\n\r\n  get locale(): string {\r\n    return this._locale;\r\n  }\r\n\r\n  public get errorMessage() {\r\n    return this._cd && this._cd.control.invalid\r\n      ? this._errorMessage || (this._rules && (this._rules as { message: string }).message)\r\n      : null;\r\n  }\r\n\r\n  public set errorMessage(msg: string) {\r\n    if (this._cd && this._cd.control.invalid) {\r\n      this._errorMessage = msg;\r\n    } else {\r\n      this._errorMessage = null;\r\n    }\r\n  }\r\n\r\n  @Output() dRulesStatusChange = new EventEmitter<DValidateErrorStatus>();\r\n\r\n  constructor(cd: AbstractControlDirective, parent: DAbstractControlRuleDirective) {\r\n    this._cd = cd;\r\n    this._parent = parent;\r\n  }\r\n\r\n  get isReady() {\r\n    return this._cd.control ? !(this._cd.control.invalid || this._cd.control.pending) : true;\r\n  }\r\n\r\n  get pending() {\r\n    return this._cd.control ? this._cd.control.pending : true;\r\n  }\r\n\r\n  /* 包含继承自父级的rule */\r\n  get fullRules(): DValidateRules {\r\n    const keysCanInherit = ['messageShowType', 'errorStrategy', 'messageToView', 'popPosition', 'asyncDebounceTime'];\r\n    const resRules = { ...this._rules };\r\n    keysCanInherit.forEach((key) => {\r\n      if (this._parent && this._parent.fullRules) {\r\n        resRules[key] = resRules[key] !== undefined ? resRules[key] : this._parent.fullRules[key];\r\n      }\r\n    });\r\n    return resRules;\r\n  }\r\n\r\n  get asyncValidatorDebounceTime(): number {\r\n    const time = (this.fullRules as { asyncDebounceTime: number }).asyncDebounceTime;\r\n    return time === undefined ? 300 : time;\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if ('rules' in changes && !this._rules) {\r\n      // TODO：提供外部调用可手动更新rule方法\r\n      this._rules = { ...this._originRules, ...this._translateRulesToObject(changes.rules.currentValue) };\r\n      this.setupOrUpdateRules();\r\n    }\r\n\r\n    if (!this._registered) {\r\n      this._registerOnStatusChange();\r\n    }\r\n  }\r\n\r\n  public updateRules(rules: DValidateRules): void {\r\n    this._rules = { ...this._originRules, ...this._translateRulesToObject(rules) };\r\n    this.setupOrUpdateRules();\r\n  }\r\n\r\n  public setOriginRules(rules: DValidateRules): void {\r\n    this._originRules = this._translateRulesToObject(rules);\r\n  }\r\n\r\n  public setupOrUpdateRules(): void {\r\n    // TODO：校验rules规则是否合法\r\n    this._transformRulesAndUpdateToModel();\r\n    this._setUpdateStrategy();\r\n  }\r\n  private _transformRulesAndUpdateToModel(): void {\r\n    this._messageOpts = {};\r\n\r\n    if (!Array.isArray(this._rules)) {\r\n      if (this._rules.validators) {\r\n        const validators: ValidatorFn[] = this._transformValidatorsToFnArray(this._rules.validators) as ValidatorFn[];\r\n        this._updateValidators(validators);\r\n      }\r\n      if (this._rules.asyncValidators) {\r\n        const asyncValidators: AsyncValidatorFn[] = this._transformValidatorsToFnArray(\r\n          this._rules.asyncValidators,\r\n          true\r\n        ) as AsyncValidatorFn[];\r\n        this._updateAsyncValidators(asyncValidators);\r\n      }\r\n    } else {\r\n      const validators: ValidatorFn[] = this._transformValidatorsToFnArray(this._rules) as ValidatorFn[];\r\n      this._updateValidators(validators);\r\n    }\r\n    this._updateValueAndValidity();\r\n  }\r\n\r\n  private _transformValidatorsToFnArray(\r\n    validators: DValidateRule[] | DAsyncValidateRule[],\r\n    async = false\r\n  ): ValidatorFn[] | AsyncValidatorFn[] {\r\n    const resultFns = [];\r\n    validators.forEach((validatorRule: DValidateRule) => {\r\n      // TODO: 提供可全局统一注册方法\r\n      const validatorId: string = this._autoGetIdFromRule(validatorRule);\r\n      let validator = null;\r\n\r\n      if (!validatorId) {\r\n        // TODO：抛出错误\r\n      }\r\n\r\n      if (validatorId in dDefaultValidators) {\r\n        validator = this._generateValidatorFnFromDefault(validatorId, validatorRule[validatorId]);\r\n      } else {\r\n        if (typeof validatorRule[validatorId] === 'string') {\r\n          validator = validatorRule.validator;\r\n        } else {\r\n          validator = validatorRule[validatorId];\r\n        }\r\n        if (!validatorRule.isNgValidator) {\r\n          if (!async) {\r\n            validator = this._transformRuleToNgValidator(validatorId, validator, validatorRule.message);\r\n          } else {\r\n            validator = this._transformRuleToNgAsyncValidator(validatorId, validator, validatorRule.message);\r\n          }\r\n        }\r\n      }\r\n\r\n      if (validator) {\r\n        if (async && this.asyncValidatorDebounceTime) {\r\n          const oldValidator = validator;\r\n          validator = (control: AbstractControl): Observable<ValidationErrors | null> => {\r\n            return timer(this.asyncValidatorDebounceTime).pipe(\r\n              switchMap(() => {\r\n                return oldValidator(control);\r\n              })\r\n            );\r\n          };\r\n        }\r\n        resultFns.push(validator);\r\n        this._messageOpts[validatorId] = validatorRule;\r\n      }\r\n      // else {\r\n      //   // TODO: 抛出错误\r\n      // }\r\n    });\r\n    return resultFns as AsyncValidatorFn[] | ValidatorFn[];\r\n  }\r\n\r\n  private _translateRulesToObject(rules: DValidateRules) {\r\n    if (Array.isArray(rules)) {\r\n      return {\r\n        validators: rules,\r\n      };\r\n    }\r\n\r\n    return rules;\r\n  }\r\n\r\n  private _findNgValidatorInDefault(validatorRule: DValidateRule) {\r\n    for (const key in dDefaultValidators) {\r\n      if (Object.prototype.hasOwnProperty.call(validatorRule, key)) {\r\n        return { id: key, ngValidator: this._generateValidatorFnFromDefault(key, validatorRule[key]) };\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  private _generateValidatorFnFromDefault(key, value) {\r\n    if (typeof value === 'boolean' && value) {\r\n      // boolean无需再执行函数进行传值\r\n      return dDefaultValidators[key];\r\n    } else if (typeof value !== 'boolean') {\r\n      return dDefaultValidators[key](value);\r\n    }\r\n    return null;\r\n  }\r\n\r\n  private _transformRuleToNgValidator(id, validatorFn, message) {\r\n    return (control: AbstractControl): ValidationErrors | null => {\r\n      const res = validatorFn(control.value);\r\n      return this._transValidatorResultToNgError(id, res, message);\r\n    };\r\n  }\r\n\r\n  private _transformRuleToNgAsyncValidator(id, validator, message) {\r\n    return (control: AbstractControl): Observable<ValidationErrors | null> => {\r\n      return (validator(control.value) as Observable<boolean>).pipe(\r\n        map((res) => {\r\n          return this._transValidatorResultToNgError(id, res, message);\r\n        })\r\n      );\r\n    };\r\n  }\r\n\r\n  private _transValidatorResultToNgError(id: string, res: boolean | string | null, message: string) {\r\n    let error = null;\r\n    if (typeof res === 'boolean' && !res) {\r\n      error = {};\r\n      error[id] = message;\r\n    } else if (typeof res === 'string' || (res && typeof res === 'object')) {\r\n      // 兼容国际化词条\r\n      error = {};\r\n      error[id] = res;\r\n    }\r\n    return error;\r\n  }\r\n\r\n  private _autoGetIdFromRule(rule: DValidateRule | DAsyncValidateRule) {\r\n    for (const key in rule) {\r\n      if (!(key in ruleReservedWords)) {\r\n        return key;\r\n      }\r\n    }\r\n    return rule.id || null;\r\n  }\r\n\r\n  // TODO: 考虑自定义函数返回多种key场景\r\n  get dClassError() {\r\n    if (this._errorStrategy === 'dirty') {\r\n      return this._cd.control ? this._cd.control.invalid && this._cd.control.dirty : false;\r\n    } else {\r\n      return this._cd.control ? this._cd.control.invalid : false;\r\n    }\r\n  }\r\n\r\n  get showError() {\r\n    return this.dClassError;\r\n  }\r\n\r\n  get showStatus() {\r\n    if (this._errorStrategy === 'dirty') {\r\n      return this._cd.control ? this._cd.control.dirty : false;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  get dClassSuccess() {\r\n    // COMMENT: 暂不默认提供\r\n    if ((this._rules as any).errorStrategy === 'dirty') {\r\n      return this._cd.control ? this._cd.control.valid && this._cd.control.dirty : false;\r\n    } else if (!(this._rules as any).errorStrategy) {\r\n      return false;\r\n    } else {\r\n      return this._cd.control ? this._cd.control.valid : false;\r\n    }\r\n  }\r\n\r\n  get dClassWarning() {\r\n    return this._warning ? true : false;\r\n  }\r\n\r\n  get invalid() {\r\n    return this._cd.control ? this._cd.control.invalid : false;\r\n  }\r\n\r\n  private _registerOnStatusChange() {\r\n    if (this._cd && this._cd.control) {\r\n      this._cd.control.statusChanges.subscribe((status) => {\r\n        this._parseErrors(this._cd.control.errors);\r\n        this._updateParent(); // update error message to parent directive\r\n        this.updateStatusAndMessageToView(status);\r\n      });\r\n      this._registered = true;\r\n    }\r\n  }\r\n\r\n  private _parseErrors(errors: { [key: string]: any }): void {\r\n    if (!errors) {\r\n      this._errorMessage = null;\r\n    } else {\r\n      /* if a rule did not have a message, we will try to get a message from errors by id */\r\n      const { resId, resRule } = this._getARuleByErrors(errors);\r\n      this._errorStrategy = this._getErrorStrategy(resRule);\r\n      this._errorMessage =\r\n        resRule &&\r\n        (resRule.message ||\r\n          this._getMessageFormErrorsById(errors, resId) ||\r\n          this._getDefaultErrorMessage(resRule, resId) ||\r\n          (this._rules as { message: string }).message);\r\n    }\r\n\r\n    this.dRulesStatusChange.emit({\r\n      showError: this.showError,\r\n      errorMessage: this._errorMessage,\r\n      errors: errors,\r\n    });\r\n  }\r\n\r\n  private _getDefaultErrorMessage(rule, id) {\r\n    return rule && rule[id] && this.i18nFormText[id] && this.i18nFormText[id](rule[id]);\r\n  }\r\n\r\n  private _getErrorStrategy(rule?) {\r\n    return (rule && rule.errorStrategy) || (this._rules as any).errorStrategy || 'dirty';\r\n  }\r\n\r\n  private _getMessageFormErrorsById(errors: { [key: string]: any }, id: string): string | null {\r\n    if (errors[id] && typeof errors[id] === 'string') {\r\n      return errors[id];\r\n    } else if (errors[id] && typeof errors[id] === 'object' && (errors[id][this.locale] || errors[id].default)) {\r\n      return errors[id];\r\n    } else {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  private _getARuleByErrors(errors: { [key: string]: any }) {\r\n    // TODO：处理errors为null\r\n    let resId: string;\r\n    let resRule = null;\r\n    for (const key of Object.keys(errors)) {\r\n      if (this._messageOpts[key]) {\r\n        if (resRule) {\r\n          const priority = resRule.priority || 0;\r\n          if (this._messageOpts[key].priority && this._messageOpts[key].priority > priority) {\r\n            resId = key;\r\n            resRule = this._messageOpts[key];\r\n          }\r\n        } else {\r\n          resId = key;\r\n          resRule = this._messageOpts[key];\r\n        }\r\n      }\r\n    }\r\n    return { resId: resId, resRule: resRule };\r\n  }\r\n\r\n  _updateParent() {\r\n    if (this._parent) {\r\n      // TODO\r\n    }\r\n  }\r\n\r\n  private _setUpdateStrategy(): void {\r\n    if (!Array.isArray(this._rules) && typeof this._rules === 'object' && this._rules.updateOn) {\r\n      (this._cd.control as any)._updateOn = this._rules.updateOn;\r\n    }\r\n  }\r\n\r\n  public _updateValueAndValidity() {\r\n    if (this._cd && this._cd.control) {\r\n      this._cd.control.updateValueAndValidity();\r\n    }\r\n  }\r\n\r\n  private _updateValidators(newValidator: ValidatorFn | ValidatorFn[] | null): void {\r\n    if (this._cd && this._cd.control) {\r\n      this._cd.control.setValidators(newValidator);\r\n    }\r\n  }\r\n\r\n  private _updateAsyncValidators(newValidator: AsyncValidatorFn | AsyncValidatorFn[] | null): void {\r\n    if (this._cd && this._cd.control) {\r\n      this._cd.control.setAsyncValidators(newValidator);\r\n    }\r\n  }\r\n\r\n  abstract updateStatusAndMessageToView(status: any): void;\r\n}\r\n\r\nconst dControlErrorStatusHost = {\r\n  '[class.devui-error]': 'dClassError',\r\n  '[class.devui-success]': 'dClassSuccess',\r\n  '[class.devui-warning]': 'dClassWarning',\r\n};\r\n\r\n@Directive({\r\n  selector: `[dValidateRules][formGroupName],[dValidateRules][formArrayName],[dValidateRules][ngModelGroup],\r\n          [dValidateRules][formGroup],[dValidateRules]form:not([ngNoForm]),[dValidateRules][ngForm]`,\r\n  /* eslint-disable-next-line @angular-eslint/no-host-metadata-property*/\r\n  host: dControlErrorStatusHost,\r\n  exportAs: 'dValidateRules',\r\n})\r\nexport class DFormGroupRuleDirective extends DAbstractControlRuleDirective implements OnInit, OnChanges, OnDestroy {\r\n  @Input('dValidateRules') rules: DValidateRules;\r\n  @Output() dRulesStatusChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  private destroy$ = new Subject<void>();\r\n\r\n  constructor(@Self() cd: ControlContainer, @Optional() @Host() @SkipSelf() parentDir: DFormGroupRuleDirective, private i18n: I18nService) {\r\n    super(cd, parentDir);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.i18nFormText = this.i18n.getI18nText().form;\r\n    this.locale = this.i18n.getI18nText().locale;\r\n\r\n    this.i18n\r\n      .langChange()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((data: I18nInterface) => {\r\n        this.i18nFormText = data.form;\r\n        this.locale = data.locale;\r\n      });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  setErrorMessageByChild(msg: string) {\r\n    if (!this.errorMessage) {\r\n      this.errorMessage = msg;\r\n    }\r\n  }\r\n\r\n  updateStatusAndMessageToView(status: any): void {\r\n    // do nothing\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: '[dValidateRules][formControlName],[dValidateRules][ngModel],[dValidateRules][formControl]',\r\n  /* eslint-disable-next-line @angular-eslint/no-host-metadata-property*/\r\n  host: dControlErrorStatusHost,\r\n  exportAs: 'dValidateRules',\r\n})\r\nexport class DFormControlRuleDirective extends DAbstractControlRuleDirective implements OnInit, OnChanges, OnDestroy {\r\n  @Input('dValidateRules') rules: DValidateRules;\r\n  @Output() dRulesStatusChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  @Input('dValidatePopConfig') popConfig: DPopConfig;\r\n\r\n  popoverComponentRef: ComponentRef<PopoverComponent>;\r\n  popMessage: string | TemplateRef<any>; // 最终显示的message\r\n  private destroy$ = new Subject<void>();\r\n  private _prevMessage: string;\r\n\r\n  get showType() {\r\n    return (this.fullRules as { messageShowType: string }).messageShowType || 'popover';\r\n  }\r\n\r\n  get popPosition() {\r\n    return (this.fullRules as { popPosition: any }).popPosition || ['right', 'bottom'];\r\n  }\r\n\r\n  constructor(\r\n  @Self() cd: NgControl,\r\n          @Optional() @Host() private dFormItem: FormItemComponent,\r\n          @Optional() @Host() @SkipSelf() parentDir: DFormGroupRuleDirective,\r\n          private i18n: I18nService,\r\n          public triggerElementRef: ElementRef,\r\n          private overlayContainerRef: OverlayContainerRef,\r\n          private componentFactoryResolver: ComponentFactoryResolver\r\n  ) {\r\n    super(cd, parentDir);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.setI18nText();\r\n    this._registerFocusChange();\r\n  }\r\n\r\n  setI18nText() {\r\n    this.i18nFormText = this.i18n.getI18nText().form;\r\n    this.locale = this.i18n.getI18nText().locale;\r\n\r\n    this.i18n\r\n      .langChange()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((data: I18nInterface) => {\r\n        this.i18nFormText = data.form;\r\n        this.locale = data.locale;\r\n      });\r\n  }\r\n\r\n  _registerFocusChange() {\r\n    merge(fromEvent(this.triggerElementRef.nativeElement, 'focusin'), fromEvent(this.triggerElementRef.nativeElement, 'focusout'))\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((event: Event) => {\r\n        if (event.type === 'focusin') {\r\n          this.showPopMessage();\r\n        }\r\n        if (event.type === 'focusout') {\r\n          this.hidePopMessage();\r\n        }\r\n      });\r\n  }\r\n\r\n  _updateFormContainer(status, message: string): void {\r\n    if (this.dFormItem) {\r\n      this.dFormItem.updateFeedback(status, message);\r\n    }\r\n  }\r\n\r\n  _updatePopMessage(status: DFormControlStatus, message: string): void {\r\n    this.popMessage = status === 'error' ? message : null; // 暂不提供除errorMessage外提示\r\n    if (this.popoverComponentRef) {\r\n      if (this._prevMessage !== this.popMessage) {\r\n        this.hidePopMessage();\r\n        this.showPopMessage();\r\n        this._prevMessage = this.popMessage;\r\n      }\r\n    }\r\n  }\r\n\r\n  updateStatusAndMessageToView(status: any): void {\r\n    let controlStatus = null;\r\n    let message = null;\r\n    if (this.showStatus) {\r\n      [controlStatus, message] = this.getFormControlStatusAndMessage(status);\r\n    }\r\n\r\n    /* 国际化适配 */\r\n    if (message && typeof message === 'object') {\r\n      message = message[this.locale] || message.default || message;\r\n    }\r\n\r\n    if (this.showType === 'popover') {\r\n      this._updatePopMessage(controlStatus, message);\r\n      this._updateFormContainer(controlStatus, null);\r\n    } else if (this.showType === 'text') {\r\n      this._updateFormContainer(controlStatus, message);\r\n    }\r\n  }\r\n\r\n  getFormControlStatusAndMessage(ngStatus: any) {\r\n    let status = null;\r\n    let message = null;\r\n    if (ngStatus === 'INVALID') {\r\n      status = 'error';\r\n      message = this.errorMessage;\r\n    } else if (ngStatus === 'PENDING') {\r\n      status = 'pending';\r\n    } else if (ngStatus === 'VALID') {\r\n      status = 'success';\r\n    }\r\n    return [status, message];\r\n  }\r\n\r\n  createPopover(type: 'error' | 'warning', content: string) {\r\n    this.popoverComponentRef = this.overlayContainerRef.createComponent(\r\n      this.componentFactoryResolver.resolveComponentFactory(PopoverComponent)\r\n    );\r\n    Object.assign(this.popoverComponentRef.instance, {\r\n      content: content,\r\n      triggerElementRef: this.triggerElementRef,\r\n      position: this.popPosition,\r\n      popType: type,\r\n      popMaxWidth: this.popConfig?.popMaxWidth || 200,\r\n      scrollElement: this.popConfig?.scrollElement,\r\n      zIndex: this.popConfig?.zIndex || 1060,\r\n      showAnimation: this.popConfig?.showAnimation ?? true,\r\n      appendToBody: true,\r\n    });\r\n  }\r\n\r\n  public showPopMessage() {\r\n    this.showPop('error', this.popMessage);\r\n    if (this.popMessage) {\r\n      this._updateFormContainer(null, null);\r\n    }\r\n  }\r\n\r\n  public hidePopMessage() {\r\n    this.hidePop();\r\n    if (this.popMessage) {\r\n      this._updateFormContainer(this.showError ? 'error' : null, null);\r\n    }\r\n  }\r\n\r\n  showPop(type, message) {\r\n    this.hidePop();\r\n    this.createPopover(type, message);\r\n  }\r\n\r\n  hidePop() {\r\n    if (this.popoverComponentRef) {\r\n      this.destroyPop();\r\n    }\r\n  }\r\n\r\n  destroyPop() {\r\n    if (this.popoverComponentRef) {\r\n      this.popoverComponentRef.destroy();\r\n      this.popoverComponentRef = null;\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroyPop();\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n}\r\n","import { ContentChildren, Directive, EventEmitter, HostBinding, Input, Optional, Output, QueryList, Self } from '@angular/core';\nimport { AbstractControl, AbstractControlDirective, ControlContainer, NgForm, ValidationErrors } from '@angular/forms';\nimport { filter, startWith, take } from 'rxjs/operators';\nimport { DFormControlRuleDirective, DFormGroupRuleDirective } from './validator-directive/form-control-rules.directive';\n\nexport enum FormLayout {\n  Horizontal = 'horizontal',\n  Vertical = 'vertical',\n  Columns = 'columns',\n}\n\n@Directive({\n  selector: '[dForm]',\n  exportAs: 'dForm',\n})\nexport class FormDirective {\n  @Input() layout = FormLayout.Horizontal;\n  @Input() labelSize: 'sm' | '' | 'lg' = '';\n  @Input() labelAlign: 'start' | 'center' | 'end' = 'start';\n\n  /**\n   * @deprecated Use dHasFeedback to replace, No longer support for label\n   */\n  @Input() dFeedbackType: 'label' | 'control';\n\n  @Input() dHasFeedback = false;\n\n  @Output() dSubmit = new EventEmitter();\n\n  public readonly _cd: AbstractControlDirective;\n  public readonly _dValidateRuleDir: DFormGroupRuleDirective;\n  @ContentChildren(DFormControlRuleDirective, { descendants: true }) childrenCtrDirs: QueryList<DFormControlRuleDirective>;\n\n  @HostBinding('class.devui-form-horizontal')\n  get layoutHorizontal() {\n    return this.layout === FormLayout.Horizontal;\n  }\n\n  @HostBinding('class.devui-form-vertical')\n  get layoutVertical() {\n    return this.layout === FormLayout.Vertical;\n  }\n\n  @HostBinding('class.devui-form-columns')\n  get layoutColumns() {\n    return this.layout === FormLayout.Columns;\n  }\n\n  @HostBinding('class.devui-form-lg')\n  get labelSizeLg() {\n    return this.labelSize === 'lg';\n  }\n\n  @HostBinding('class.devui-form-sm')\n  get labelSizeSm() {\n    return this.labelSize === 'sm';\n  }\n\n  @HostBinding('class.devui-form-label-align-start')\n  get labelAlignStart() {\n    return this.labelAlign === 'start';\n  }\n\n  @HostBinding('class.devui-form-label-align-center')\n  get labelAlignCenter() {\n    return this.labelAlign === 'center';\n  }\n\n  @HostBinding('class.devui-form-label-align-end')\n  get labelAlignEnd() {\n    return this.labelAlign === 'end';\n  }\n\n  updateOnSubmit($event?, data?: any) {\n    this._operateAllControl(this._cd.control, (cd: AbstractControl) => {\n      cd.markAsDirty();\n      cd.updateValueAndValidity();\n    });\n\n    /* emit event should after validate */\n    this._cd.control.statusChanges\n      .pipe(\n        startWith(this._cd.control.status),\n        filter((status) => {\n          return status !== 'PENDING';\n        }),\n        take(1)\n      )\n      .subscribe(() => {\n        if (this._cd) {\n          (this._cd as NgForm).onSubmit($event); // TODO: 需触发原生form表单的submit方法\n          if (this._dValidateRuleDir) {\n            this.dSubmit.emit({\n              valid: this._dValidateRuleDir.isReady,\n              directive: this._dValidateRuleDir,\n              data: data,\n              errors: this._getAllErrors(this._cd.control)\n            });\n          } else {\n            this.dSubmit.emit({\n              valid: this._cd.valid,\n              directive: this._cd,\n              data: data,\n              errors: this._getAllErrors(this._cd.control)\n            });\n          }\n        }\n\n        if (this.childrenCtrDirs) {\n          for (const validateDir of this.childrenCtrDirs) {\n            if (validateDir.invalid && validateDir.showType === 'popover') {\n              validateDir.showPopMessage(); // TODO: 表单类组件需要实现focus方法，若无focus，将无法正常blur\n              break;\n            }\n          }\n        }\n      });\n  }\n\n  updateOnReset() {\n    if (this._cd) {\n      (this._cd as NgForm).onReset(); // TODO: 需触发原生form表单的reset方法\n    }\n    this._operateAllControl(this._cd.control, (cd: AbstractControl) => {\n      cd.markAsPristine();\n      cd.updateValueAndValidity();\n    });\n  }\n\n  private _operateAllControl(control: AbstractControl, operatorFn: (control: AbstractControl) => void) {\n    if (control) {\n      operatorFn(control);\n      const controls = (control as any).controls;\n      if (controls) {\n        for (const key of Object.keys(controls)) {\n          this._operateAllControl(controls[key], operatorFn);\n        }\n      }\n    }\n  }\n\n  private _getAllErrors(control: AbstractControl) {\n    const res: {[key: string]: ValidationErrors} = {};\n    if (control) {\n      res.errors = control.errors;\n      const controls = (control as any).controls;\n      if (controls) {\n        for (const key of Object.keys(controls)) {\n          res[key] = this._getAllErrors(controls[key]);\n        }\n      }\n    }\n\n    return res;\n  }\n\n  constructor(@Optional() @Self() cd: ControlContainer, @Optional() @Self() dValidateRuleDir: DFormGroupRuleDirective) {\n    this._cd = cd;\n    this._dValidateRuleDir = dValidateRuleDir;\n  }\n}\n\n@Directive({\n  selector: '[dActiveFormControl]',\n  exportAs: 'dActiveFormControl',\n})\nexport class ActiveFormControlDirective {\n  @HostBinding('class.devui-active-form') flag = true;\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  Directive,\n  ElementRef,\n  Host,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Renderer2\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { FormDirective } from './form.directive';\n\n@Component({\n  selector: 'd-form-operation',\n  template: '<ng-content></ng-content>',\n  styles: [\n    `\n      .devui-form-horizontal :host.devui-form-operation {\n        display: block;\n        margin-left: 96px;\n      }\n      .devui-form-vertical :host.devui-form-operation {\n        display: block;\n      }\n      .devui-form-columns :host.devui-form-operation {\n        display: block;\n        padding: 8px 0;\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n})\nexport class FormOperationComponent implements OnInit {\n  constructor(elementRef: ElementRef, renderer: Renderer2) {\n    renderer.addClass(elementRef.nativeElement, 'devui-form-operation');\n  }\n\n  ngOnInit() {}\n}\n\n@Directive({\n  selector: '[dFormSubmit]',\n})\nexport class DFormSubmitDirective implements AfterViewInit, OnDestroy {\n  @HostBinding('class.devui-form-submit') default = true;\n\n  _eventName = 'click';\n  @Input('dFormSubmit')\n  set eventName(eventName) {\n    if (eventName) {\n      this._eventName = eventName;\n      this.registerEvent();\n    }\n  }\n\n  @Input('dFormSubmitData') data: any;\n\n  private destroy$ = new Subject<void>();\n\n  // TODO：这里是否需要接管如果所关联的表单校验不通过，切换到disabled状态\n\n  constructor(private elementRef: ElementRef, @Optional() @Host() private _dForm: FormDirective) {}\n\n  ngAfterViewInit() {\n    this.registerEvent();\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  registerEvent() {\n    this.destroy$.next();\n    fromEvent(this.elementRef.nativeElement, this._eventName)\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(($event) => {\n        if (this._dForm) {\n          this._dForm.updateOnSubmit($event, this.data);\n        }\n      });\n  }\n}\n\n@Directive({\n  selector: '[dFormReset]',\n})\nexport class DFormResetDirective implements AfterViewInit, OnDestroy {\n  @HostBinding('class.devui-form-reset') default = true;\n\n  // TODO: emit now form\n  // TODO: Abstract a parent class\n  _eventName = 'click';\n  @Input('dFormReset')\n  set eventName(eventName) {\n    if (eventName) {\n      this._eventName = eventName;\n      this.registerEvent();\n    }\n  }\n\n  private destroy$ = new Subject<void>();\n\n  constructor(private elementRef: ElementRef, @Optional() @Host() private _dForm: FormDirective) {}\n\n  ngAfterViewInit() {\n    this.registerEvent();\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  registerEvent() {\n    this.destroy$.next();\n    fromEvent(this.elementRef.nativeElement, this._eventName)\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => {\n        if (this._dForm) {\n          this._dForm.updateOnReset();\n        }\n      });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nfunction resolvedPromiseFunc() { return Promise.resolve(null); }\nconst resolvedPromise = resolvedPromiseFunc();\n@Injectable({ providedIn: 'root' })\nexport class DValidateSyncService {\n\n  controlsMap: Map<string, AbstractControl[]>;\n  controlsSubMap: Map<AbstractControl, Subscription>;\n\n  constructor() {\n    this.controlsMap = new Map();\n    this.controlsSubMap = new Map();\n  }\n\n  addControl(key: string, cd: AbstractControl): void {\n    if (!this.controlsMap.get(key)) {\n      this.controlsMap.set(key, []);\n    }\n    this.controlsMap.get(key).push(cd);\n    this._addControlSubscription(key, cd);\n  }\n\n  removeControl(key: string, cd: AbstractControl): void {\n    if (this.controlsMap.get(key)) {\n      const controls = this.controlsMap.get(key);\n      const index = controls.indexOf(cd);\n      if (index !== -1) {\n        controls.splice(index, 1);\n      }\n    }\n    this._removeControlSubscription(cd);\n  }\n\n  validateControlsSync(key: string, cd: AbstractControl): void {\n    const controls = this.controlsMap.get(key);\n\n    if (controls) {\n      controls.forEach(control => { // 首先清除当前周期监听，避免循环监听\n        this._removeControlSubscription(control);\n      });\n\n      controls.forEach(control => {\n        if (control !== cd) {\n          resolvedPromise.then(() => { // 在下一个视图更新周期执行\n            control.updateValueAndValidity();\n          });\n        }\n      });\n\n      controls.forEach(control => {\n        resolvedPromise.then(() => {\n          this._addControlSubscription(key, control);\n        });\n      });\n    }\n  }\n\n  _addControlSubscription(key: string, cd: AbstractControl): void {\n    this._removeControlSubscription(cd);\n    const sub = cd.valueChanges.subscribe(() => {\n      this.validateControlsSync(key, cd);\n    });\n    this.controlsSubMap.set(cd, sub);\n  }\n\n  _removeControlSubscription(cd: AbstractControl): void {\n    if (this.controlsSubMap.get(cd)) {\n      this.controlsSubMap.get(cd).unsubscribe();\n      this.controlsSubMap.delete(cd);\n    }\n  }\n}\n","import { Directive, Input, OnChanges, OnDestroy, Self } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { DValidateSyncService } from '../services/d-validate-sync.service';\n\n@Directive({\n  selector: `[dValidateSyncKey][formControlName],[dValidateSyncKey][ngModel],[dValidateSyncKey][formControl],\n    [dValidateSyncKey][formGroupName],[dValidateSyncKey][formArrayName],[dValidateSyncKey][ngModelGroup],\n    [dValidateSyncKey][formGroup],[dValidateSyncKey]form:not([ngNoForm]),[dValidateSyncKey][ngForm]\n  `,\n  exportAs: 'dValidateSync'\n})\n\nexport class DValidateSyncDirective implements OnChanges, OnDestroy {\n\n  private _added = false;\n\n  @Input('dValidateSyncKey') key: string;\n\n  constructor(@Self() private _cd: NgControl, private syncService: DValidateSyncService) {}\n\n  ngOnChanges() {\n    if (this.key && this._cd.control && !this._added) {\n      this.syncService.addControl(this.key, this._cd.control);\n      this._added = true;\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.key && this._cd.control) {\n      this.syncService.removeControl(this.key, this._cd.control);\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PopoverModule } from 'ng-devui/popover';\nimport { FormControlComponent } from './form-control.component';\nimport { FormItemComponent } from './form-item.component';\nimport { FormLabelComponent } from './form-label.component';\nimport { DFormResetDirective, DFormSubmitDirective, FormOperationComponent } from './form-operation.component';\nimport { ActiveFormControlDirective, FormDirective } from './form.directive';\nimport { DValidateSyncDirective } from './validator-directive/d-validate-sync.directive';\nimport { DFormControlRuleDirective, DFormGroupRuleDirective } from './validator-directive/form-control-rules.directive';\n\n@NgModule({\n  imports: [CommonModule, ReactiveFormsModule, FormsModule, PopoverModule],\n  exports: [\n    FormItemComponent,\n    FormLabelComponent,\n    FormControlComponent,\n    FormOperationComponent,\n    FormDirective,\n    DFormGroupRuleDirective,\n    DFormControlRuleDirective,\n    DFormSubmitDirective,\n    DFormResetDirective,\n    DValidateSyncDirective,\n    ActiveFormControlDirective\n  ],\n  declarations: [\n    FormItemComponent,\n    FormLabelComponent,\n    FormControlComponent,\n    FormOperationComponent,\n    FormDirective,\n    DFormGroupRuleDirective,\n    DFormControlRuleDirective,\n    DFormSubmitDirective,\n    DFormResetDirective,\n    DValidateSyncDirective,\n    ActiveFormControlDirective\n  ],\n  providers: [],\n})\nexport class FormModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.FormItemComponent","i2.DFormGroupRuleDirective","i1.FormDirective","i2.DValidateSyncService"],"mappings":"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"}