@koalarx/ui 13.1.2 → 13.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/alert/esm2020/lib/dialog-alert.component.mjs +4 -4
- package/alert/esm2020/lib/koala.alert.module.mjs +5 -5
- package/alert/esm2020/lib/koala.alert.service.mjs +4 -4
- package/alert/fesm2015/koalarx-ui-alert.mjs +10 -10
- package/alert/fesm2015/koalarx-ui-alert.mjs.map +1 -1
- package/alert/fesm2020/koalarx-ui-alert.mjs +10 -10
- package/alert/fesm2020/koalarx-ui-alert.mjs.map +1 -1
- package/button/esm2020/lib/button.component.mjs +4 -4
- package/button/esm2020/lib/koala.button.module.mjs +5 -5
- package/button/fesm2015/koalarx-ui-button.mjs +7 -7
- package/button/fesm2015/koalarx-ui-button.mjs.map +1 -1
- package/button/fesm2020/koalarx-ui-button.mjs +7 -7
- package/button/fesm2020/koalarx-ui-button.mjs.map +1 -1
- package/common/esm2020/lib/services/csv/koala.csv.service.mjs +4 -4
- package/common/esm2020/lib/services/xlsx/koala.xlsx.service.mjs +4 -4
- package/common/fesm2015/koalarx-ui-common.mjs +6 -6
- package/common/fesm2015/koalarx-ui-common.mjs.map +1 -1
- package/common/fesm2020/koalarx-ui-common.mjs +6 -6
- package/common/fesm2020/koalarx-ui-common.mjs.map +1 -1
- package/core/esm2020/lib/loader/loader-bar-page.component.mjs +4 -4
- package/core/esm2020/lib/ngx-koala.module.mjs +5 -5
- package/core/esm2020/lib/page/koala.page.module.mjs +5 -5
- package/core/esm2020/lib/page/notifications/notification.component.mjs +4 -4
- package/core/esm2020/lib/page/page.component.mjs +4 -4
- package/core/esm2020/lib/router/koala.parameter-hash-location-stategy.mjs +4 -4
- package/core/esm2020/lib/services/api-requester/koala.api-requester.service.mjs +4 -4
- package/core/esm2020/lib/services/loader/koala.loader.service.mjs +4 -4
- package/core/esm2020/lib/services/openid/koala.oauth2.service.mjs +20 -26
- package/core/esm2020/lib/services/request/koala.request.service.mjs +4 -4
- package/core/esm2020/lib/services/token/koala.token.service.mjs +4 -4
- package/core/fesm2015/koalarx-ui-core.mjs +55 -59
- package/core/fesm2015/koalarx-ui-core.mjs.map +1 -1
- package/core/fesm2020/koalarx-ui-core.mjs +50 -56
- package/core/fesm2020/koalarx-ui-core.mjs.map +1 -1
- package/dialog/esm2020/lib/dialog.component.mjs +4 -4
- package/dialog/esm2020/lib/koala.dialog.module.mjs +5 -5
- package/dialog/esm2020/lib/koala.dialog.service.mjs +4 -4
- package/dialog/fesm2015/koalarx-ui-dialog.mjs +10 -10
- package/dialog/fesm2015/koalarx-ui-dialog.mjs.map +1 -1
- package/dialog/fesm2020/koalarx-ui-dialog.mjs +10 -10
- package/dialog/fesm2020/koalarx-ui-dialog.mjs.map +1 -1
- package/dynamic-component/esm2020/lib/koala-dynamic-component.directive.mjs +4 -4
- package/dynamic-component/esm2020/lib/koala-dynamic-component.factory.mjs +4 -4
- package/dynamic-component/esm2020/lib/koala-dynamic-component.module.mjs +5 -5
- package/dynamic-component/fesm2015/koalarx-ui-dynamic-component.mjs +10 -10
- package/dynamic-component/fesm2015/koalarx-ui-dynamic-component.mjs.map +1 -1
- package/dynamic-component/fesm2020/koalarx-ui-dynamic-component.mjs +10 -10
- package/dynamic-component/fesm2020/koalarx-ui-dynamic-component.mjs.map +1 -1
- package/file-button/esm2020/lib/file-button.component.mjs +4 -4
- package/file-button/esm2020/lib/koala.btn-file.service.mjs +4 -4
- package/file-button/esm2020/lib/koala.file-button.module.mjs +5 -5
- package/file-button/fesm2015/koalarx-ui-file-button.mjs +10 -10
- package/file-button/fesm2015/koalarx-ui-file-button.mjs.map +1 -1
- package/file-button/fesm2020/koalarx-ui-file-button.mjs +10 -10
- package/file-button/fesm2020/koalarx-ui-file-button.mjs.map +1 -1
- package/folder-page/esm2020/lib/folder.component.mjs +4 -4
- package/folder-page/esm2020/lib/koala.folder-page.module.mjs +5 -5
- package/folder-page/fesm2015/koalarx-ui-folder-page.mjs +7 -7
- package/folder-page/fesm2015/koalarx-ui-folder-page.mjs.map +1 -1
- package/folder-page/fesm2020/koalarx-ui-folder-page.mjs +7 -7
- package/folder-page/fesm2020/koalarx-ui-folder-page.mjs.map +1 -1
- package/form/esm2020/lib/btn-submit/btn-submit.component.mjs +4 -4
- package/form/esm2020/lib/directives/koala-autofocus.directive.mjs +4 -4
- package/form/esm2020/lib/dynamic-form/dynamic-form.component.mjs +4 -4
- package/form/esm2020/lib/dynamic-form/koala.dynamic-form.service.mjs +4 -4
- package/form/esm2020/lib/koala.form.module.mjs +5 -5
- package/form/fesm2015/koalarx-ui-form.mjs +16 -16
- package/form/fesm2015/koalarx-ui-form.mjs.map +1 -1
- package/form/fesm2020/koalarx-ui-form.mjs +16 -16
- package/form/fesm2020/koalarx-ui-form.mjs.map +1 -1
- package/icon/esm2020/lib/icon.component.mjs +4 -4
- package/icon/esm2020/lib/koala.icon.module.mjs +5 -5
- package/icon/fesm2015/koalarx-ui-icon.mjs +7 -7
- package/icon/fesm2015/koalarx-ui-icon.mjs.map +1 -1
- package/icon/fesm2020/koalarx-ui-icon.mjs +7 -7
- package/icon/fesm2020/koalarx-ui-icon.mjs.map +1 -1
- package/icons-animated/esm2020/lib/icons/downloading/downloading-icon-animated.component.mjs +4 -4
- package/icons-animated/esm2020/lib/icons/loading/loading-icon-animated.component.mjs +4 -4
- package/icons-animated/esm2020/lib/icons-animated.component.mjs +4 -4
- package/icons-animated/esm2020/lib/icons-animated.service.mjs +4 -4
- package/icons-animated/esm2020/lib/koala-icons-animated.module.mjs +5 -5
- package/icons-animated/fesm2015/koalarx-ui-icons-animated.mjs +16 -16
- package/icons-animated/fesm2015/koalarx-ui-icons-animated.mjs.map +1 -1
- package/icons-animated/fesm2020/koalarx-ui-icons-animated.mjs +16 -16
- package/icons-animated/fesm2020/koalarx-ui-icons-animated.mjs.map +1 -1
- package/list/esm2020/lib/koala.list.module.mjs +5 -5
- package/list/esm2020/lib/koala.list.service.mjs +4 -4
- package/list/esm2020/lib/list.component.mjs +4 -4
- package/list/esm2020/lib/providers/pagination/pagination.provider.mjs +4 -4
- package/list/fesm2015/koalarx-ui-list.mjs +13 -13
- package/list/fesm2015/koalarx-ui-list.mjs.map +1 -1
- package/list/fesm2020/koalarx-ui-list.mjs +13 -13
- package/list/fesm2020/koalarx-ui-list.mjs.map +1 -1
- package/menu/esm2020/lib/koala.menu.module.mjs +5 -5
- package/menu/esm2020/lib/koala.menu.service.mjs +4 -4
- package/menu/esm2020/lib/menu.component.mjs +4 -4
- package/menu/fesm2015/koalarx-ui-menu.mjs +10 -10
- package/menu/fesm2015/koalarx-ui-menu.mjs.map +1 -1
- package/menu/fesm2020/koalarx-ui-menu.mjs +10 -10
- package/menu/fesm2020/koalarx-ui-menu.mjs.map +1 -1
- package/package.json +8 -8
- package/question/esm2020/lib/dialog-question.component.mjs +4 -4
- package/question/esm2020/lib/koala.question.module.mjs +5 -5
- package/question/esm2020/lib/koala.question.service.mjs +4 -4
- package/question/fesm2015/koalarx-ui-question.mjs +10 -10
- package/question/fesm2015/koalarx-ui-question.mjs.map +1 -1
- package/question/fesm2020/koalarx-ui-question.mjs +10 -10
- package/question/fesm2020/koalarx-ui-question.mjs.map +1 -1
- package/snackbar/esm2020/lib/koala.snackbar.component.mjs +4 -4
- package/snackbar/esm2020/lib/koala.snackbar.module.mjs +5 -5
- package/snackbar/esm2020/lib/koala.snackbar.service.mjs +4 -4
- package/snackbar/fesm2015/koalarx-ui-snackbar.mjs +10 -10
- package/snackbar/fesm2015/koalarx-ui-snackbar.mjs.map +1 -1
- package/snackbar/fesm2020/koalarx-ui-snackbar.mjs +10 -10
- package/snackbar/fesm2020/koalarx-ui-snackbar.mjs.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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 { FormGroup } 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: FormGroup;\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, FormBuilder, 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: FormBuilder,\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 { FormBuilder } 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: FormBuilder,\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","import { DynamicFormTypeFieldEnum } from \"../../enums/dynamic-form-type-field.enum\";\nimport { FieldBase } from \"./field.base\";\nimport { FormBuilder } 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: FormBuilder,\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 { FormBuilder } 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: FormBuilder,\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 { FormBuilder } 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: FormBuilder,\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() {\n this.config.formConfig = this.config.formConfig.filter(config => config.name !== 'endMoreItems');\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 { FormArray, FormBuilder, FormGroup, 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: FormBuilder,\n protected deviceService: DeviceDetectorService) {\n }\n\n public build() {\n return new DynamicFormBuilder(this.fb, this.deviceService);\n }\n\n public updateValidator(formGroup: FormGroup, 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 FormArray;\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: FormGroup, disabled: boolean, fields: string[]) {\n const formArray = formGroup.get('formData') as FormArray;\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: FormGroup) {\n const data = {};\n const formArray = form.get('formData') as FormArray;\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: FormGroup }[];\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: FormGroup) {\n const formArray = form.get('formData') as FormArray;\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 { FormControl, FormGroupDirective, NgForm } from '@angular/forms';\n\nexport class ShowInvalidFields implements ErrorStateMatcher {\n\n constructor() {\n }\n\n isErrorState(control: FormControl | 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 { FormGroup } 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: () => FormGroup) {\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 { FormArray, FormBuilder, FormGroup, 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: FormGroup;\n @Input() formConfig: KoalaDynamicFormFieldInterface[];\n @Input() showFields: BehaviorSubject<KoalaDynamicFormShowFieldInterface[]>;\n @Input() showFieldsMoreItensConfig: KoalaDynamicFormMoreItensShowFieldConfigInterface[];\n @Input() setValues: BehaviorSubject<KoalaDynamicSetValueInterface[]>;\n @Input() tabIndexStart: number = 1;\n public controls: FormArray;\n public typeField = DynamicFormTypeFieldEnum;\n public hoursAndMinutesMask = '00:000';\n public errorMessage = KoalaLanguageHelper;\n\n @ViewChild('autocompleteInput') autocompleteInput: ElementRef<HTMLInputElement>;\n\n constructor(\n private fb: FormBuilder,\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 FormArray;\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 if (this.autocompleteInput?.nativeElement) {\n this.autocompleteInput.nativeElement.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 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 FormArray;\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): FormGroup {\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 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: FormGroup) {\n subject.subscribe(item => {\n if (item) {\n const formArray = form.get('formData') as FormArray;\n for (const prop of item.values()) {\n this.setValueByProp(formArray, prop);\n }\n }\n });\n }\n\n private changeVisibilityFields(subject: BehaviorSubject<KoalaDynamicFormShowFieldInterface[]>, form: FormGroup) {\n subject.pipe(debounceTime(5)).subscribe(item => {\n if (item) {\n const formArray = form.get('formData') as FormArray;\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 FormArray;\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 FormGroup;\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: FormArray, 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: FormGroup) {\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\">\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\t\t #autocompleteInput\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\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":["i4","i1","i2","i2.KoalaDynamicFormService","i3","i5","i12","i19.KoalaAutofocusDirective"],"mappings":"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"}
|
|
1
|
+
{"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 { FormGroup } 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: FormGroup;\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, FormBuilder, 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: FormBuilder,\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 { FormBuilder } 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: FormBuilder,\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","import { DynamicFormTypeFieldEnum } from \"../../enums/dynamic-form-type-field.enum\";\nimport { FieldBase } from \"./field.base\";\nimport { FormBuilder } 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: FormBuilder,\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 { FormBuilder } 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: FormBuilder,\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 { FormBuilder } 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: FormBuilder,\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() {\n this.config.formConfig = this.config.formConfig.filter(config => config.name !== 'endMoreItems');\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 { FormArray, FormBuilder, FormGroup, 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: FormBuilder,\n protected deviceService: DeviceDetectorService) {\n }\n\n public build() {\n return new DynamicFormBuilder(this.fb, this.deviceService);\n }\n\n public updateValidator(formGroup: FormGroup, 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 FormArray;\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: FormGroup, disabled: boolean, fields: string[]) {\n const formArray = formGroup.get('formData') as FormArray;\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: FormGroup) {\n const data = {};\n const formArray = form.get('formData') as FormArray;\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: FormGroup }[];\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: FormGroup) {\n const formArray = form.get('formData') as FormArray;\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 { FormControl, FormGroupDirective, NgForm } from '@angular/forms';\n\nexport class ShowInvalidFields implements ErrorStateMatcher {\n\n constructor() {\n }\n\n isErrorState(control: FormControl | 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 { FormGroup } 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: () => FormGroup) {\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 { FormArray, FormBuilder, FormGroup, 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: FormGroup;\n @Input() formConfig: KoalaDynamicFormFieldInterface[];\n @Input() showFields: BehaviorSubject<KoalaDynamicFormShowFieldInterface[]>;\n @Input() showFieldsMoreItensConfig: KoalaDynamicFormMoreItensShowFieldConfigInterface[];\n @Input() setValues: BehaviorSubject<KoalaDynamicSetValueInterface[]>;\n @Input() tabIndexStart: number = 1;\n public controls: FormArray;\n public typeField = DynamicFormTypeFieldEnum;\n public hoursAndMinutesMask = '00:000';\n public errorMessage = KoalaLanguageHelper;\n\n @ViewChild('autocompleteInput') autocompleteInput: ElementRef<HTMLInputElement>;\n\n constructor(\n private fb: FormBuilder,\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 FormArray;\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 if (this.autocompleteInput?.nativeElement) {\n this.autocompleteInput.nativeElement.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 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 FormArray;\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): FormGroup {\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 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: FormGroup) {\n subject.subscribe(item => {\n if (item) {\n const formArray = form.get('formData') as FormArray;\n for (const prop of item.values()) {\n this.setValueByProp(formArray, prop);\n }\n }\n });\n }\n\n private changeVisibilityFields(subject: BehaviorSubject<KoalaDynamicFormShowFieldInterface[]>, form: FormGroup) {\n subject.pipe(debounceTime(5)).subscribe(item => {\n if (item) {\n const formArray = form.get('formData') as FormArray;\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 FormArray;\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 FormGroup;\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: FormArray, 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: FormGroup) {\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\">\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\t\t #autocompleteInput\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\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":["i4","i1","i2","i2.KoalaDynamicFormService","i3","i5","i12","i19.KoalaAutofocusDirective"],"mappings":"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"}
|