{"version":3,"file":"koalarx-ui-form.mjs","sources":["../../../projects/form/src/lib/btn-submit/btn-submit.component.ts","../../../projects/form/src/lib/btn-submit/btn-submit.component.html","../../../projects/form/src/lib/dynamic-form/enums/dynamic-form-type-field.enum.ts","../../../projects/form/src/lib/dynamic-form/builder/fields/field.base.ts","../../../projects/form/src/lib/dynamic-form/builder/fields/autocomplete.builder.ts","../../../projects/form/src/lib/dynamic-form/builder/fields/field.builder.ts","../../../projects/form/src/lib/dynamic-form/builder/fields/more-items.builder.ts","../../../projects/form/src/lib/dynamic-form/builder/dynamic-form.builder.ts","../../../projects/form/src/lib/dynamic-form/validators/date-min.validator.ts","../../../projects/form/src/lib/dynamic-form/validators/date-max.validator.ts","../../../projects/form/src/lib/dynamic-form/koala.dynamic-form.service.ts","../../../projects/form/src/lib/dynamic-form/validators/validation.helper.ts","../../../projects/form/src/lib/dynamic-form/validators/cpf.validator.ts","../../../projects/form/src/lib/dynamic-form/validators/cnpj.validator.ts","../../../projects/form/src/lib/dynamic-form/validators/autocomplete-selected.validator.ts","../../../projects/form/src/lib/dynamic-form/validators/koala-dynamic-form-validator-result.helper.ts","../../../projects/form/src/lib/show-invalid-fields/show-invalid-fields.ts","../../../projects/form/src/lib/form.abstract.ts","../../../projects/form/src/lib/directives/koala-autofocus.directive.ts","../../../projects/form/src/lib/dynamic-form/dynamic-form.component.ts","../../../projects/form/src/lib/dynamic-form/dynamic-form.component.html","../../../projects/form/src/lib/koala.form.module.ts","../../../projects/form/src/koalarx-ui-form.ts"],"sourcesContent":["import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { KoalaLanguageHelper } from \"@koalarx/ui/core\";\n\n@Component({\n  selector: 'koala-submit',\n  templateUrl: 'btn-submit.component.html',\n  styleUrls: ['btn-submit.component.css']\n})\nexport class BtnSubmitComponent implements OnInit, OnChanges {\n  @Input() fg: UntypedFormGroup;\n  @Input() color: ThemePalette = 'primary';\n  @Input() btnLabel: string = KoalaLanguageHelper.getBtnLabel();\n  @Input() btnSubmitDisabled = false;\n  @Input() loader: BehaviorSubject<boolean>;\n  @Input() iconButton: boolean;\n  @Input() icon: string;\n  @Input() iconColor: 'blue' | 'red' | 'yellow' | 'black' | 'green';\n  public disabled = new BehaviorSubject<boolean>(false);\n\n  ngOnInit() {\n    if (!this.btnLabel) {\n      this.btnLabel = KoalaLanguageHelper.getBtnLabel();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.btnSubmitDisabled) {\n      this.disabled.next(changes.btnSubmitDisabled.currentValue);\n    }\n  }\n}\n","<button\n\t*ngIf=\"!iconButton else btnIcon\"\n\t[color]=\"color\"\n\t[disabled]=\"(disabled | async) || fg.invalid || fg.pending\"\n\tmat-raised-button\n\ttype=\"submit\">\n  <span>{{btnLabel}}</span>\n  <mat-spinner *ngIf=\"loader | async\" diameter=\"20\"></mat-spinner>\n</button>\n<ng-template #btnIcon>\n  <button\n\t  [color]=\"color\"\n\t  [disabled]=\"(disabled | async) || fg.invalid || fg.pending\"\n\t  class=\"koala-icon-button\"\n\t  mat-icon-button\n\t  type=\"submit\">\n    <mat-spinner *ngIf=\"loader | async\" [color]=\"color\" diameter=\"20\"></mat-spinner>\n    <mat-icon *ngIf=\"!(loader | async)\">{{icon}}</mat-icon>\n  </button>\n</ng-template>\n","export enum DynamicFormTypeFieldEnum {\n  text = 1,\n  password,\n  cpf,\n  cnpj,\n  datetime,\n  email,\n  phone,\n  number,\n  valueList,\n  textarea,\n  time,\n  hoursAndMinutes,\n  checkbox,\n  select,\n  coin,\n  percent,\n  moreItems,\n  id,\n  textLogs,\n  file,\n  autocomplete,\n  color,\n  dynamicForm,\n  date,\n  radio,\n  float,\n  stringNumber,\n  selectMultipleNative,\n  month,\n  competenceDate,\n  stringWithCustomMasc\n}\n","import { KoalaDynamicFormFieldInterface } from \"../../interfaces/koala.dynamic-form-field.interface\";\nimport { DynamicFormTypeFieldEnum } from \"../../enums/dynamic-form-type-field.enum\";\nimport { FloatLabelType, MatFormFieldAppearance } from \"@angular/material/form-field\";\nimport { AsyncValidatorFn, UntypedFormBuilder, ValidatorFn } from \"@angular/forms\";\nimport { KoalaDynamicFormConfigInterface } from \"../../interfaces/koala.dynamic-form-config.interface\";\nimport { koala } from \"@koalarx/utils\";\nimport { DeviceDetectorService } from \"ngx-device-detector\";\nimport { DynamicFormBuilder } from \"../dynamic-form.builder\";\n\nexport abstract class FieldBase {\n  protected readonly fieldConfig: KoalaDynamicFormFieldInterface;\n\n  protected constructor(\n    label: string,\n    name: string,\n    type: DynamicFormTypeFieldEnum,\n    private formConfig: KoalaDynamicFormConfigInterface,\n    protected fb: UntypedFormBuilder,\n    protected deviceService: DeviceDetectorService\n  ) {\n    this.fieldConfig = {\n      label,\n      name,\n      type\n    }\n    this.appearance().grid();\n  }\n\n  public hide(hide: boolean = true) {\n    this.fieldConfig.show = !hide;\n    return this;\n  }\n\n  public focus() {\n    this.fieldConfig.focus = true;\n    return this;\n  }\n\n  public syncValidator(validators: ValidatorFn[]) {\n    this.fieldConfig.syncValidators = validators;\n    return this;\n  }\n\n  public asyncValidator(validators: AsyncValidatorFn | AsyncValidatorFn[]) {\n    this.fieldConfig.asyncValidators = validators;\n    return this;\n  }\n\n  public disabled(disabled: boolean = true) {\n    this.fieldConfig.disabled = disabled;\n    return this;\n  }\n\n  public required(required: boolean = true) {\n    this.fieldConfig.required = required;\n    return this;\n  }\n\n  public textHint(hint: string) {\n    this.fieldConfig.textHint = hint;\n    return this;\n  }\n\n  public min(min: number) {\n    this.fieldConfig.min = min;\n    return this;\n  }\n\n  public max(max: number) {\n    this.fieldConfig.max = max;\n    return this;\n  }\n\n  public minLength(min: number) {\n    this.fieldConfig.minLength = min;\n    return this;\n  }\n\n  public maxLength(max: number) {\n    this.fieldConfig.maxLength = max;\n    return this;\n  }\n\n  public multiple(multiple = true) {\n    this.fieldConfig.multiple = multiple;\n    return this;\n  }\n\n  public valueChanges<T>(fn: (value: T) => void) {\n    this.fieldConfig.valueChanges = fn;\n    return this;\n  }\n\n  public setValue(value: any) {\n    this.fieldConfig.value = value;\n    return this;\n  }\n\n  public appearance(type: MatFormFieldAppearance = \"outline\", floatLabel: FloatLabelType = \"always\") {\n    this.fieldConfig.appearance = type;\n    this.fieldConfig.floatLabel = floatLabel;\n    return this;\n  }\n\n  public grid(size: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 = 12, width: number = 100) {\n    if (this.deviceService.isMobile()) {\n      size = 12;\n    }\n\n    for (let colSize = 12; colSize >= 1; colSize--) {\n      this.fieldConfig.class = this.fieldConfig.class?.replace('col-' + colSize, '');\n    }\n    this.addClass('col-' + size);\n    this.addFieldClass('w-' + width);\n\n    return this;\n  }\n\n  public setOptions(options: { value: any; name: string; }[]) {\n    this.fieldConfig.opcoesSelect = options;\n    return this;\n  }\n\n  public addClass(className: string) {\n    if (\n      this.deviceService.isMobile() &&\n      className.indexOf('col-') >= 0 &&\n      className.indexOf('col-12') === 0\n    ) {\n      className = className.replace('col-1', 'col-12')\n                           .replace('col-2', 'col-12')\n                           .replace('col-3', 'col-12')\n                           .replace('col-4', 'col-12')\n                           .replace('col-5', 'col-12')\n                           .replace('col-6', 'col-12')\n                           .replace('col-7', 'col-12')\n                           .replace('col-8', 'col-12')\n                           .replace('col-9', 'col-12')\n                           .replace('col-10', 'col-12')\n                           .replace('col-11', 'col-12');\n    }\n\n    this.fieldConfig.class = koala(`${this.fieldConfig?.class ?? ''} ${className}`)\n      .string()\n      .split(' ')\n      .clearEmptyValues()\n      .toString(' ')\n      .getValue();\n    return this;\n  }\n\n  public addFieldClass(className: string) {\n    this.fieldConfig.fieldClass = koala(`${this.fieldConfig?.fieldClass ?? ''} ${className}`)\n      .string()\n      .split(' ')\n      .clearEmptyValues()\n      .toString(' ')\n      .getValue();\n    return this;\n  }\n\n  public setCustomMasc(mask: string, config?: {\n    thousandSeparator?: string;\n    suffix?: string;\n    prefix?: string;\n  }) {\n    this.fieldConfig.customMasc = mask;\n    this.fieldConfig.customMascThousandSeparator = config?.thousandSeparator;\n    this.fieldConfig.customMascSuffix = config?.suffix;\n    this.fieldConfig.customMascPrefix = config?.prefix;\n    return this;\n  }\n\n  public generate() {\n    let getLastConfig = (this.formConfig.formConfig.length > 0) ?\n      this.formConfig.formConfig[this.formConfig.formConfig.length - 1] :\n      null;\n\n    if (getLastConfig?.type === DynamicFormTypeFieldEnum.moreItems && getLastConfig?.name !== 'endMoreItems') {\n      this.formConfig.formConfig[this.formConfig.formConfig.length - 1].moreItemsConfig.formConfig.push(this.fieldConfig);\n    } else {\n      if (getLastConfig?.name === 'endMoreItems') {\n        this.formConfig.formConfig.splice(this.formConfig.formConfig.length - 1, 1);\n      }\n\n      this.formConfig.formConfig.push(this.fieldConfig);\n    }\n    return new DynamicFormBuilder(\n      this.fb,\n      this.deviceService,\n      this.formConfig.formConfig\n    );\n  }\n}\n","import { KoalaDynamicFormConfigInterface } from \"../../interfaces/koala.dynamic-form-config.interface\";\nimport { DynamicFormTypeFieldEnum } from \"../../enums/dynamic-form-type-field.enum\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { KoalaDynamicAutocompleteOptionsInterface } from \"../../interfaces/koala.dynamic-autocomplete-options.interface\";\nimport { UntypedFormBuilder } from \"@angular/forms\";\nimport { KoalaDynamicFormAutocompleteMultipleConfigInterface } from \"../../interfaces/koala.dynamic-form-autocomplete-multiple-config.interface\";\nimport { FieldBase } from \"./field.base\";\nimport { DeviceDetectorService } from \"ngx-device-detector\";\n\nexport class AutocompleteBuilder extends FieldBase {\n  private service$: Observable<KoalaDynamicAutocompleteOptionsInterface[]>;\n\n  constructor(\n    label: string,\n    name: string,\n    formConfig: KoalaDynamicFormConfigInterface,\n    fb: UntypedFormBuilder,\n    deviceService: DeviceDetectorService\n  ) {\n    super(label, name, DynamicFormTypeFieldEnum.autocomplete, formConfig, fb, deviceService);\n  }\n\n  public service(service: Observable<KoalaDynamicAutocompleteOptionsInterface[]>) {\n    this.service$ = service;\n    return this;\n  }\n\n  public defaultValueOnClean(value: any) {\n    this.fieldConfig.autocompleteDefaultValueOnClear = value;\n    return this;\n  }\n\n  public loadOptions(type: 'all' | 'onDemand', onDemandFilter?: (filter: string) => Observable<KoalaDynamicAutocompleteOptionsInterface[]>) {\n    this.fieldConfig.autocompleteType = type;\n\n    if (type === \"all\") {\n      const options$ = new BehaviorSubject<KoalaDynamicAutocompleteOptionsInterface[]>([]);\n      this.service$.subscribe(options => options$.next(options));\n      this.fieldConfig.autocompleteOptions = options$;\n    } else {\n      this.fieldConfig.autocompleteFilter = onDemandFilter;\n    }\n\n    return this;\n  }\n\n  public colorChipConfig(fn: (subject: BehaviorSubject<KoalaDynamicFormAutocompleteMultipleConfigInterface>) => void) {\n    this.fieldConfig.autocompleteMultipleConfig = new BehaviorSubject<KoalaDynamicFormAutocompleteMultipleConfigInterface>(null);\n    fn(this.fieldConfig.autocompleteMultipleConfig);\n    return this;\n  }\n\n  public addOption(active: boolean = true) {\n    this.fieldConfig.autocompleteAddOption = active;\n    return this;\n  }\n}\n","import { DynamicFormTypeFieldEnum } from \"../../enums/dynamic-form-type-field.enum\";\nimport { FieldBase } from \"./field.base\";\nimport { UntypedFormBuilder } from \"@angular/forms\";\nimport { KoalaDynamicFormConfigInterface } from \"../../interfaces/koala.dynamic-form-config.interface\";\nimport { DeviceDetectorService } from \"ngx-device-detector\";\n\nexport class FieldBuilder extends FieldBase {\n\n  constructor(\n    label: string,\n    name: string,\n    type: DynamicFormTypeFieldEnum,\n    formConfig: KoalaDynamicFormConfigInterface,\n    fb: UntypedFormBuilder,\n    deviceService: DeviceDetectorService\n  ) {\n    super(label, name, type, formConfig, fb, deviceService);\n  }\n}\n","import { DynamicFormTypeFieldEnum } from \"../../enums/dynamic-form-type-field.enum\";\nimport { UntypedFormBuilder } from \"@angular/forms\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { KoalaDynamicSetValueInterface } from \"../../interfaces/koala.dynamic-set-value.interface\";\nimport { KoalaDynamicFormFieldInterface } from \"../../interfaces/koala.dynamic-form-field.interface\";\nimport { KoalaDynamicFormConfigInterface } from \"../../interfaces/koala.dynamic-form-config.interface\";\nimport { DeviceDetectorService } from \"ngx-device-detector\";\nimport { DynamicFormBuilder } from \"../dynamic-form.builder\";\n\nexport class MoreItemsBuilder {\n  private fieldConfig: KoalaDynamicFormFieldInterface;\n\n  constructor(\n    private label: string,\n    private name: string,\n    private btnAddLabel: string,\n    private min: number,\n    private max: number,\n    private formConfig: KoalaDynamicFormConfigInterface,\n    private fb: UntypedFormBuilder,\n    private deviceService: DeviceDetectorService,\n  ) {\n  }\n\n  public build() {\n    let getLastConfig = (this.formConfig.formConfig.length > 0) ?\n      this.formConfig.formConfig[this.formConfig.formConfig.length - 1] :\n      null;\n\n    this.fieldConfig = {\n      label: this.label,\n      name: this.name,\n      type: DynamicFormTypeFieldEnum.moreItems,\n      moreItemsIconBackgroundColor: '#fff',\n      moreItemsIconFontColor: '#212121',\n      moreItemsMinItems: this.min,\n      moreItemsMaxItems: this.max,\n      moreItemsButtonIconAddlabel: this.btnAddLabel,\n      moreItemsConfig: {\n        form: this.fb.group({}),\n        formConfig: [],\n        setValues: new BehaviorSubject<BehaviorSubject<KoalaDynamicSetValueInterface[]>[]>([])\n      }\n    };\n\n    if (getLastConfig?.type === DynamicFormTypeFieldEnum.moreItems && getLastConfig?.name !== 'endMoreItems') {\n      let formConfigMoreItems = getLastConfig.moreItemsConfig.formConfig as KoalaDynamicFormFieldInterface[];\n      if (formConfigMoreItems.length > 0) {\n        let lastIndexMoreItems = 0;\n        formConfigMoreItems.forEach((item, index) => {\n          if (item.type === DynamicFormTypeFieldEnum.moreItems) lastIndexMoreItems = index;\n        });\n        formConfigMoreItems[lastIndexMoreItems].moreItemsConfig.formConfig.push(this.fieldConfig);\n      } else {\n        this.formConfig.formConfig[this.formConfig.formConfig.length - 1].moreItemsConfig.formConfig.push(this.fieldConfig);\n      }\n    } else {\n      if (getLastConfig?.name === 'endMoreItems') {\n        this.formConfig.formConfig.splice(this.formConfig.formConfig.length - 1, 1);\n      }\n      this.formConfig.formConfig.push(this.fieldConfig);\n    }\n\n    return new DynamicFormBuilder(\n      this.fb,\n      this.deviceService,\n      this.formConfig.formConfig\n    );\n  }\n}\n","import { UntypedFormBuilder } from \"@angular/forms\";\nimport { KoalaDynamicFormConfigInterface } from \"../interfaces/koala.dynamic-form-config.interface\";\nimport { KoalaDynamicFormFieldInterface } from \"../interfaces/koala.dynamic-form-field.interface\";\nimport { DynamicFormTypeFieldEnum } from \"../enums/dynamic-form-type-field.enum\";\nimport { AutocompleteBuilder } from \"./fields/autocomplete.builder\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { KoalaDynamicSetValueInterface } from \"../interfaces/koala.dynamic-set-value.interface\";\nimport { KoalaDynamicFormShowFieldInterface } from \"../interfaces/koala.dynamic-form-show-field.interface\";\nimport { koala } from \"@koalarx/utils\";\nimport { DeviceDetectorService } from \"ngx-device-detector\";\nimport { FieldBuilder } from \"./fields/field.builder\";\nimport { MoreItemsBuilder } from \"./fields/more-items.builder\";\n\nexport type DynamicFormFieldType = 'text' | 'password' | 'cpf' | 'cnpj' | 'datetime' | 'email' | 'phone' | 'number' | 'stringNumber' | 'valueList' | 'textarea' | 'time' | 'hoursAndMinutes' | 'checkbox' | 'select' | 'selectMultipleNative' | 'coin' | 'percent' | 'id' | 'textLogs' | 'color' | 'date' | 'radio' | 'float' | 'month' | 'competenceDate' | 'stringWithCustomMasc';\n\nexport class DynamicFormBuilder {\n  private readonly config: KoalaDynamicFormConfigInterface;\n\n  constructor(\n    private fb: UntypedFormBuilder,\n    private deviceService: DeviceDetectorService,\n    configInMemory?: KoalaDynamicFormFieldInterface[]) {\n    this.config = {\n      form: fb.group({}),\n      formConfig: configInMemory ?? [],\n      setValues: new BehaviorSubject<KoalaDynamicSetValueInterface[]>(null),\n      showFields: new BehaviorSubject<KoalaDynamicFormShowFieldInterface[]>(null)\n    }\n  }\n\n  public field(label: string, name: string, type: DynamicFormFieldType) {\n    switch (type) {\n      case \"id\":\n      case \"text\":\n      case \"textarea\":\n      case \"number\":\n      case \"stringNumber\":\n      case \"cnpj\":\n      case \"cpf\":\n      case \"coin\":\n      case \"color\":\n      case \"date\":\n      case \"datetime\":\n      case \"email\":\n      case \"float\":\n      case \"password\":\n      case \"percent\":\n      case \"phone\":\n      case \"time\":\n      case \"hoursAndMinutes\":\n      case \"textLogs\":\n      case \"valueList\":\n      case \"checkbox\":\n      case \"radio\":\n      case \"select\":\n      case \"selectMultipleNative\":\n      case \"month\":\n      case \"competenceDate\":\n      case \"stringWithCustomMasc\":\n        return new FieldBuilder(label, name, DynamicFormTypeFieldEnum[type], this.config, this.fb, this.deviceService);\n    }\n  }\n\n  public autocomplete(label: string, name: string) {\n    return new AutocompleteBuilder(label, name, this.config, this.fb, this.deviceService);\n  }\n\n  public simpleMoreItems(label: string, name: string, btnAddLabel: string, min: number, max: number) {\n    return new MoreItemsBuilder(\n      label,\n      name,\n      btnAddLabel,\n      min,\n      max,\n      this.config,\n      this.fb,\n      this.deviceService\n    );\n  }\n\n  public autofill(object: any) {\n    if (object) {\n      const setValues: KoalaDynamicSetValueInterface[] = [];\n      Object.keys(object).forEach(indexName => {\n\n        const arrField = koala(this.config.formConfig).array<KoalaDynamicFormFieldInterface>().filter(indexName, 'name', {comparator: \"=\"}).getValue();\n        if (arrField.length === 1) {\n\n          const field = arrField[0] ?? null;\n\n          if (\n            typeof object[indexName] !== \"object\" ||\n            field.type === DynamicFormTypeFieldEnum.autocomplete ||\n            field.type === DynamicFormTypeFieldEnum.selectMultipleNative\n          ) {\n            if (field.type === DynamicFormTypeFieldEnum.textLogs) {\n              field.textObs = object[indexName];\n            } else {\n              setValues.push({\n                name: indexName,\n                value: object[indexName]\n              });\n            }\n          } else {\n            if (field.type === DynamicFormTypeFieldEnum.moreItems) {\n              const setValuesMoreItems = [];\n              const objectMoreItems = object[indexName] as any[];\n              objectMoreItems.forEach(objectItem => {\n                const moreItemValues: KoalaDynamicSetValueInterface[] = [];\n                Object.keys(objectItem).forEach(objectIndexName => {\n                  moreItemValues.push({\n                    name: objectIndexName,\n                    value: objectItem[objectIndexName]\n                  });\n                });\n                setValuesMoreItems.push(new BehaviorSubject<KoalaDynamicSetValueInterface[]>(moreItemValues));\n              });\n\n              field.moreItemsConfig?.setValues?.next(setValuesMoreItems);\n            } else if (field.type === DynamicFormTypeFieldEnum.dynamicForm) {\n              const dynamicFormObject = object[indexName];\n              const dynamicFormSetValues: KoalaDynamicSetValueInterface[] = [];\n\n              Object.keys(dynamicFormObject).forEach(dynamicFormIndexName => {\n                const arrDynamicField = koala(field.dynamicFormConfig.formConfig).array<KoalaDynamicFormFieldInterface>().filter(indexName, 'name').getValue();\n                const dynamicField = arrDynamicField[0] ?? null;\n\n                if (dynamicField?.type === DynamicFormTypeFieldEnum.textLogs) {\n                  dynamicField.textObs = object[indexName];\n                } else {\n                  dynamicFormSetValues.push({\n                    name: dynamicFormIndexName,\n                    value: dynamicFormObject[dynamicFormIndexName]\n                  });\n                }\n              });\n\n              field.dynamicFormConfig?.setValues?.next(dynamicFormSetValues);\n            } else {\n              this.autofill(object[indexName]);\n            }\n          }\n        }\n      });\n      this.config?.setValues?.next(setValues);\n    }\n\n    return this;\n  }\n\n  public literalConfig(config: KoalaDynamicFormFieldInterface) {\n    this.config.formConfig.push(config);\n    if (config.type === DynamicFormTypeFieldEnum.moreItems) this.generateMoreItems();\n    return this;\n  }\n\n  public generate(tabIndexStart = 0) {\n    this.config.formConfig = this.config.formConfig.filter(config => config.name !== 'endMoreItems');\n    this.config.tabIndexStart = tabIndexStart;\n    return this.config;\n  }\n\n  public generateMoreItems() {\n    this.config.formConfig.push({\n                                  name: 'endMoreItems',\n                                  type: DynamicFormTypeFieldEnum.moreItems\n                                });\n    return new DynamicFormBuilder(\n      this.fb,\n      this.deviceService,\n      this.config.formConfig\n    );\n  }\n}\n","import { AbstractControl, ValidationErrors } from \"@angular/forms\";\nimport { KoalaCustomValidatorFnInterface } from \"../interfaces/koala-custom-validator-fn.interface\";\n\nexport function DateMinValidator(min: string): KoalaCustomValidatorFnInterface {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value && typeof min === 'string') {\n      if (new Date(control.value) < new Date(min)) {\n        return {dateMin: true};\n      }\n    }\n    return null;\n  }\n}\n","import { AbstractControl, ValidationErrors } from \"@angular/forms\";\nimport { KoalaCustomValidatorFnInterface } from \"../interfaces/koala-custom-validator-fn.interface\";\n\nexport function DateMaxValidator(max: string): KoalaCustomValidatorFnInterface {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value && typeof max === 'string') {\n      if (new Date(control.value) > new Date(max)) {\n        return {dateMax: true};\n      }\n    }\n    return null;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { DynamicFormTypeFieldEnum } from './enums/dynamic-form-type-field.enum';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { KoalaDynamicSetValueInterface } from './interfaces/koala.dynamic-set-value.interface';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KoalaDynamicAutocompleteOptionsInterface } from './interfaces/koala.dynamic-autocomplete-options.interface';\nimport { KoalaDynamicFormShowFieldInterface } from './interfaces/koala.dynamic-form-show-field.interface';\nimport { KoalaDynamicFormConfigInterface } from './interfaces/koala.dynamic-form-config.interface';\nimport { DynamicFormBuilder } from \"./builder/dynamic-form.builder\";\nimport { koala } from \"@koalarx/utils\";\nimport { DateMinValidator } from \"./validators/date-min.validator\";\nimport { DateMaxValidator } from \"./validators/date-max.validator\";\nimport { DeviceDetectorService } from \"ngx-device-detector\";\nimport { unmaskCoin } from \"@koalarx/utils/operators/string\";\n\nexport type KoalaDynamicFormValidatorType = 'required' | 'min' | 'max';\n\n@Injectable({providedIn: \"any\"})\nexport class KoalaDynamicFormService {\n\n  constructor(\n    protected fb: UntypedFormBuilder,\n    protected deviceService: DeviceDetectorService) {\n  }\n\n  public build() {\n    return new DynamicFormBuilder(this.fb, this.deviceService);\n  }\n\n  public updateValidator(formGroup: UntypedFormGroup, name: string, type: KoalaDynamicFormValidatorType, value: boolean | number | string) {\n    if (type === 'required' && typeof value !== 'boolean') {\n      throw new Error(`Type required cannot be a ${typeof value}`);\n    } else if ((type === 'min' || type === 'max') && typeof value === \"boolean\") {\n      throw new Error(`Type ${type} cannot be a boolean`);\n    }\n\n    const formArray = formGroup.get('formData') as UntypedFormArray;\n    const control = formArray.controls.find(control => control.get('name').value === name);\n\n    if (control) {\n      const currentMin = control.get('min').value;\n      const currentMax = control.get('max').value;\n      const validators = [];\n\n      control.get('value').clearValidators();\n      control.get('value').setErrors(null);\n\n      if (type === \"required\" && value) {\n        validators.push(Validators.required);\n        control.get('value').setErrors({required: true});\n      }\n      if ((type === \"min\" || currentMin)) {\n        if (typeof value === \"number\") {\n          validators.push(Validators.min((type === \"min\" ? value : currentMin)));\n          control.get('value').setErrors({min: true});\n        }\n        else if (typeof value === \"string\") {\n          validators.push(DateMinValidator((type === \"min\" ? value : currentMin)));\n          control.get('value').setErrors({dateMin: true});\n        }\n      }\n      if ((type === \"max\" || currentMax)) {\n        if (typeof value === \"number\") {\n          validators.push(Validators.max((type === \"max\" ? value : currentMax)));\n          control.get('value').setErrors({max: true});\n        }\n        else if (typeof value === \"string\") {\n          validators.push(DateMaxValidator((type === \"max\" ? value : currentMax)));\n          control.get('value').setErrors({dateMax: true});\n        }\n      }\n\n      if (type === \"required\") {\n        control.get('required').setValue(value);\n      } else if (type === \"min\") {\n        control.get('min').setValue(value);\n      } else if (type === \"max\") {\n        control.get('max').setValue(value);\n      }\n      control.get('value').setValidators(validators);\n      control.get('value').updateValueAndValidity();\n    }\n  }\n\n  public disableFields(formGroup: UntypedFormGroup, disabled: boolean, fields: string[]) {\n    const formArray = formGroup.get('formData') as UntypedFormArray;\n\n    fields.forEach(field => {\n      const controlValue = formArray.controls.find(control => field === control.get('name').value)?.get('value');\n\n      if (controlValue && disabled) {\n        controlValue.disable();\n      } else if (controlValue && !disabled) {\n        controlValue.enable();\n      }\n\n      const controlDisabled = formArray.controls.find(control => field === control.get('name').value)?.get('disabled');\n      controlDisabled.setValue(disabled);\n    });\n  }\n\n  public emitData(form: UntypedFormGroup) {\n    const data = {};\n    const formArray = form.get('formData') as UntypedFormArray;\n    formArray?.controls.forEach(control => {\n      if (control.get('show').value.getValue() !== false) {\n        let value: any = control.get('value').value;\n        if (control.get('type').value === DynamicFormTypeFieldEnum.valueList) {\n          if (value === null || value === undefined) {\n            value = '';\n          }\n          value = koala(value).string().split().getValue();\n        } else if (control.get('type').value === DynamicFormTypeFieldEnum.moreItems) {\n          const moreItems = control.get('moreItemsConfig').value as { form: UntypedFormGroup }[];\n          value = [];\n          moreItems.forEach(item => {\n            value.push(this.emitData(item.form));\n          });\n        } else if (control.get('type').value === DynamicFormTypeFieldEnum.autocomplete) {\n          if (control.get('multiple').value) {\n            const options = control.get('autocompleteSelectedValue').value as KoalaDynamicAutocompleteOptionsInterface[];\n            value = options?.map(item => item?.value);\n          } else {\n            value = (control.get('autocompleteSelectedValue').value?.value ?\n                     control.get('autocompleteSelectedValue').value.value :\n                     control.get('autocompleteSelectedValue').value\n            );\n          }\n        } else if (control.get('type').value === DynamicFormTypeFieldEnum.dynamicForm) {\n          const dynamicFormConfig = control.get('dynamicFormConfig').value as BehaviorSubject<KoalaDynamicFormConfigInterface>;\n          value = this.emitData(dynamicFormConfig.getValue().form);\n        } else if (control.get('type').value === DynamicFormTypeFieldEnum.number) {\n          value = parseInt(value);\n        } else if ((\n          control.get('type').value === DynamicFormTypeFieldEnum.float ||\n          control.get('type').value === DynamicFormTypeFieldEnum.percent\n        ) && typeof value === \"string\") {\n          value = parseFloat(value.replace(/,/g, '.'));\n        } else if (\n          control.get('type').value === DynamicFormTypeFieldEnum.coin &&\n          typeof value === \"string\"\n        ) {\n          value = unmaskCoin(value);\n        }\n        data[control.get('name').value] = value;\n      }\n    });\n\n    return data;\n  }\n\n  public resetForm(form: UntypedFormGroup) {\n    const formArray = form.get('formData') as UntypedFormArray;\n    formArray.controls.forEach(control => {\n      if (control.get('type').value === DynamicFormTypeFieldEnum.moreItems) {\n        control.get('moreItemsConfig').setValue([]);\n      } else {\n        control.get('value').reset();\n      }\n    });\n  }\n\n  public setValuesInMoreItemsForm(\n    subject: BehaviorSubject<BehaviorSubject<KoalaDynamicSetValueInterface[]>[]>,\n    values: KoalaDynamicSetValueInterface[][]\n  ) {\n    const valuesMoreItems = [];\n    values.forEach(itemValue => {\n      valuesMoreItems.push(new BehaviorSubject<KoalaDynamicSetValueInterface[]>(itemValue));\n    });\n    subject.next(valuesMoreItems);\n  }\n\n  public autocompleteFilterOnServer(\n    request: () => Promise<any[]>,\n    nameConfig: {\n      propsByName: string[];\n      delimiter: string;\n    },\n    indexNameByValue?: string\n  ) {\n    return new Observable<KoalaDynamicAutocompleteOptionsInterface[]>(observe => {\n      request().then(response => {\n        const options: KoalaDynamicAutocompleteOptionsInterface[] = [];\n        response.forEach(item => {\n          let value = '';\n          if (indexNameByValue?.indexOf(' > ') >= 0) {\n            value = this.getValueByStringPath(indexNameByValue, item);\n          } else if (indexNameByValue) {\n            value = item[indexNameByValue];\n          } else {\n            value = item;\n          }\n          options.push({\n            name: koala(item).object().toString(\n              nameConfig.propsByName,\n              (nameConfig.delimiter ?? ' ')\n            ).getValue(),\n            value\n          });\n        });\n        observe.next(options);\n      });\n    });\n  }\n\n  public showFields(\n    subject: BehaviorSubject<KoalaDynamicFormShowFieldInterface[]>,\n    names: string[],\n    show: boolean,\n    clearCurrentValue = false\n  ) {\n    const fields: KoalaDynamicFormShowFieldInterface[] = [];\n    names.forEach(name => {\n      fields.push({\n        name,\n        show,\n        clearCurrentValue\n      });\n    });\n    subject.next(fields);\n  }\n\n  private getValueByStringPath(indexNameByValue: string, item: any) {\n    let value;\n    const partsIndex = indexNameByValue.split(' > ');\n    let partIndex = 0;\n    do {\n      if (!value) {\n        value = item[partsIndex[partIndex]];\n      } else {\n        value = value[partsIndex[partIndex]];\n      }\n      partIndex++;\n    } while (partIndex < partsIndex.length);\n\n    return value;\n  }\n}\n","export class ValidationHelper {\n  public static validateCpf(value: string) {\n    function calcChecker1(digits: any) {\n      let sum: number | null = null;\n\n      for (let j = 0; j < 9; ++j) {\n        sum += digits.toString().charAt(j) * (10 - j);\n      }\n\n      const lastSumChecker1 = sum % 11;\n\n      return lastSumChecker1 < 2 ? 0 : 11 - lastSumChecker1;\n    }\n\n    function calcChecker2(cpfWithChecker1: any) {\n      let sum: number | null = null;\n\n      for (let k = 0; k < 10; ++k) {\n        sum += cpfWithChecker1.toString().charAt(k) * (11 - k);\n      }\n\n      const lastSumChecker2 = sum % 11;\n\n      return lastSumChecker2 < 2 ? 0 : 11 - lastSumChecker2;\n    }\n\n    const cleanCPF = value.replace(/\\.|\\-|\\s/g, '');\n    const firstNineDigits = cleanCPF.substring(0, 9);\n    const checker = cleanCPF.substring(9, 11);\n\n    if (cleanCPF.length !== 11) {\n      return false;\n    }\n\n    // Checking if all digits are equal\n    for (let i = 0; i < 10; i++) {\n      if ('' + firstNineDigits + checker === Array(12).join(`${i}`)) {\n        return false;\n      }\n    }\n\n    const checker1 = calcChecker1(firstNineDigits);\n    const checker2 = calcChecker2(firstNineDigits + '' + checker1);\n\n    return checker.toString() === checker1.toString() + checker2.toString();\n  }\n\n  public static validateCnpj(value: string) {\n    value = value.replace(/[^\\d]+/g, '');\n\n    if (value === '') {\n      return false;\n    }\n\n    if (value.length !== 14) {\n      return false;\n    }\n\n    // Elimina CNPJs invalidos conhecidos\n    if (value === '00000000000000' ||\n      value === '11111111111111' ||\n      value === '22222222222222' ||\n      value === '33333333333333' ||\n      value === '44444444444444' ||\n      value === '55555555555555' ||\n      value === '66666666666666' ||\n      value === '77777777777777' ||\n      value === '88888888888888' ||\n      value === '99999999999999') {\n      return false;\n    }\n\n    // Valida DVs\n    let tamanho = value.length - 2;\n    let numeros = value.substring(0, tamanho);\n    const digitos = value.substring(tamanho);\n    let soma = 0;\n    let pos = tamanho - 7;\n    for (let i = tamanho; i >= 1; i--) {\n      soma += parseInt(numeros.charAt(tamanho - i), 10) * pos--;\n      if (pos < 2) {\n        pos = 9;\n      }\n    }\n    let resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;\n    if (resultado !== parseInt(digitos.charAt(0), 10)) {\n      return false;\n    }\n\n    tamanho = tamanho + 1;\n    numeros = value.substring(0, tamanho);\n    soma = 0;\n    pos = tamanho - 7;\n    for (let i = tamanho; i >= 1; i--) {\n      soma += parseInt(numeros.charAt(tamanho - i), 10) * pos--;\n      if (pos < 2) {\n        pos = 9;\n      }\n    }\n    resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;\n\n    return !(resultado !== parseInt(digitos.charAt(1), 10));\n  }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationHelper } from './validation.helper';\n\nexport function CpfValidator(control: AbstractControl) {\n  if (control.value) {\n    if (control.value.length <= 14 && !ValidationHelper.validateCpf(control.value)) {\n      return {cpfInvalid: true};\n    }\n  }\n  return null;\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationHelper } from './validation.helper';\n\nexport function CnpjValidator(control: AbstractControl) {\n  if (control.value) {\n    if (control.value.length > 14 && !ValidationHelper.validateCnpj(control.value)) {\n      return {cnpjInvalid: true};\n    }\n  }\n  return null;\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function AutocompleteSelectedValidator(control: AbstractControl) {\n  if (\n    control.value &&\n    control.value.hasOwnProperty('value') &&\n    control.value.hasOwnProperty('name') &&\n    Object.keys(control.value).length === 2\n  ) {\n    return null;\n  }\n\n  return {autocompleteSelected: true};\n}\n","export class KoalaDynamicFormValidatorResultHelper {\n\n  public static generate(errorMessage: string) {\n    return {\n      customError: {\n        message: errorMessage\n      }\n    }\n  }\n}\n","import { ErrorStateMatcher } from '@angular/material/core';\nimport { UntypedFormControl, FormGroupDirective, NgForm } from '@angular/forms';\n\nexport class ShowInvalidFields implements ErrorStateMatcher {\n\n  constructor() {\n  }\n\n  isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    const isSubmitted = form && form.submitted;\n    return !!(control && control.invalid && (control.errors || control.dirty || control.touched || isSubmitted));\n  }\n}\n","import { ShowInvalidFields } from './show-invalid-fields/show-invalid-fields';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\nexport abstract class FormAbstract {\n  public showInvalidFields: ShowInvalidFields;\n  public btnLabel: string;\n  public loader = new BehaviorSubject<boolean>(false);\n  public btnSubmitDisabled = false;\n  public getData = new BehaviorSubject<boolean>(false);\n\n  protected constructor(private formAbstract: () => UntypedFormGroup) {\n  }\n\n  public selecionarAutocomplete(controlName: string, obj: any, indexName?: string) {\n    if (obj) {\n      let value = indexName ? obj[indexName] : obj;\n      if (Array.isArray(obj)) {\n        value = [];\n        obj.forEach(item => {\n          value.push(indexName ? item[indexName] : item);\n        });\n      }\n\n      this.formAbstract().get(controlName).setValue(value);\n    } else {\n      this.formAbstract().get(controlName).setValue('');\n    }\n  }\n\n  public btnClickGetData() {\n    this.getData.next(true);\n  }\n\n  protected enableShowInvalidFields() {\n    this.showInvalidFields = new ShowInvalidFields();\n  }\n\n  protected loading(show: boolean = true, btnLabel?: string) {\n    this.btnSubmitDisabled = show;\n    this.loader.next(show);\n\n    if (show) {\n      this.btnLabel = btnLabel ? btnLabel : 'Enviando Dados...';\n    } else {\n      this.btnLabel = btnLabel ? btnLabel : 'Enviar';\n    }\n  }\n}\n","import { AfterContentInit, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n\tselector: '[koalaAutoFocus]'\n})\nexport class KoalaAutofocusDirective implements AfterContentInit {\n\t@Input() public koalaAutoFocus: boolean;\n\t\n\tpublic constructor(private el: ElementRef) {}\n\t\n\tpublic ngAfterContentInit() {\n\t\tif (this.koalaAutoFocus) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.el.nativeElement.focus();\n\t\t\t}, 500);\n\t\t}\n\t}\n}\n","import { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators, AbstractControl } from '@angular/forms';\nimport { KoalaDynamicFormFieldInterface } from './interfaces/koala.dynamic-form-field.interface';\nimport { DynamicFormTypeFieldEnum } from './enums/dynamic-form-type-field.enum';\nimport { CpfValidator } from './validators/cpf.validator';\nimport { CnpjValidator } from './validators/cnpj.validator';\nimport { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormAbstract } from '../form.abstract';\nimport { debounceTime } from 'rxjs/operators';\nimport { BehaviorSubject } from 'rxjs';\nimport { KoalaDynamicSetValueInterface } from './interfaces/koala.dynamic-set-value.interface';\nimport { AutocompleteSelectedValidator } from './validators/autocomplete-selected.validator';\nimport { KoalaDynamicAutocompleteOptionsInterface } from './interfaces/koala.dynamic-autocomplete-options.interface';\nimport { KoalaDynamicFormShowFieldInterface } from './interfaces/koala.dynamic-form-show-field.interface';\nimport { KoalaDynamicFormService } from './koala.dynamic-form.service';\nimport { KoalaDynamicFormMoreItensShowFieldConfigInterface } from './interfaces/koala.dynamic-form-more-itens-show-field-config.interface';\nimport { ThemePalette } from '@angular/material/core';\nimport { KoalaDynamicFormAutocompleteMultipleConfigInterface } from './interfaces/koala.dynamic-form-autocomplete-multiple-config.interface';\nimport { KoalaDynamicFormConfigInterface } from './interfaces/koala.dynamic-form-config.interface';\nimport { delay } from \"@koalarx/utils/operators/delay\";\nimport { koala } from \"@koalarx/utils\";\nimport { DateMinValidator } from \"./validators/date-min.validator\";\nimport { DateMaxValidator } from \"./validators/date-max.validator\";\nimport { KoalaLanguageHelper } from \"@koalarx/ui/core\";\nimport { randomString } from \"@koalarx/utils/operators/string\";\n\n@Component({\n  selector: 'koala-dynamic-form',\n  templateUrl: 'dynamic-form.component.html',\n  styleUrls: ['dynamic-form.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DynamicFormComponent extends FormAbstract implements OnInit {\n  @Input() form: UntypedFormGroup;\n  @Input() formConfig: KoalaDynamicFormFieldInterface[];\n  @Input() showFields: BehaviorSubject<KoalaDynamicFormShowFieldInterface[]>;\n  @Input() showFieldsMoreItensConfig: KoalaDynamicFormMoreItensShowFieldConfigInterface[];\n  @Input() setValues: BehaviorSubject<KoalaDynamicSetValueInterface[]>;\n  @Input() tabIndexStart: number = 1;\n\n  public controls: UntypedFormArray;\n  public typeField = DynamicFormTypeFieldEnum;\n  public hoursAndMinutesMask = '00:000';\n  public errorMessage = KoalaLanguageHelper;\n  public formId = randomString(25, {\n    lowercase: true,\n    uppercase: true,\n    numbers: false,\n    specialCharacters: false\n  });\n\n  constructor(\n    private fb: UntypedFormBuilder,\n    private dynamicFormService: KoalaDynamicFormService\n  ) {\n    super(() => this.form);\n  }\n\n  ngOnInit() {\n    if (!this.form.get('formData')) {\n      this.form.addControl('formData', this.fb.array([]));\n    }\n    this.controls = this.form.get('formData') as UntypedFormArray;\n    this.formConfig?.forEach((config, indexConfig) => {\n      const newFormGroup = this.newControl(config);\n      if (config.asyncValidators) {\n        newFormGroup.get('value').setAsyncValidators(config.asyncValidators);\n      }\n      newFormGroup.get('value').updateValueAndValidity();\n      if (config.type === DynamicFormTypeFieldEnum.dynamicForm) {\n        const formGroupDynamicFormsSubject = newFormGroup.get('dynamicFormConfig').value as BehaviorSubject<KoalaDynamicFormConfigInterface>;\n        formGroupDynamicFormsSubject.subscribe(formGroupConfig => {\n          if (formGroupConfig) {\n            formGroupConfig.form.valueChanges.subscribe(() => {\n              if (formGroupConfig.form.valid && (config.valueChanges || this.showFieldsMoreItensConfig)) {\n                const value = this.dynamicFormService.emitData(formGroupConfig.form);\n                newFormGroup.get('value').setValue(value);\n              }\n            });\n          }\n        });\n      }\n      if (\n        config.valueChanges ||\n        config.type === DynamicFormTypeFieldEnum.autocomplete ||\n        config.type === DynamicFormTypeFieldEnum.dynamicForm ||\n        this.showFieldsMoreItensConfig\n      ) {\n        if (config.type === DynamicFormTypeFieldEnum.autocomplete) {\n          const autocompleteOptionsSubject = newFormGroup.get('autocompleteOptions').value as BehaviorSubject<KoalaDynamicAutocompleteOptionsInterface[]>;\n          if (autocompleteOptionsSubject) {\n            autocompleteOptionsSubject.subscribe(options => newFormGroup.get('autocompleteOptionsFiltered').value.next(options));\n          }\n        }\n        newFormGroup.get('value')\n                    .valueChanges\n                    .pipe(debounceTime(300))\n                    .subscribe(async value => {\n                      await this.setConfigDynamicForm(newFormGroup);\n                      if (config.type === DynamicFormTypeFieldEnum.autocomplete) {\n                        if (\n                          value && (\n                            value.hasOwnProperty('value') &&\n                            value.hasOwnProperty('name') &&\n                            Object.keys(value).length === 2\n                          ) || (\n                            Array.isArray(value) &&\n                            newFormGroup.get('multiple').value\n                          )) {\n                          if (newFormGroup.get('multiple').value) {\n                            if (Array.isArray(value)) {\n                              newFormGroup.get('autocompleteSelectedValue').setValue(value);\n                              newFormGroup.get('value').setValue(value[value.length - 1], {emitEvent: false});\n                            } else {\n                              if (this.validateAutocompleteSelect(newFormGroup.get('autocompleteSelectedValue').value, value)) {\n                                newFormGroup.get('autocompleteSelectedValue').value.push(value);\n                              }\n                            }\n\n                            const autocompleteInput = document.querySelector<HTMLInputElement>(`#${this.formId} input#autocomplete-${newFormGroup.get('name')?.value}`);\n                            if (autocompleteInput) {\n                              autocompleteInput.value = '';\n                            }\n                          } else {\n                            newFormGroup.get('autocompleteSelectedValue').setValue(value);\n                          }\n                        } else if (!newFormGroup.get('multiple').value) {\n                          newFormGroup.get('autocompleteSelectedValue').setValue(koala(this.formConfig)\n                            .array<KoalaDynamicFormFieldInterface>()\n                            .filter(newFormGroup.get('name').value, 'name')\n                            .getValue()[0]?.autocompleteDefaultValueOnClear ?? null);\n                        }\n\n                        if (config.type === DynamicFormTypeFieldEnum.autocomplete) {\n                          if (config.autocompleteType === 'all') {\n                            const autocompleteOptionsSubject = newFormGroup.get('autocompleteOptions').value as BehaviorSubject<KoalaDynamicAutocompleteOptionsInterface[]>;\n                            newFormGroup.get('autocompleteOptionsFiltered').value.next(this.autocompleteFilter(\n                              autocompleteOptionsSubject.value,\n                              value\n                            ));\n                          } else if (config.autocompleteType === 'onDemand' && typeof value !== \"object\") {\n                            const loader = newFormGroup.get('autocompleteLoading').value as BehaviorSubject<boolean>;\n                            loader.next(true);\n                            config.autocompleteFilter(value).subscribe(options => {\n                              newFormGroup.get('autocompleteOptionsFiltered').value.next(options);\n                              loader.next(false);\n                            });\n                          }\n                        }\n                      }\n                      if (config.valueChanges) {\n                        if (config.type === DynamicFormTypeFieldEnum.autocomplete) {\n                          config.valueChanges((newFormGroup.get('multiple').value ?\n                                               newFormGroup.get('autocompleteSelectedValue').value.map(item => item.value) :\n                                               newFormGroup.get('autocompleteSelectedValue').value?.value\n                          ));\n                        } else {\n                          config.valueChanges(value);\n                        }\n                      }\n                    });\n      }\n      this.controls.push(newFormGroup);\n      if (config.moreItemsConfig) {\n        if (config.moreItemsMinItems > 0) {\n          for (let min = 0; min < config.moreItemsMinItems; min++) {\n            if (min <= config.moreItemsMaxItems) {\n              this.addMoreItem(indexConfig);\n            }\n          }\n        }\n        if (config.moreItemsConfig.setValues) {\n          config.moreItemsConfig\n                .setValues\n                .subscribe(async values => {\n                  if (values.length > 0) {\n                    values.forEach((itemValue, indexValue) => {\n                      if (!this.controls.controls[indexConfig].get('moreItemsConfig').value[indexValue]) {\n                        this.addMoreItem(indexConfig);\n                      }\n                      setTimeout(() => {\n                        this.setValuesOnFields(\n                          itemValue,\n                          this.controls.controls[indexConfig].get('moreItemsConfig').value[indexValue].form\n                        );\n                      }, 300);\n                    });\n                  }\n                });\n        }\n      }\n    });\n    if (this.showFields) {\n      this.changeVisibilityFields(this.showFields, this.form);\n    }\n    if (this.setValues) {\n      this.setValuesOnFields(this.setValues, this.form);\n    }\n  }\n\n  public isValidNewAutocompleteOption(value: any) {\n    return !!value && typeof value === 'string';\n  }\n\n  public hoursAndMinutesApplyMask(index: number, event: KeyboardEvent) {\n    const control = this.controls?.controls[index];\n    const type = control?.get('type').value as DynamicFormTypeFieldEnum;\n    if (type === DynamicFormTypeFieldEnum.hoursAndMinutes) {\n      const value = control?.get('value').value;\n      if (event.key == 'Backspace' && value.length < 6) {\n        this.hoursAndMinutesMask = '00:000';\n      } else if (event.key != 'Backspace' && value.length >= 6) {\n        this.hoursAndMinutesMask = '000:00';\n      }\n    }\n  }\n\n  public passwordView(index: number) {\n    const control = this.controls?.controls[index];\n    const hidePassword = !control?.get('hidePassword').value;\n    control?.get('hidePassword').setValue(hidePassword);\n    control?.get('type').setValue(hidePassword ?\n                                  DynamicFormTypeFieldEnum.password :\n                                  DynamicFormTypeFieldEnum.text\n    );\n  }\n\n  public addMoreItem(propIndex: number) {\n    if (this.controls.controls[propIndex].get('moreItemsConfig').value.length < this.controls.controls[propIndex].get('moreItemsMaxItems').value) {\n      const formGroup = this.fb.group({});\n      this.controls.controls[propIndex].get('moreItemsConfig').value.push({\n        form: formGroup,\n        formConfig: this.formConfig[propIndex].moreItemsConfig.formConfig,\n        showFields: new BehaviorSubject<BehaviorSubject<KoalaDynamicSetValueInterface[]>[]>([]),\n        showFieldsMoreItensConfig: this.formConfig[propIndex].moreItemsConfig.showFieldsConfig\n      });\n      this.controls.controls[propIndex].get('moreItemsExpanded').setValue(\n        this.controls.controls[propIndex].get('moreItemsConfig').value.length - 1\n      );\n      const formArrayMoreItems = this.controls.controls[propIndex].get('moreItemsFormGroup') as UntypedFormArray;\n      formArrayMoreItems.push(formGroup);\n    }\n  }\n\n  public removeMoreItem(propIndex: number, removeIndex) {\n    const expandedItemIndex = removeIndex - 1;\n    this.controls.controls[propIndex].get('moreItemsConfig').value.splice(removeIndex, 1);\n    setTimeout(() => {\n      this.controls.controls[propIndex].get('moreItemsExpanded').setValue((expandedItemIndex < 0) ? 0 : expandedItemIndex);\n    }, 50);\n  }\n\n  public clearAutocomplete(propIndex: number) {\n    if (this.controls.controls[propIndex].get('multiple').value) {\n      this.controls.controls[propIndex].get('autocompleteSelectedValue').setValue([]);\n      this.controls.controls[propIndex].get('value').setValue(null);\n    } else {\n      this.controls.controls[propIndex].get('autocompleteSelectedValue').setValue(this.formConfig[propIndex].autocompleteDefaultValueOnClear ?? null);\n      this.controls.controls[propIndex].get('value').setValue(this.formConfig[propIndex].autocompleteDefaultValueOnClear ?? null);\n    }\n  }\n\n  public display(option?: KoalaDynamicAutocompleteOptionsInterface): string | undefined {\n    return option ? option.name : undefined;\n  }\n\n  public removeOptionOnAutocomplete(propIndex: number, option: KoalaDynamicAutocompleteOptionsInterface) {\n    const value = this.controls.controls[propIndex].get('autocompleteSelectedValue').value.filter(item => item !== option) as KoalaDynamicAutocompleteOptionsInterface[];\n    this.controls.controls[propIndex].get('autocompleteSelectedValue').setValue(value);\n    if (value.length === 0) {\n      this.controls.controls[propIndex].get('autocompleteSelectedValue').setValue([]);\n      this.controls.controls[propIndex].get('value').setValue(null);\n    } else if (this.formConfig[propIndex].valueChanges) {\n      this.formConfig[propIndex].valueChanges(value.map(item => item.value));\n    }\n  }\n\n  public getColorChip(config: KoalaDynamicFormAutocompleteMultipleConfigInterface): ThemePalette {\n    return config.color;\n  }\n\n  public getAutocompleteOptions(propriedade: AbstractControl) {\n    return propriedade.get('autocompleteOptionsFiltered').value as BehaviorSubject<any[]>;\n  }\n\n  public getDynamicFormConfig(propriedade: AbstractControl) {\n    return propriedade.get('dynamicFormConfig').value as BehaviorSubject<KoalaDynamicFormConfigInterface>;\n  }\n\n  public getRandomString() {\n    return randomString(20, {\n      lowercase: true,\n      numbers: true,\n      specialCharacters: false,\n      uppercase: true\n    });\n  }\n\n  private newControl(config: KoalaDynamicFormFieldInterface): UntypedFormGroup {\n    let validators = config.syncValidators ?? [];\n    let value: any = config.value ?? '';\n    let valueSelectedAutocomplete: KoalaDynamicAutocompleteOptionsInterface | KoalaDynamicAutocompleteOptionsInterface[] = (\n      config.multiple ? [] : (config.autocompleteDefaultValueOnClear ?? null)\n    );\n\n    if (config.required === true) validators.push(Validators.required);\n    if (config.min && typeof config.min === \"number\") validators.push(Validators.min(config.min));\n    if (config.max && typeof config.max === \"number\") validators.push(Validators.max(config.max));\n    if (\n      config.type === DynamicFormTypeFieldEnum.date ||\n      config.type === DynamicFormTypeFieldEnum.datetime ||\n      config.type === DynamicFormTypeFieldEnum.time\n    ) {\n      if (config.min && typeof config.min === \"string\") { validators.push(DateMinValidator(config.min)); }\n      if (config.max && typeof config.max === \"string\") { validators.push(DateMaxValidator(config.max)); }\n    }\n    if (config.minLength) validators.push(Validators.minLength(config.minLength));\n    if (config.maxLength) validators.push(Validators.maxLength(config.maxLength));\n\n    if (config.type === DynamicFormTypeFieldEnum.cpf) {\n      validators.push(CpfValidator);\n    } else if (config.type === DynamicFormTypeFieldEnum.cnpj) {\n      validators.push(CnpjValidator);\n    } else if (config.type === DynamicFormTypeFieldEnum.email) {\n      validators.push(Validators.email);\n    } else if (config.type === DynamicFormTypeFieldEnum.autocomplete) {\n      if (value) {\n        valueSelectedAutocomplete = value;\n        value = (config.multiple ? valueSelectedAutocomplete[0] : value);\n      }\n      if (config.required === true) {\n        validators.push(AutocompleteSelectedValidator);\n      }\n    } else if (config.type === DynamicFormTypeFieldEnum.checkbox) {\n      value = config.value ?? false;\n    }\n\n    if (\n      config.type === DynamicFormTypeFieldEnum.hoursAndMinutes &&\n      value.length >= 6\n    ) {\n      this.hoursAndMinutesMask = '000:00';\n    }\n\n    if (config.dynamicFormConfig) {\n      const cloneDynamicFormConfig = {} as KoalaDynamicFormConfigInterface;\n      Object.assign(cloneDynamicFormConfig, config.dynamicFormConfig);\n      cloneDynamicFormConfig.form = config.dynamicFormConfig.form;\n      config.dynamicFormConfig = cloneDynamicFormConfig;\n    }\n\n    if (config.show === false) {\n      validators = [];\n    }\n\n    const field = this.fb.group({\n      show: [new BehaviorSubject<boolean>(config.show ?? true)],\n      label: [config.label],\n      name: [config.name],\n      type: [config.type],\n      fileButtonConfig: [{\n        icon: config?.fileButtonConfig?.icon ?? 'attach_file',\n        text: config?.fileButtonConfig?.text ?? 'Clique para anexar arquivos',\n        backgroundColor: config?.fileButtonConfig?.backgroundColor ?? 'white',\n        color: config?.fileButtonConfig?.color ?? 'blue',\n        accept: config?.fileButtonConfig?.accept ?? '*'\n      }],\n      dynamicFormConfig: [new BehaviorSubject<KoalaDynamicFormConfigInterface>(config.dynamicFormConfig)],\n      dynamicFormGroup: this.fb.array([]),\n      appearance: [config.appearance],\n      floatLabel: [config.floatLabel],\n      placeholder: [config.placeholder],\n      class: [config.class],\n      fieldClass: [config.fieldClass],\n      textHint: [config.textHint],\n      required: [config.required ?? false],\n      min: [config.min ?? 0],\n      max: [config.max ?? 99999999999],\n      minLength: [config.minLength ?? 0],\n      maxLength: [config.maxLength ?? 255],\n      disabled: [config.disabled ?? false],\n      focus: [config.focus ?? false],\n      multiple: [config.multiple ?? false],\n      opcoesSelect: [config.opcoesSelect ?? []],\n      hidePassword: config.type === DynamicFormTypeFieldEnum.password ? true : null,\n      moreItemsButtonIconAddlabel: [config.moreItemsButtonIconAddlabel],\n      moreItemsMinItems: [config.moreItemsMinItems ?? 0],\n      moreItemsMaxItems: [config.moreItemsMaxItems ?? 100],\n      moreItemsIcon: [config.moreItemsIcon],\n      moreItemsIconFontColor: [config.moreItemsIconFontColor],\n      moreItemsIconBackgroundColor: [config.moreItemsIconBackgroundColor],\n      moreItemsExpanded: [''],\n      moreItemsConfig: [[]],\n      moreItemsFormGroup: this.fb.array([]),\n      autocompleteLoading: [new BehaviorSubject<boolean>(false)],\n      autocompleteOptions: [config.autocompleteOptions],\n      autocompleteMultipleConfig: [config.autocompleteMultipleConfig],\n      autocompleteOptionsFiltered: [new BehaviorSubject<any>([])],\n      autocompleteSelectedValue: [valueSelectedAutocomplete],\n      autocompleteAddOption: [config.autocompleteAddOption],\n      textLogs: [config?.textObs],\n      customMasc: [config?.customMasc],\n      customMascThousandSeparator: [config?.customMascThousandSeparator ?? ''],\n      customMascSuffix: [config?.customMascSuffix ?? ''],\n      customMascPrefix: [config?.customMascPrefix ?? ''],\n      value: [{value, disabled: config.disabled}, validators, config.asyncValidators]\n    });\n\n    if (config.autocompleteType === \"onDemand\") {\n      const loader = field.get('autocompleteLoading').value as BehaviorSubject<boolean>;\n      loader.next(true);\n      config.autocompleteFilter('').subscribe(options => {\n        field.get('autocompleteOptionsFiltered').value.next(options);\n        loader.next(false);\n      });\n    }\n\n    return field;\n  }\n\n  private setValuesOnFields(subject: BehaviorSubject<KoalaDynamicSetValueInterface[]>, form: UntypedFormGroup) {\n    subject.subscribe(item => {\n      if (item) {\n        const formArray = form.get('formData') as UntypedFormArray;\n        for (const prop of item.values()) {\n          this.setValueByProp(formArray, prop);\n        }\n      }\n    });\n  }\n\n  private changeVisibilityFields(subject: BehaviorSubject<KoalaDynamicFormShowFieldInterface[]>, form: UntypedFormGroup) {\n    subject.pipe(debounceTime(5)).subscribe(item => {\n      if (item) {\n        const formArray = form.get('formData') as UntypedFormArray;\n        for (const prop of item.values()) {\n          for (const [indexControl, control] of formArray.controls.entries()) {\n            if (control.get('name').value === prop.name) {\n              control.get('show').value.next(prop.show);\n              const config: KoalaDynamicFormFieldInterface = this.formConfig[indexControl] ?? null;\n              if (prop.show) {\n                let validators = [];\n                if (config) {\n                  if (config.type === DynamicFormTypeFieldEnum.dynamicForm) {\n                    const formArrayMoreItems = control.get('dynamicFormGroup') as UntypedFormArray;\n                    formArrayMoreItems.push(config?.dynamicFormConfig?.form);\n                  } else {\n                    validators = config.syncValidators ?? [];\n                    if (config.required === true) {\n                      validators.push(Validators.required);\n                    }\n                    if (config.type === DynamicFormTypeFieldEnum.cpf) {\n                      validators.push(CpfValidator);\n                    } else if (config.type === DynamicFormTypeFieldEnum.cnpj) {\n                      validators.push(CnpjValidator);\n                    } else if (config.type === DynamicFormTypeFieldEnum.email) {\n                      validators.push(Validators.email);\n                    } else if (\n                      config.required === true &&\n                      config.type === DynamicFormTypeFieldEnum.autocomplete\n                    ) {\n                      validators.push(AutocompleteSelectedValidator);\n                    }\n\n                    if (config.min && typeof config.min === \"number\") validators.push(Validators.min(config.min));\n                    if (config.max && typeof config.max === \"number\") validators.push(Validators.max(config.max));\n                    if (\n                      config.type === DynamicFormTypeFieldEnum.date ||\n                      config.type === DynamicFormTypeFieldEnum.datetime ||\n                      config.type === DynamicFormTypeFieldEnum.time\n                    ) {\n                      if (config.min && typeof config.min === \"string\") { validators.push(DateMinValidator(config.min)); }\n                      if (config.max && typeof config.max === \"string\") { validators.push(DateMaxValidator(config.max)); }\n                    }\n                    if (config.minLength) validators.push(Validators.minLength(config.minLength));\n                    if (config.maxLength) validators.push(Validators.maxLength(config.maxLength));\n\n                    control.get('value').setValidators(validators);\n                    if (config.asyncValidators) {\n                      control.get('value').setAsyncValidators(config.asyncValidators);\n                    }\n                  }\n\n                  control.get('value').updateValueAndValidity();\n                  if (prop.clearCurrentValue) {\n                    control.get('value').setValue(null);\n                  }\n                }\n              } else {\n                control.get('value').clearValidators();\n                control.get('value').clearAsyncValidators();\n                control.setErrors(null);\n                control.get('value').setValue(null);\n                control.get('value').updateValueAndValidity();\n\n                if (config.type === DynamicFormTypeFieldEnum.dynamicForm) {\n                  const formGroup = control as UntypedFormGroup;\n                  formGroup.removeControl('dynamicFormGroup');\n                  formGroup.addControl('dynamicFormGroup', this.fb.array([]));\n                }\n              }\n              break;\n            }\n          }\n        }\n      }\n    });\n  }\n\n  private autocompleteFilter(arr: KoalaDynamicAutocompleteOptionsInterface[], value: string): KoalaDynamicAutocompleteOptionsInterface[] {\n    return arr.filter(filter => {\n      if (typeof value === 'string') {\n        if (filter) {\n          let find = true;\n          value.toLowerCase()\n               .split(' ')\n               .forEach(part => {\n                 if (filter.name.toLowerCase().indexOf(part) < 0) {\n                   find = false;\n                   return false;\n                 }\n               });\n\n          return find;\n        }\n      } else {\n        return true;\n      }\n    });\n  }\n\n  private setValueByProp(formArray: UntypedFormArray, prop: KoalaDynamicSetValueInterface) {\n    if (formArray) {\n      if (prop.name.indexOf(' > ') >= 0) {\n        let dynamicFormSubject: BehaviorSubject<KoalaDynamicFormConfigInterface>;\n        const arrPropName = prop.name.split(' > ');\n        let indexPropName = 0;\n        do {\n          const control = formArray.controls.find(control => control.get('name').value === arrPropName[indexPropName]);\n          if (indexPropName === arrPropName.length - 2) {\n            dynamicFormSubject = control.get('dynamicFormConfig').value;\n            const dynamicForm = dynamicFormSubject.getValue();\n            if (dynamicForm.formConfig.find(fc => fc.name === arrPropName[arrPropName.length - 1])) {\n              if (dynamicForm.setValues) {\n                dynamicForm.setValues.next(koala(dynamicForm.setValues.getValue()).array<any>().merge([{\n                  name: arrPropName[arrPropName.length - 1],\n                  value: prop.value\n                }]).getValue());\n              } else {\n                dynamicForm.setValues = new BehaviorSubject<KoalaDynamicSetValueInterface[]>([{\n                  name: arrPropName[arrPropName.length - 1],\n                  value: prop.value\n                }]);\n              }\n            }\n          }\n          indexPropName++;\n        } while (indexPropName < arrPropName.length - 1);\n      } else {\n        for (const control of formArray.controls.values()) {\n          if (control.get('name').value === prop.name) {\n            control.get('value').setValue(prop.value);\n            break;\n          }\n        }\n      }\n    }\n  }\n\n  private async setConfigDynamicForm(newFormGroup: UntypedFormGroup) {\n    if (this.showFieldsMoreItensConfig) {\n      const value = newFormGroup.get('value').value;\n      const configs = this.showFieldsMoreItensConfig\n                          .filter(config => config.nameField === newFormGroup.get('name').value)\n                          .sort(config => {\n                            if (config.fnShow(value)) {\n                              return 1;\n                            }\n                            return -1;\n                          });\n      for (const config of configs) {\n        if (config) {\n          if (config.dynamicFormConfig && config.fnShow(value)) {\n            const controlDynamicFormConfig = this.controls\n                                                 .controls\n                                                 .find(control =>\n                                                   config.fieldsToShow.indexOf(control.get('name').value) >= 0\n                                                 );\n            const dynamicFormConfigSubject = controlDynamicFormConfig.get('dynamicFormConfig').value as BehaviorSubject<KoalaDynamicFormConfigInterface>;\n            dynamicFormConfigSubject.next(null);\n            await delay(1);\n            dynamicFormConfigSubject.next(config.dynamicFormConfig(value));\n          }\n          this.dynamicFormService.showFields(\n            this.showFields,\n            config.fieldsToShow,\n            config.fnShow(value),\n            config.clearCurrentValue\n          );\n        }\n      }\n    }\n  }\n\n  private validateAutocompleteSelect(selectedValues: KoalaDynamicAutocompleteOptionsInterface[], value: KoalaDynamicAutocompleteOptionsInterface) {\n    let isValid = true;\n\n    for (const selectedItem of selectedValues.values()) {\n      if (selectedItem.name === value.name) {\n        isValid = false;\n        break;\n      }\n    }\n\n    return isValid;\n  }\n}\n","<div [formGroup]=\"form\" class=\"p-relative w-100\" [id]=\"formId\">\n  <div *ngFor=\"let propriedade of controls?.controls; let i = index;\"\n       [ngClass]=\"(propriedade.get('show').value | async) ? propriedade.get('class').value : 'd-none'\"\n       formArrayName=\"formData\">\n\t  <div *ngIf=\"propriedade.get('show').value | async\">\n\t    <mat-form-field\n\t\t    *ngIf=\"propriedade.get('type').value == typeField.text ||\n\t             propriedade.get('type').value == typeField.password ||\n\t             propriedade.get('type').value == typeField.cpf ||\n\t             propriedade.get('type').value == typeField.cnpj ||\n\t             propriedade.get('type').value == typeField.datetime ||\n\t             propriedade.get('type').value == typeField.email ||\n\t             propriedade.get('type').value == typeField.number ||\n\t             propriedade.get('type').value == typeField.stringNumber ||\n\t             propriedade.get('type').value == typeField.time ||\n\t             propriedade.get('type').value == typeField.date ||\n\t             propriedade.get('type').value == typeField.hoursAndMinutes ||\n\t             propriedade.get('type').value == typeField.phone ||\n\t             propriedade.get('type').value == typeField.percent ||\n\t             propriedade.get('type').value == typeField.color ||\n\t             propriedade.get('type').value == typeField.month ||\n\t             propriedade.get('type').value == typeField.competenceDate ||\n               propriedade.get('type').value == typeField.stringWithCustomMasc\"\n\t\t    [appearance]=\"propriedade.get('appearance').value\"\n\t\t    [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t    [formGroupName]=\"i\"\n\t\t    [ngClass]=\"propriedade.get('fieldClass').value\">\n\t      <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t      <input\n\t\t      [dropSpecialCharacters]=\"false\"\n\t\t      [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t      (keyup)=\"hoursAndMinutesApplyMask(i, $event)\"\n\t\t      [required]=\"propriedade.get('required').value\"\n\t\t      [tabIndex]=\"tabIndexStart + i\"\n\t\t      [mask]=\"((propriedade.get('type').value == typeField.competenceDate) ? '00/0000' : null) ||\n\t\t              ((propriedade.get('type').value == typeField.phone) ? '(00)0000-0000?0' : null) ||\n\t\t              ((propriedade.get('type').value == typeField.stringNumber) ? '0{'+propriedade.get('maxLength').value+'}' : null) ||\n                  ((propriedade.get('type').value == typeField.cpf) ? '000.000.000-00' : null) ||\n                  ((propriedade.get('type').value == typeField.cnpj) ? '00.000.000/0000-00' : null) ||\n                  ((propriedade.get('type').value == typeField.percent) ? 'percent' : null) ||\n\t\t\t\t\t\t\t\t\t((propriedade.get('type').value == typeField.hoursAndMinutes) ? hoursAndMinutesMask : null) ||\n\t\t\t\t\t\t\t\t\t((propriedade.get('type').value == typeField.stringWithCustomMasc) ? propriedade.get('customMasc').value : null)\"\n\t\t      [validation]=\"\n\t                    (propriedade.get('type').value == typeField.cpf && propriedade.get('value').errors?.cpfInvalid) ||\n\t                    (propriedade.get('type').value == typeField.cnpj && propriedade.get('value').errors?.cnpjInvalid)\"\n\t\t      [type]=\"((propriedade.get('type').value == typeField.cpf ||\n                    propriedade.get('type').value == typeField.cnpj ||\n                    propriedade.get('type').value == typeField.phone ||\n                    propriedade.get('type').value == typeField.percent\n                  )) ? 'tel' : (\n                    propriedade.get('type').value == typeField.month ?\n                    'month' : (\n                    propriedade.get('type').value == typeField.date ?\n                    'date' : (\n                    propriedade.get('type').value == typeField.datetime ?\n                    'datetime-local' : (\n                    propriedade.get('type').value == typeField.email ?\n                    'email' : (\n                    propriedade.get('type').value == typeField.number ?\n                    'number' : (\n                    propriedade.get('type').value == typeField.time ?\n                    'time' : (\n                    propriedade.get('type').value == typeField.password ?\n                    'password' : (\n                    propriedade.get('type').value == typeField.color ?\n                    'color' : 'text'))))))))\"\n          [min]=\"propriedade.get('min').value\"\n          [max]=\"propriedade.get('max').value\"\n          [minLength]=\"propriedade.get('minLength').value\"\n          [maxLength]=\"propriedade.get('maxLength').value\"\n          [thousandSeparator]=\"propriedade.get('customMascThousandSeparator').value\"\n          [suffix]=\"propriedade.get('customMascSuffix').value\"\n          [prefix]=\"propriedade.get('customMascPrefix').value\"\n          separatorLimit=\"0\"\n          [autocomplete]=\"getRandomString()\"\n\t\t      formControlName=\"value\"\n\t\t      matInput/>\n\t      <button\n\t\t      (click)=\"passwordView(i)\"\n\t\t      *ngIf=\"propriedade.get('hidePassword').value !== null\"\n\t\t      [attr.aria-label]=\"'Hide password'\"\n\t\t      [attr.aria-pressed]=\"propriedade.get('hidePassword').value\"\n\t\t      mat-icon-button matSuffix tabindex=\"-1\" type=\"button\">\n\t        <mat-icon>{{propriedade.get('hidePassword').value ? 'visibility_off' : 'visibility'}}</mat-icon>\n\t      </button>\n\t      <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t        <mat-icon>info</mat-icon>\n\t\t      {{propriedade.get('textHint').value}}\n\t      </mat-hint>\n\t      <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t        <mat-icon>error</mat-icon>\n          {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t      </mat-error>\n\t      <mat-error *ngIf=\"propriedade.get('value').errors?.cpfInvalid\">\n\t        <mat-icon>error</mat-icon>\n          {{errorMessage.getInvalidMessage(propriedade.get('label').value)}}\n\t      </mat-error>\n\t      <mat-error *ngIf=\"propriedade.get('value').errors?.cnpjInvalid\">\n\t        <mat-icon>error</mat-icon>\n          {{errorMessage.getInvalidMessage(propriedade.get('label').value)}}\n\t      </mat-error>\n\t      <mat-error *ngIf=\"propriedade.get('value').errors?.email\">\n\t        <mat-icon>error</mat-icon>\n          {{errorMessage.getInvalidMessage(propriedade.get('label').value)}}\n\t      </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.min\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMinMessage(propriedade.get('min').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.max\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMaxMessage(propriedade.get('max').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.dateMin\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getDateMinMessage()}}\n          {{propriedade.get('min').value | date:\"shortDate\"}}.\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.dateMax\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getDateMaxMessage()}}\n          {{propriedade.get('max').value | date:\"shortDate\"}}.\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n          <mat-icon>error</mat-icon>\n          {{propriedade.get('value').errors?.customError.message}}.\n        </mat-error>\n\t    </mat-form-field>\n\t    <mat-form-field\n\t\t    *ngIf=\"propriedade.get('type').value == typeField.coin\"\n\t\t    [appearance]=\"propriedade.get('appearance').value\"\n\t\t    [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t    [formGroupName]=\"i\"\n\t\t    [ngClass]=\"propriedade.get('fieldClass').value\">\n\t      <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t      <input\n\t\t      [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t      [required]=\"propriedade.get('required').value\"\n          [tabIndex]=\"tabIndexStart + i\"\n          [min]=\"propriedade.get('min').value\"\n          [max]=\"propriedade.get('max').value\"\n          [minLength]=\"propriedade.get('minLength').value\"\n          [maxLength]=\"propriedade.get('maxLength').value\"\n          [autocomplete]=\"getRandomString()\"\n\t\t      currencyMask\n\t\t      formControlName=\"value\"\n\t\t      matInput\n\t\t      type=\"tel\"/>\n\t      <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t        <mat-icon>info</mat-icon>\n\t\t      {{propriedade.get('textHint').value}}\n\t      </mat-hint>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.min\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMinMessage(propriedade.get('min').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.max\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMaxMessage(propriedade.get('max').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n        </mat-error>\n\t      <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t        <mat-icon>error</mat-icon>\n          {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t      </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n          <mat-icon>error</mat-icon>\n          {{propriedade.get('value').errors?.customError.message}}.\n        </mat-error>\n\t    </mat-form-field>\n      <mat-form-field\n        *ngIf=\"propriedade.get('type').value == typeField.float\"\n        [appearance]=\"propriedade.get('appearance').value\"\n        [floatLabel]=\"propriedade.get('floatLabel').value\"\n        [formGroupName]=\"i\"\n        [ngClass]=\"propriedade.get('fieldClass').value\">\n        <mat-label>{{propriedade.get('label').value}}</mat-label>\n        <input\n          [koalaAutoFocus]=\"propriedade.get('focus').value\"\n          [required]=\"propriedade.get('required').value\"\n          [tabIndex]=\"tabIndexStart + i\"\n          [min]=\"propriedade.get('min').value\"\n          [max]=\"propriedade.get('max').value\"\n          [minLength]=\"propriedade.get('minLength').value\"\n          [maxLength]=\"propriedade.get('maxLength').value\"\n          [autocomplete]=\"getRandomString()\"\n          currencyMask\n          [options]=\"{prefix: ''}\"\n          formControlName=\"value\"\n          matInput\n          type=\"tel\"/>\n        <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n          <mat-icon>info</mat-icon>\n          {{propriedade.get('textHint').value}}\n        </mat-hint>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.min\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMinMessage(propriedade.get('min').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.max\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMaxMessage(propriedade.get('max').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n          <mat-icon>error</mat-icon>\n          {{propriedade.get('value').errors?.customError.message}}.\n        </mat-error>\n      </mat-form-field>\n\t    <mat-form-field\n\t\t    *ngIf=\"propriedade.get('type').value == typeField.valueList ||\n\t             propriedade.get('type').value == typeField.textarea\"\n\t\t    [appearance]=\"propriedade.get('appearance').value\"\n\t\t    [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t    [formGroupName]=\"i\"\n\t\t    [ngClass]=\"propriedade.get('fieldClass').value\">\n\t      <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t      <textarea\n          #textarea\n\t\t      [koalaAutoFocus]=\"propriedade.get('focus').value\"\n          cdkTextareaAutosize\n          #autosize=\"cdkTextareaAutosize\"\n\t\t      [cdkAutosizeMaxRows]=\"8\"\n\t\t      [cdkAutosizeMinRows]=\"3\"\n\t\t      [required]=\"propriedade.get('required').value\"\n          [tabIndex]=\"tabIndexStart + i\"\n          [minLength]=\"propriedade.get('minLength').value\"\n          [maxLength]=\"propriedade.get('maxLength').value\"\n\t\t      formControlName=\"value\"\n\t\t      matInput>\n        </textarea>\n\t      <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t        <mat-icon>info</mat-icon>\n\t\t      {{propriedade.get('textHint').value}}\n\t      </mat-hint>\n        <mat-hint align=\"end\" *ngIf=\"propriedade.get('maxLength').value\">\n          {{textarea.value.length}}/{{propriedade.get('maxLength').value}}\n        </mat-hint>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n        </mat-error>\n\t      <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t        <mat-icon>error</mat-icon>\n          {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t      </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n          <mat-icon>error</mat-icon>\n          {{propriedade.get('value').errors?.customError.message}}.\n        </mat-error>\n\t    </mat-form-field>\n\t\t  <mat-form-field\n\t\t\t  *ngIf=\"propriedade.get('type').value == typeField.textLogs\"\n\t\t\t  [appearance]=\"propriedade.get('appearance').value\"\n\t\t\t  [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t\t  [formGroupName]=\"i\"\n\t\t\t  [ngClass]=\"propriedade.get('fieldClass').value\">\n\t      <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t      <div [innerHTML]=\"propriedade.get('textLogs').value\" class=\"text-obs\"></div>\n\t      <textarea\n          #textarea\n\t\t      [koalaAutoFocus]=\"propriedade.get('focus').value\"\n          cdkTextareaAutosize\n          #autosize=\"cdkTextareaAutosize\"\n\t\t      [cdkAutosizeMaxRows]=\"8\"\n\t\t      [cdkAutosizeMinRows]=\"3\"\n\t\t      [required]=\"propriedade.get('required').value\"\n          [tabIndex]=\"tabIndexStart + i\"\n          [minLength]=\"propriedade.get('minLength').value\"\n          [maxLength]=\"propriedade.get('maxLength').value\"\n\t\t      formControlName=\"value\"\n\t\t      matInput>\n\t      </textarea>\n\t      <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t        <mat-icon>info</mat-icon>\n\t\t      {{propriedade.get('textHint').value}}\n\t      </mat-hint>\n        <mat-hint align=\"end\" *ngIf=\"propriedade.get('maxLength').value\">\n          {{textarea.value.length}}/{{propriedade.get('maxLength').value}}\n        </mat-hint>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.minLength\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMinLengthMessage(propriedade.get('minLength').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.maxLength\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getMaxLengthMessage(propriedade.get('maxLength').value)}}\n        </mat-error>\n\t      <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t        <mat-icon>error</mat-icon>\n          {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t      </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n          <mat-icon>error</mat-icon>\n          {{propriedade.get('value').errors?.customError.message}}.\n        </mat-error>\n\t    </mat-form-field>\n\t    <mat-form-field\n\t\t    *ngIf=\"propriedade.get('type').value == typeField.select\"\n\t\t    [appearance]=\"propriedade.get('appearance').value\"\n\t\t    [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t    [formGroupName]=\"i\"\n\t\t    [ngClass]=\"propriedade.get('fieldClass').value\">\n\t      <mat-label>{{propriedade.get('label').value}}</mat-label>\n\t      <mat-select [multiple]=\"propriedade.get('multiple').value\" [required]=\"propriedade.get('required').value\"\n                    [tabIndex]=\"tabIndexStart + i\" formControlName=\"value\">\n\t        <mat-option *ngFor=\"let options of propriedade.get('opcoesSelect').value\" [value]=\"options.value\">\n\t          {{options.name}}\n\t        </mat-option>\n\t      </mat-select>\n\t      <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t        <mat-icon>info</mat-icon>\n\t\t      {{propriedade.get('textHint').value}}\n\t      </mat-hint>\n\t      <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n\t        <mat-icon>error</mat-icon>\n          {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n\t      </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n          <mat-icon>error</mat-icon>\n          {{propriedade.get('value').errors?.customError.message}}.\n        </mat-error>\n\t    </mat-form-field>\n      <mat-form-field\n        class=\"select-multiple-native\"\n        *ngIf=\"propriedade.get('type').value == typeField.selectMultipleNative\"\n        [appearance]=\"propriedade.get('appearance').value\"\n        [floatLabel]=\"propriedade.get('floatLabel').value\"\n        [formGroupName]=\"i\"\n        [ngClass]=\"propriedade.get('fieldClass').value\">\n        <mat-label>{{propriedade.get('label').value}}</mat-label>\n        <select\n          matNativeControl\n          formControlName=\"value\"\n          multiple\n          [tabIndex]=\"tabIndexStart + i\"\n          [required]=\"propriedade.get('required').value\">\n          <option *ngFor=\"let options of propriedade.get('opcoesSelect').value\" [value]=\"options.value\">\n            {{options.name}}\n          </option>\n        </select>\n        <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n          <mat-icon>info</mat-icon>\n          {{propriedade.get('textHint').value}}\n        </mat-hint>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.required\">\n          <mat-icon>error</mat-icon>\n          {{errorMessage.getRequiredMessage(propriedade.get('label').value)}}\n        </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n          <mat-icon>error</mat-icon>\n          {{propriedade.get('value').errors?.customError.message}}.\n        </mat-error>\n      </mat-form-field>\n\t    <div\n\t\t    *ngIf=\"propriedade.get('type').value == typeField.checkbox\"\n\t\t    [formGroupName]=\"i\"\n\t\t    [ngClass]=\"propriedade.get('fieldClass').value\">\n\t      <mat-checkbox\n          [tabIndex]=\"tabIndexStart + i\"\n\t\t      formControlName=\"value\"\n\t\t      value=\"true\">\n\t        {{propriedade.get('label').value}}\n\t      </mat-checkbox>\n\t    </div>\n\t\t  <div\n\t\t\t  *ngIf=\"propriedade.get('type').value == typeField.moreItems\"\n\t\t\t  [formGroupName]=\"i\"\n\t\t\t  [ngClass]=\"propriedade.get('fieldClass').value\"\n\t\t\t  class=\"more-items-content\">\n\t\t\t  <fieldset>\n\t\t\t\t  <legend>\n\t\t\t\t\t  <koala-button\n\t\t\t\t\t\t  (click)=\"addMoreItem(i)\"\n\t\t\t\t\t\t  [disabled]=\"propriedade.get('moreItemsConfig').value.length === propriedade.get('moreItemsMaxItems').value\"\n\t\t\t\t\t\t  [tooltip]=\"propriedade.get('moreItemsButtonIconAddlabel').value\"\n\t\t\t\t\t\t  [backgroundColor]=\"propriedade.get('moreItemsIconBackgroundColor').value\"\n              [color]=\"propriedade.get('moreItemsIconFontColor').value\"\n\t\t\t\t\t\t  class=\"btn-add-more-items\"\n\t\t\t\t\t\t  icon=\"add\">\n\t\t\t\t\t  </koala-button>\n\t\t\t\t\t  {{propriedade.get('label').value}} (Min.: {{propriedade.get('moreItemsMinItems').value}}\n\t\t\t\t\t                                     | Máx.: {{propriedade.get('moreItemsMaxItems').value}})\n\t\t\t\t  </legend>\n\t\t\t\t  <mat-accordion class=\"items\" multi>\n\t\t\t\t\t  <mat-expansion-panel\n\t\t\t\t\t\t  *ngFor=\"let item of propriedade.get('moreItemsConfig').value.slice().reverse(); index as indexMoreItems\"\n\t\t\t\t\t\t  expanded>\n\t\t\t\t\t\t  <mat-expansion-panel-header>\n\t\t\t\t\t\t\t\t<mat-panel-title class=\"titleForm\">#\n\t\t\t\t\t\t\t\t\t{{propriedade.get('moreItemsConfig').value.length - 1 - indexMoreItems + 1}}</mat-panel-title>\n\t\t\t\t\t\t\t\t<mat-panel-description class=\"titleForm\">\n\t\t\t\t\t\t\t\t\t{{propriedade.get('label').value}}\n\t\t\t\t\t\t\t\t\t<mat-icon>{{propriedade.get('moreItemsIcon').value}}</mat-icon>\n\t\t\t\t\t\t\t\t</mat-panel-description>\n\t\t\t\t\t\t\t</mat-expansion-panel-header>\n\t\t\t\t\t\t  <koala-dynamic-form\n\t\t\t\t\t\t\t  [showFieldsMoreItensConfig]=\"item.showFieldsMoreItensConfig\"\n\t\t\t\t\t\t\t  [showFields]=\"item.showFields\"\n\t\t\t\t\t\t\t  [formConfig]=\"item.formConfig\"\n\t\t\t\t\t\t\t  [form]=\"item.form\"\n                [tabIndexStart]=\"tabIndexStart + i\">\n\t\t\t\t\t\t  </koala-dynamic-form>\n\t\t\t\t\t    <mat-action-row\n\t\t\t\t\t\t    *ngIf=\"propriedade.get('moreItemsConfig').value.length > propriedade.get('moreItemsMinItems').value\">\n\t\t\t\t\t      <button\n\t\t\t\t\t\t      (click)=\"removeMoreItem(i, propriedade.get('moreItemsConfig').value.length - 1 - indexMoreItems)\"\n\t\t\t\t\t\t      mat-icon-button>\n\t\t\t\t\t\t      <mat-icon>delete</mat-icon>\n\t\t\t\t\t      </button>\n\t\t\t\t\t    </mat-action-row>\n\t\t\t\t\t  </mat-expansion-panel>\n\t\t\t\t  </mat-accordion>\n\t\t\t  </fieldset>\n\t\t  </div>\n\t\t  <mat-form-field\n\t\t\t  *ngIf=\"propriedade.get('type').value == typeField.autocomplete\"\n\t\t\t  [appearance]=\"propriedade.get('appearance').value\"\n\t\t\t  [floatLabel]=\"propriedade.get('floatLabel').value\"\n\t\t\t  [formGroupName]=\"i\"\n\t\t\t  [ngClass]=\"propriedade.get('fieldClass').value\">\n\t      <mat-label>{{propriedade.get('label').value}} {{propriedade.get('multiple').value &&\n\t      propriedade.get('required').value ? '*' : ''}}</mat-label>\n\t\t\t  <div *ngIf=\"propriedade.get('multiple').value else single\">\n\t        <mat-chip-list #chipList>\n            <mat-chip\n              (removed)=\"removeOptionOnAutocomplete(i, option)\"\n              *ngFor=\"let option of propriedade.get('autocompleteSelectedValue').value\"\n              [color]=\"getColorChip(propriedade.get('autocompleteMultipleConfig').value | async)\"\n              [removable]=\"true\"\n              [selectable]=\"true\">\n              {{display(option)}}\n              <mat-icon *ngIf=\"!propriedade.get('disabled').value\" matChipRemove>cancel</mat-icon>\n            </mat-chip>\n\t          <input\n              [id]=\"'autocomplete-' + propriedade.get('name').value\"\n              [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t          [required]=\"propriedade.get('required').value\"\n\t\t          [matAutocomplete]=\"auto\"\n\t\t          [matChipInputFor]=\"chipList\"\n              [tabIndex]=\"tabIndexStart + i\"\n              [autocomplete]=\"getRandomString()\"\n\t\t          formControlName=\"value\"\n\t\t          matInput\n\t\t          type=\"text\"\n\t\t          placeholder=\"Selecione um ou mais opções...\">\n\t        </mat-chip-list>\n\t      </div>\n\t      <ng-template #single>\n\t\t      <input\n\t\t\t      [matAutocomplete]=\"auto\"\n            [koalaAutoFocus]=\"propriedade.get('focus').value\"\n\t\t\t      [required]=\"propriedade.get('required').value\"\n            [tabIndex]=\"tabIndexStart + i\"\n            [autocomplete]=\"getRandomString()\"\n\t\t\t      formControlName=\"value\"\n\t\t\t      matInput\n\t\t\t      placeholder=\"Selecione uma opção...\"\n\t\t\t      type=\"text\">\n\t      </ng-template>\n\t      <mat-spinner *ngIf=\"propriedade.get('autocompleteLoading').value | async\" color=\"primary\"\n\t                   matSuffix></mat-spinner>\n\t      <button\n\t\t      (click)=\"clearAutocomplete(i)\"\n\t\t      *ngIf=\"\n\t          !(propriedade.get('autocompleteLoading').value | async) &&\n\t          !propriedade.get('disabled').value\"\n\t\t      color=\"warn\"\n\t\t      mat-icon-button\n\t\t      matSuffix\n\t\t      type=\"button\">\n\t        <mat-icon>close</mat-icon>\n\t      </button>\n\t      <mat-hint *ngIf=\"propriedade.get('textHint').value\">\n\t        <mat-icon>info</mat-icon>\n\t\t      {{propriedade.get('textHint').value}}\n\t      </mat-hint>\n\t      <mat-error *ngIf=\"propriedade.get('value').errors?.required || propriedade.get('value').errors?.autocompleteSelected\">\n\t        <mat-icon>error</mat-icon>\n          {{errorMessage.getAutocompleteMessage(propriedade.get('label').value)}}\n\t      </mat-error>\n        <mat-error *ngIf=\"propriedade.get('value').errors?.customError\">\n          <mat-icon>error</mat-icon>\n          {{propriedade.get('value').errors?.customError.message}}.\n        </mat-error>\n\t      <mat-autocomplete\n\t\t      #auto=\"matAutocomplete\"\n\t\t      [displayWith]=\"display\" autoActiveFirstOption>\n          <mat-option\n            *ngIf=\"propriedade.get('autocompleteAddOption').value && isValidNewAutocompleteOption(propriedade.get('value').value)\"\n            [value]=\"{\n              value: {id: 0, name: propriedade.get('value').value},\n              name: propriedade.get('value').value\n            }\">\n            Add <b>{{propriedade.get('value').value}}</b>...\n          </mat-option>\n\t\t      <div *ngIf=\"(getAutocompleteOptions(propriedade) | async) as options\">\n\t\t        <mat-option *ngFor=\"let option of options\" [value]=\"option\">\n\t\t          {{option.name}}\n\t\t        </mat-option>\n\t\t      </div>\n\t      </mat-autocomplete>\n\t    </mat-form-field>\n\t\t  <div *ngIf=\"propriedade.get('type').value == typeField.file\">\n\t\t\t  <koala-file-button\n\t\t\t\t  (getFiles)=\"propriedade.get('value').setValue($event)\"\n\t\t\t\t  [accept]=\"propriedade.get('fileButtonConfig').value.accept\"\n\t\t\t\t  [backgroundColor]=\"propriedade.get('fileButtonConfig').value.backgroundColor\"\n\t\t\t\t  [color]=\"propriedade.get('fileButtonConfig').value.color\"\n\t\t\t\t  [disabled]=\"propriedade.get('disabled').value\"\n\t\t\t\t  [icon]=\"propriedade.get('fileButtonConfig').value.icon\"\n\t\t\t\t  [multiple]=\"propriedade.get('multiple').value\"\n\t\t\t\t  [text]=\"propriedade.get('fileButtonConfig').value.text\">\n\t\t\t  </koala-file-button>\n\t\t  </div>\n\t\t  <div *ngIf=\"\n\t\t    propriedade.get('type').value == typeField.dynamicForm &&\n\t\t\t\t(getDynamicFormConfig(propriedade) | async) as dynamicFormConfig\">\n\t\t\t  <fieldset *ngIf=\"propriedade.get('label').value else dynamicFormWithoutLabel\">\n\t\t\t\t  <legend>{{propriedade.get('label').value}}</legend>\n\t\t\t\t  <koala-dynamic-form\n\t\t\t\t\t  [formConfig]=\"dynamicFormConfig.formConfig\"\n\t\t\t\t\t  [form]=\"dynamicFormConfig.form\"\n\t\t\t\t\t  [setValues]=\"dynamicFormConfig.setValues\"\n\t\t\t\t\t  [showFields]=\"dynamicFormConfig.showFields\"\n            [tabIndexStart]=\"tabIndexStart + i\">\n\t\t\t\t  </koala-dynamic-form>\n\t\t\t  </fieldset>\n\t\t\t  <ng-template #dynamicFormWithoutLabel>\n\t\t\t\t  <koala-dynamic-form\n\t\t\t\t\t  [formConfig]=\"dynamicFormConfig.formConfig\"\n\t\t\t\t\t  [form]=\"dynamicFormConfig.form\"\n\t\t\t\t\t  [setValues]=\"dynamicFormConfig.setValues\"\n\t\t\t\t\t  [showFields]=\"dynamicFormConfig.showFields\"\n            [tabIndexStart]=\"tabIndexStart + i\">\n\t\t\t\t  </koala-dynamic-form>\n\t\t\t  </ng-template>\n\t\t  </div>\n      <div\n        class=\"radio-btn-group\"\n        *ngIf=\"propriedade.get('type').value == typeField.radio\"\n        [formGroupName]=\"i\"\n        [ngClass]=\"propriedade.get('fieldClass').value\">\n        <mat-radio-group formControlName=\"value\">\n          <label *ngIf=\"propriedade.get('label').value\">{{propriedade.get('label').value}}</label>\n          <mat-radio-button\n            [tabIndex]=\"tabIndexStart + i\"\n            *ngFor=\"let options of propriedade.get('opcoesSelect').value\"\n            [value]=\"options.value\">\n            {{options.name}}\n          </mat-radio-button>\n        </mat-radio-group>\n      </div>\n\t  </div>\n  </div>\n  <ng-content select=\"[btn-submit]\"></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { BtnSubmitComponent } from './btn-submit/btn-submit.component';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { DynamicFormComponent } from './dynamic-form/dynamic-form.component';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { maskOptions } from '@koalarx/ui/common';\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\nimport { KoalaButtonModule } from '@koalarx/ui/button';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { KoalaAutofocusDirective } from './directives/koala-autofocus.directive';\nimport { KoalaFileButtonModule } from '@koalarx/ui/file-button';\nimport { MatChipsModule } from '@angular/material/chips';\n\n@NgModule({\n  declarations: [\n    BtnSubmitComponent,\n    DynamicFormComponent,\n    KoalaAutofocusDirective\n  ],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    FormsModule,\n    CurrencyMaskModule,\n    NgxMaskModule.forRoot(maskOptions),\n    KoalaFileButtonModule,\n    MatInputModule,\n    MatSelectModule,\n    MatRadioModule,\n    MatCheckboxModule,\n    MatAutocompleteModule,\n    MatButtonModule,\n    MatIconModule,\n    MatExpansionModule,\n    MatChipsModule,\n    KoalaButtonModule,\n    MatProgressSpinnerModule\n  ],\n  exports: [\n    ReactiveFormsModule,\n    FormsModule,\n    KoalaAutofocusDirective,\n    NgxMaskModule,\n    KoalaFileButtonModule,\n    MatInputModule,\n    MatSelectModule,\n    MatRadioModule,\n    MatCheckboxModule,\n    MatAutocompleteModule,\n    MatButtonModule,\n    MatIconModule,\n    MatProgressSpinnerModule,\n    BtnSubmitComponent,\n    DynamicFormComponent\n  ]\n})\nexport class KoalaFormModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i2","i2.KoalaDynamicFormService","i4","i15","i16","i20","i21.KoalaAutofocusDirective"],"mappings":"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"}