{"version":3,"file":"uni-form-ng.mjs","sources":["../../../projects/uni-form-ng/src/lib/utils/rx-unsubscribe.ts","../../../projects/uni-form-ng/src/lib/components/form-field-error/form-field-error.component.ts","../../../projects/uni-form-ng/src/lib/components/form-field-error/form-field-error.component.html","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/slider/slider-mat.component.ts","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/slider/slider-mat.component.html","../../../projects/uni-form-ng/src/lib/utils/is.ts","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/text/text.component.ts","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/text/text.component.html","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/select/select.component.ts","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/select/select.component.html","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/autocomplete/autocomplete-mat.service.ts","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/autocomplete/autocomplete-mat.component.ts","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/autocomplete/autocomplete-mat.component.html","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/datepicker/datepicker-mat.component.ts","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/datepicker/datepicker-mat.component.html","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/datepicker-range/datepicker-range-mat.component.ts","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/datepicker-range/datepicker-range-mat.component.html","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/form-fields-mat.component.ts","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/form-fields-mat.component.html","../../../projects/uni-form-ng/src/lib/components/form/form.service.ts","../../../projects/uni-form-ng/src/lib/components/form/form.component.ts","../../../projects/uni-form-ng/src/lib/components/form/form.component.html","../../../projects/uni-form-ng/src/lib/components/form-field/form-field.service.ts","../../../projects/uni-form-ng/src/lib/components/form-field/form-field.component.ts","../../../projects/uni-form-ng/src/lib/components/form-field/form-field.component.html","../../../projects/uni-form-ng/src/lib/components/form-group/form-group.component.ts","../../../projects/uni-form-ng/src/lib/components/form-group/form-group.component.html","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/number/number.component.ts","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/number/number.component.html","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/textarea/textarea.component.ts","../../../projects/uni-form-ng/src/lib/components/form-fields/mat/textarea/textarea.component.html","../../../projects/uni-form-ng/src/public-api.ts","../../../projects/uni-form-ng/src/uni-form-ng.ts"],"sourcesContent":["/**\r\n * Provides destroy$ observable for subclasses to use .takeUntil(this.destroy$)\r\n * Avoids having to keep up with so many subscriptions\r\n */\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport abstract class RxUnsubscribe implements OnDestroy {\r\n\r\n  destroy$: Subject<boolean> = new Subject();\r\n\r\n  ngOnDestroy() {\r\n    this.destroy$.next(true);\r\n    this.destroy$.complete();\r\n  }\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { ValidationErrors } from '@angular/forms';\r\n\r\nimport { UniFormFieldErrors } from '../../models/interfaces/errors.model';\r\n\r\n@Component({\r\n  selector: 'uni-form-field-error-ng',\r\n  standalone: true,\r\n  templateUrl: './form-field-error.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UniFormFieldErrorComponent {\r\n\r\n  @Input()\r\n  fieldErrors: Partial<UniFormFieldErrors> = {};\r\n\r\n  @Input()\r\n  errors: ValidationErrors | null = null;\r\n}\r\n","@if (errors) {\r\n  @if (errors!['required']) {\r\n    @if (fieldErrors['required']) {\r\n      {{ fieldErrors.required }}\r\n    } @else {\r\n      This field is <strong>required</strong>\r\n    }\r\n  }\r\n\r\n  @if (errors!['min']) {\r\n    @if (fieldErrors['min']) {\r\n      {{ fieldErrors.min }}\r\n    } @else {\r\n      Minimum is: <strong>{{ errors!['min']!['min'] }}</strong>\r\n    }\r\n  }\r\n\r\n  @if (errors!['max']) {\r\n    @if (fieldErrors['max']) {\r\n      {{ fieldErrors.max }}\r\n    } @else {\r\n      Maximum is: <strong>{{ errors!['max']!['max'] }}</strong>\r\n    }\r\n  }\r\n\r\n  @if (errors!['minLength']) {\r\n    @if (fieldErrors['minLength']) {\r\n      {{ fieldErrors.minLength }}\r\n    } @else {\r\n      Minimum characters count is:\r\n      <strong>{{ errors!['minlength']!['requiredLength'] }}</strong>\r\n      but actual characters count is:\r\n      <strong>{{ errors!['minlength']!['actualLength'] }}</strong>\r\n    }\r\n  }\r\n\r\n  @if (errors!['maxLength']) {\r\n    @if (fieldErrors['maxLength']) {\r\n      {{ fieldErrors.maxLength }}\r\n    } @else {\r\n      Maximum characters count is:\r\n      <strong>{{ errors!['maxlength']!['requiredLength'] }}</strong>\r\n      but actual characters count is:\r\n      <strong>{{ errors!['maxlength']!['actualLength'] }}</strong>\r\n    }\r\n  }\r\n\r\n  @if (errors!['pattern']) {\r\n    @if (fieldErrors['pattern']) {\r\n      {{ fieldErrors.pattern }}\r\n    } @else {\r\n      The actual value does not match the pattern:\r\n      <strong>{{ errors!['pattern']!['requiredPattern'] }}</strong>\r\n    }\r\n  }\r\n\r\n  <!--  @if (errors!['matDatepickerParse']) {-->\r\n    <!--    @if (fieldErrors['format']) {-->\r\n    <!--      {{ fieldErrors.format }}-->\r\n    <!--    } @else {-->\r\n    <!--      Incorrect date format-->\r\n    <!--    }-->\r\n    <!--  }-->\r\n}\r\n","import { Component, Input } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatLabel } from '@angular/material/form-field';\nimport { MatSlider, MatSliderRangeThumb, MatSliderThumb } from '@angular/material/slider';\n\nimport { UniFormField } from '../../../../models/interfaces/form-field.model';\nimport { UniFormFieldErrorComponent } from '../../../form-field-error/form-field-error.component';\n\n@Component({\n  selector: 'uni-slider-mat',\n  standalone: true,\n  imports: [ReactiveFormsModule, MatLabel, MatSlider, MatSliderRangeThumb, MatSliderThumb, UniFormFieldErrorComponent],\n  templateUrl: './slider-mat.component.html',\n})\nexport class UniSliderMatComponent {\n  @Input()\n  field: UniFormField = { key: '', type: 'slider' };\n\n  @Input()\n  formGroup: FormGroup;\n\n  constructor(private formBuilder: FormBuilder) {\n    this.formGroup = this.formBuilder.group({});\n  }\n}\n","<div class='uni-slider-label-container'>\r\n  <label>{{ field.label }}</label>\r\n\r\n  <label>\r\n    @if (field.keyEnd) {\r\n      {{ formGroup.value[field.key] }} - {{ formGroup.value[field.keyEnd] }}\r\n    } @else {\r\n      {{ formGroup.value[field.key] }}\r\n    }\r\n  </label>\r\n</div>\r\n\r\n<mat-slider\r\n  [min]='field.min'\r\n  [max]='field.max'\r\n  [step]='field.step'\r\n  [discrete]='field.tooltip'\r\n  [showTickMarks]='field.ticks'\r\n  [formGroup]='formGroup'\r\n  class='w-100'\r\n>\r\n  @if (field.keyEnd) {\r\n    <input matSliderStartThumb [formControlName]='field.key'>\r\n    <input matSliderEndThumb [formControlName]='field.keyEnd'>\r\n  } @else {\r\n    <input matSliderThumb [formControlName]='field.key'>\r\n  }\r\n</mat-slider>\r\n","export const isDefined = (value: unknown): boolean => typeof value !== 'undefined';\r\n\r\nexport const isNull = (value: unknown): boolean => value === null;\r\n\r\nexport const isArray = (value: unknown): boolean => Array.isArray(value);\r\n\r\nexport const isObject = (value: unknown): boolean => typeof value === 'object' && value !== null && !isArray(value);\r\n\r\nexport const isString = (value: unknown): value is string => typeof value === 'string';\r\n\r\nexport const isBoolean = (value: unknown): value is boolean => typeof value === 'boolean';\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatError, MatFormField, MatHint, MatLabel } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\n\r\nimport { UniFormField } from '../../../../models/interfaces/form-field.model';\r\nimport { UniFormFieldType } from '../../../../models/types/form-field.type';\r\nimport { isDefined } from '../../../../utils/is';\r\nimport { UniFormFieldErrorComponent } from '../../../form-field-error/form-field-error.component';\r\n\r\n@Component({\r\n  selector: 'uni-text-mat',\r\n  standalone: true,\r\n  imports: [ReactiveFormsModule, MatFormField, MatInput, MatLabel, MatError, MatHint, UniFormFieldErrorComponent],\r\n  templateUrl: 'text.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UniTextMatComponent {\r\n\r\n  @Input()\r\n  field: UniFormField = { key: '', type: 'text' };\r\n\r\n  @Input()\r\n  formGroup: FormGroup;\r\n\r\n  @Input()\r\n  hasPrefix: boolean = false;\r\n\r\n  @Input()\r\n  hasSuffix: boolean = false;\r\n\r\n  protected readonly isDefined = isDefined;\r\n\r\n  constructor(private formBuilder: FormBuilder) {\r\n    this.formGroup = this.formBuilder.group({});\r\n  }\r\n\r\n  isInput(fieldType: UniFormFieldType): boolean {\r\n    return ['text', 'email', 'password'].includes(fieldType);\r\n  }\r\n}\r\n","<mat-form-field [formGroup]='formGroup' class='w-100 pt-1'>\r\n  <mat-label>{{ field.label }}</mat-label>\r\n\r\n  @if (hasPrefix) {\r\n    <div matPrefix>\r\n      <ng-content select='[prefix]'></ng-content>\r\n    </div>\r\n  }\r\n\r\n  @if (isInput(field.type) || field.type === \"number\") {\r\n    <input\r\n      matInput\r\n      [type]='field.type'\r\n      [formControlName]='field.key'\r\n      [placeholder]='field.placeholder || \"\"'\r\n      [min]='field.min'\r\n      [max]='field.max'\r\n      [step]='field.step'\r\n    >\r\n  }\r\n\r\n  @if (field.type === \"textarea\") {\r\n    <textarea matInput [formControlName]='field.key' [placeholder]='field.placeholder || \"\"'></textarea>\r\n  }\r\n\r\n  @if (hasSuffix) {\r\n    <div matSuffix>\r\n      <ng-content select='[suffix]'></ng-content>\r\n    </div>\r\n  }\r\n\r\n  @if (field.hint) {\r\n    <mat-hint align='start'>{{ field.hint }}</mat-hint>\r\n  }\r\n\r\n  @if ((isInput(field.type) || field.type === \"textarea\") && field.minLength && !field.hint) {\r\n    <mat-hint align='start'>\r\n      @if (field.maxLength) {\r\n        Minimum characters count is: <strong>{{ field.minLength }}</strong>\r\n        and maximum is: <strong>{{ field.maxLength }}</strong>\r\n      } @else {\r\n        Minimum characters count is: <strong>{{ field.minLength }}</strong>\r\n      }\r\n    </mat-hint>\r\n  }\r\n\r\n  @if ((isInput(field.type) || field.type === \"textarea\") && field.maxLength) {\r\n    <mat-hint align='end'>\r\n      {{ formGroup.controls[field.key].value.length }} / {{ field.maxLength }}\r\n    </mat-hint>\r\n  }\r\n\r\n  @if (field.type === \"number\" && (isDefined(field.min) || isDefined(field.max)) && !field.hint) {\r\n    <mat-hint align='start'>\r\n      @if (isDefined(field.min) && isDefined(field.max)) {\r\n        Min is: <strong>{{ field.min }}</strong>, max is: <strong>{{ field.max }}</strong>\r\n      } @else {\r\n        @if (isDefined(field.min)) {\r\n          Min is: <strong>{{ field.min }}</strong>\r\n        }\r\n\r\n        @if (isDefined(field.max)) {\r\n          Max is: <strong>{{ field.max }}</strong>\r\n        }\r\n      }\r\n    </mat-hint>\r\n  }\r\n\r\n  <mat-error [style]='{display: \"flex\"}'>\r\n    <uni-form-field-error-ng\r\n      [fieldErrors]='field.errors ?? {}'\r\n      [errors]='formGroup.controls[field.key].errors'\r\n    ></uni-form-field-error-ng>\r\n  </mat-error>\r\n</mat-form-field>\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatError, MatFormField, MatHint, MatLabel } from '@angular/material/form-field';\nimport { MatOptgroup, MatOption, MatSelect } from '@angular/material/select';\n\nimport { UniFormField } from '../../../../models/interfaces/form-field.model';\nimport { UniFormFieldErrorComponent } from '../../../form-field-error/form-field-error.component';\n\n@Component({\n  selector: 'uni-select-mat',\n  standalone: true,\n  imports: [ReactiveFormsModule, MatFormField, MatLabel, MatError, MatHint, MatSelect, MatOptgroup, MatOption, UniFormFieldErrorComponent],\n  templateUrl: 'select.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class UniSelectMatComponent {\n  @Input()\n  field: UniFormField = { key: '', type: 'text' };\n\n  @Input()\n  formGroup: FormGroup;\n\n  constructor(private formBuilder: FormBuilder) {\n    this.formGroup = this.formBuilder.group({});\n  }\n}\n","<mat-form-field [formGroup]='formGroup' class='w-100 pt-1'>\r\n  <mat-label>{{ field.label }}</mat-label>\r\n\r\n  @if (field.type === 'select') {\r\n    <mat-select\r\n      [formControlName]='field.key'\r\n      [multiple]='field.multi'\r\n      [placeholder]='field.placeholder || \"\"'\r\n    >\r\n      @for (group of field.groups; track group.name) {\r\n        <mat-optgroup [label]='group.name' [disabled]='group.disabled'>\r\n          @for (option of group.options; track option.value) {\r\n            <mat-option [value]='option.value' [disabled]='option.disabled'>\r\n              {{ option.label }}\r\n            </mat-option>\r\n          }\r\n        </mat-optgroup>\r\n      }\r\n\r\n      @for (option of field.options; track option.value) {\r\n        <mat-option [value]='option.value' [disabled]='option.disabled'>\r\n          {{ option.label }}\r\n        </mat-option>\r\n      }\r\n    </mat-select>\r\n  }\r\n\r\n  @if (field.hint) {\r\n    <mat-hint align='start'>{{ field.hint }}</mat-hint>\r\n  }\r\n\r\n  <mat-error [style]='{display: \"flex\"}'>\r\n    <uni-form-field-error-ng\r\n      [fieldErrors]='field.errors ?? {}'\r\n      [errors]='formGroup.controls[field.key].errors'\r\n    ></uni-form-field-error-ng>\r\n  </mat-error>\r\n</mat-form-field>\r\n","import { Injectable } from '@angular/core';\n\nimport { UniFormFieldGroup } from '../../../../models/interfaces/form-field-group.model';\nimport { UniFormFieldOption } from '../../../../models/interfaces/form-field-option.model';\nimport { isDefined } from '../../../../utils/is';\n\n@Injectable()\nexport class UniAutocompleteMatService {\n  getOptionBy(groups: UniFormFieldGroup[] = [], options: UniFormFieldOption[] = [], val?: string, key?: string): UniFormFieldOption | undefined {\n    const value = val ? (val.toLowerCase() || '').trim() : '';\n    const label = key ? (key.toLowerCase() || '').trim() : '';\n\n    return groups.length > 0 ? this.getGroup(groups, value, label) : this.findOptionBy(options, value, label);\n  }\n\n  private getGroup(groups: UniFormFieldGroup[], value?: string, label?: string): UniFormFieldOption | undefined {\n    return groups\n      .map((group: UniFormFieldGroup) => this.findOptionBy(group.options, value, label))\n      .filter((item: UniFormFieldOption | undefined): boolean => isDefined(item))[0];\n  }\n\n  private findOptionBy(options: UniFormFieldOption[], value?: string, label?: string): UniFormFieldOption | undefined {\n    return options.find((item: UniFormFieldOption): boolean =>\n      value ? value === (item.value as string)?.toLowerCase() : label ? label === (item.label as string)?.toLowerCase() : false\n    );\n  }\n\n  // patchGroups(groups: UniFormFieldGroup[], values: string[]): UniFormFieldGroup[] {\n  //   return groups\n  //     .map((group: UniFormFieldGroup) => ({ ...group, options: this.filterValues(group.options, values) }))\n  //     .filter((group: UniFormFieldGroup): boolean => group.options.length > 0);\n  // }\n\n  // filterValues(items: UniFormFieldOption[], values: string[]): UniFormFieldOption[] {\n  //   return items.filter((item: UniFormFieldOption): boolean => {\n  //     return !values.some((value: string): boolean => value.toLowerCase() === item.label.toLowerCase());\n  //   });\n  // };\n\n  // filter groups and options if option label does not include specified value and hide empty groups\n  filterGroups(groups: UniFormFieldGroup[] = [], value: string): UniFormFieldGroup[] {\n    return value\n      ? groups\n          .map((group: UniFormFieldGroup) => ({\n            name: group.name,\n            options: this.filterValue(group.options, value),\n          }))\n          .filter((group: UniFormFieldGroup): boolean => group.options.length > 0)\n      : groups;\n  }\n\n  filterValue(items: UniFormFieldOption[] = [], value: string): UniFormFieldOption[] {\n    return items.filter((item: UniFormFieldOption): boolean => item.label?.toLowerCase().includes(value.toLowerCase()) || false);\n  }\n}\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatError, MatFormField, MatHint, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, MatOptgroup, MatOption } from '@angular/material/autocomplete';\nimport { MatChipInputEvent, MatChipGrid, MatChipRow, MatChipInput, MatChipRemove } from '@angular/material/chips';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatIcon } from '@angular/material/icon';\nimport { map, Observable, of, startWith } from 'rxjs';\n\nimport { UniFormField } from '../../../../models/interfaces/form-field.model';\nimport { UniFormFieldGroup } from '../../../../models/interfaces/form-field-group.model';\nimport { UniFormFieldOption } from '../../../../models/interfaces/form-field-option.model';\nimport { isArray } from '../../../../utils/is';\nimport { UniFormFieldErrorComponent } from '../../../form-field-error/form-field-error.component';\nimport { UniAutocompleteMatService } from './autocomplete-mat.service';\n\n@Component({\n  selector: 'uni-autocomplete-mat',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    MatFormField,\n    MatInput,\n    MatLabel,\n    MatAutocomplete,\n    MatChipGrid,\n    MatChipRow,\n    MatChipInput,\n    MatIcon,\n    MatChipRemove,\n    MatError,\n    MatHint,\n    MatOption,\n    MatOptgroup,\n    MatAutocompleteTrigger,\n    AsyncPipe,\n    UniFormFieldErrorComponent,\n    MatCheckbox,\n  ],\n  providers: [UniAutocompleteMatService],\n  templateUrl: './autocomplete-mat.component.html',\n  styles: ['.active {background: #DDD;}'],\n})\nexport class UniAutocompleteMatComponent implements OnInit {\n  @Input()\n  field: UniFormField = { key: '', type: 'autocomplete' };\n\n  @Input()\n  formGroup: FormGroup;\n\n  @ViewChild('autoInput')\n  autoInput?: ElementRef<HTMLInputElement>;\n\n  readonly separatorKeysCodes = [ENTER, COMMA] as const;\n  chips: string[] = [];\n  values: string[] = [];\n  autoCtrl = new FormControl({ value: '', disabled: true });\n  groups$: Observable<UniFormFieldGroup[]> = of([]);\n  options$: Observable<UniFormFieldOption[]> = of([]);\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private autoService: UniAutocompleteMatService\n  ) {\n    this.formGroup = this.formBuilder.group({});\n  }\n\n  ngOnInit(): void {\n    if (this.field.multi) {\n      const disabled: boolean = this.field.disabled || false;\n      const validators = this.field.required ? { validators: Validators.required } : {};\n      this.autoCtrl = new FormControl({ value: '', disabled }, validators);\n    }\n\n    const formField = this.field.multi ? this.autoCtrl : this.formGroup.get(this.field.key);\n\n    if (this.field.groups) {\n      this.groups$ = formField!.valueChanges.pipe(\n        startWith(''),\n        map((value: string) => this.autoService.filterGroups(this.field.groups, value))\n      );\n    } else if (this.field.options) {\n      this.options$ = formField!.valueChanges.pipe(\n        startWith(''),\n        map((value: string) => this.autoService.filterValue(this.field.options, value))\n      );\n    }\n\n    if (this.field.multi) {\n      if (this.field.value) {\n        this.chips = [...(isArray(this.field.value) ? (this.field.value as string[]) : [this.field.value as string])].map(\n          value => this.autoService.getOptionBy(this.field.groups, this.field.options, value)?.label\n        ) as string[];\n        this.values = isArray(this.field.value) ? [...(this.field.value as string[])] : [this.field.value as string];\n      } else if (this.formGroup.get(this.field.key)?.value) {\n        this.chips = [...this.formGroup.get(this.field.key)?.value].map(\n          value => this.autoService.getOptionBy(this.field.groups, this.field.options, value)?.label\n        ) as string[];\n        this.values = [...this.formGroup.get(this.field.key)?.value];\n      }\n    } else {\n      const { label, value } = this.autoService.getOptionBy(this.field.groups, this.field.options, this.field.value as string) || {};\n\n      if (label && value) {\n        this.formGroup.patchValue({ [this.field.key]: value || '' }, { emitEvent: false });\n      } else if (this.field.value === '') {\n        this.formGroup.patchValue({ [this.field.key]: '' }, { emitEvent: false });\n      }\n    }\n  }\n\n  isSelected(value: string | number = ''): boolean {\n    return this.values.includes(value + '');\n  }\n\n  add(event: MatChipInputEvent): void {\n    const { label, value } = this.autoService.getOptionBy(this.field.groups, this.field.options, '', event.value) || {};\n\n    if (label && value && !this.chips.includes(label)) {\n      this.chips.push(label);\n      this.values.push(value as string);\n      this.formGroup.patchValue({ [this.field.key]: this.values });\n    }\n\n    // Clear the input value\n    event.chipInput!.clear();\n    this.autoCtrl.setValue('');\n  }\n\n  selected(event: MatAutocompleteSelectedEvent): void {\n    if (this.field.multi && this.autoInput) {\n      const { label, value } = this.autoService.getOptionBy(this.field.groups, this.field.options, event.option.value) || {};\n\n      if (label && value && !this.chips.includes(label)) {\n        this.chips.push(label);\n        this.values.push(value as string);\n        this.formGroup.patchValue({ [this.field.key]: this.values });\n      }\n\n      this.autoInput.nativeElement.value = '';\n      this.autoCtrl.setValue('');\n    }\n  }\n\n  remove(value: string): void {\n    const index: number = this.chips.findIndex((chip: string): boolean => chip === value);\n\n    if (index >= 0) {\n      this.chips.splice(index, 1);\n      this.values.splice(index, 1);\n      this.formGroup.patchValue({ [this.field.key]: this.values });\n    }\n\n    this.autoCtrl.setValue('');\n  }\n\n  onBlur(event: any): void {\n    event.preventDefault();\n    const { label, value } = this.autoService.getOptionBy(this.field.groups, this.field.options, event.target.value as string) || {};\n\n    if (label && value) {\n      this.formGroup.patchValue({ [this.field.key]: value || '' }, { emitEvent: false });\n    } else if (event.target.value === '') {\n      this.formGroup.patchValue({ [this.field.key]: '' }, { emitEvent: false });\n    }\n  }\n}\n","<mat-form-field [formGroup]='formGroup' class='w-100 pt-1'>\r\n  <mat-label>{{ field.label }}</mat-label>\r\n\r\n  @if (field.multi) {\r\n    <mat-chip-grid #chipGrid>\r\n      @for (chip of chips; track chip) {\r\n        <mat-chip-row (removed)='remove(chip)'>\r\n          {{ chip }}\r\n\r\n          <button matChipRemove [attr.aria-label]=\"'remove ' + chip\">\r\n            <mat-icon>cancel</mat-icon>\r\n          </button>\r\n        </mat-chip-row>\r\n      }\r\n    </mat-chip-grid>\r\n\r\n    <input\r\n      #autoInput\r\n      matInput\r\n      [type]=\"'text'\"\r\n      [formControl]='autoCtrl'\r\n      [matChipInputFor]='chipGrid'\r\n      [placeholder]='field.placeholder || \"\"'\r\n      [matChipInputSeparatorKeyCodes]='separatorKeysCodes'\r\n      [matChipInputAddOnBlur]='false'\r\n      (matChipInputTokenEnd)='add($event)'\r\n      [matAutocomplete]='autoComplete'\r\n    >\r\n    <!--<input [formControlName]='field.key' [style]='{display: \"none\"}'>-->\r\n  } @else {\r\n    <input\r\n      matInput\r\n      [type]=\"'text'\"\r\n      [formControlName]='field.key'\r\n      [placeholder]='field.placeholder || \"\"'\r\n      [matAutocomplete]='autoComplete'\r\n      (blur)='onBlur($event)'\r\n      (keydown.enter)='onBlur($event)'\r\n    >\r\n  }\r\n\r\n  <mat-autocomplete #autoComplete='matAutocomplete' (optionSelected)='selected($event)'>\r\n    @for (group of (groups$ | async); track group.name) {\r\n      <mat-optgroup [label]='group.name' [disabled]='group.disabled'>\r\n        @for (option of group.options; track option.value) {\r\n          <mat-option [value]='option.value' [disabled]='option.disabled || isSelected(option.value)'\r\n                      [class.active]='isSelected(option.value)'>\r\n            {{ option.label }}\r\n          </mat-option>\r\n        }\r\n      </mat-optgroup>\r\n    }\r\n\r\n    @for (option of (options$ | async); track option.value) {\r\n      <mat-option [value]='option.value' [disabled]='option.disabled || isSelected(option.value)'>\r\n        {{ option.label }}\r\n      </mat-option>\r\n    }\r\n  </mat-autocomplete>\r\n\r\n  @if (field.hint) {\r\n    <mat-hint align='start'>{{ field.hint }}</mat-hint>\r\n  }\r\n\r\n  <mat-error [style]='{display: \"flex\"}'>\r\n    <uni-form-field-error-ng\r\n      [fieldErrors]='field.errors ?? {}'\r\n      [errors]='formGroup.controls[field.key].errors'\r\n    ></uni-form-field-error-ng>\r\n  </mat-error>\r\n</mat-form-field>\r\n","import { Component, Input } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatError, MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';\n\nimport { UniFormField } from '../../../../models/interfaces/form-field.model';\nimport { UniFormFieldErrorComponent } from '../../../form-field-error/form-field-error.component';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, provideNativeDateAdapter } from '@angular/material/core';\nimport {\n  MAT_MOMENT_DATE_ADAPTER_OPTIONS,\n  MAT_MOMENT_DATE_FORMATS,\n  MatMomentDateModule,\n  MomentDateAdapter,\n} from '@angular/material-moment-adapter';\n\n@Component({\n  selector: 'uni-datepicker-mat',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    MatMomentDateModule,\n    MatFormField,\n    MatInputModule,\n    MatLabel,\n    MatError,\n    MatDatepicker,\n    MatDatepickerToggle,\n    MatDatepickerInput,\n    UniFormFieldErrorComponent,\n  ],\n  providers: [\n    provideNativeDateAdapter(),\n    { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },\n    { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { strict: true } },\n    { provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS },\n  ],\n  templateUrl: './datepicker-mat.component.html',\n})\nexport class UniDatepickerMatComponent {\n  @Input()\n  field: UniFormField = { key: '', type: 'datepicker' };\n\n  @Input()\n  formGroup: FormGroup;\n\n  constructor(private formBuilder: FormBuilder) {\n    this.formGroup = this.formBuilder.group({});\n  }\n}\n","<mat-form-field [formGroup]='formGroup' class='pt-1'>\r\n  <mat-label>{{ field.label }}</mat-label>\r\n\r\n  <input\r\n    matInput\r\n    [matDatepicker]='picker'\r\n    [formControlName]='field.key'\r\n    [placeholder]='field.placeholder || \"\"'\r\n    [min]='field.minDate'\r\n    [max]='field.maxDate'\r\n  >\r\n\r\n  <mat-datepicker-toggle matIconSuffix [for]='picker'></mat-datepicker-toggle>\r\n  <mat-datepicker #picker></mat-datepicker>\r\n\r\n  <mat-error class='d-flex'>\r\n    <uni-form-field-error-ng\r\n      [fieldErrors]='field.errors ?? {}'\r\n      [errors]='formGroup.controls[field.key].errors'\r\n    ></uni-form-field-error-ng>\r\n  </mat-error>\r\n</mat-form-field>\r\n","import { Component, Input } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatDatepickerModule, } from '@angular/material/datepicker';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport {\n  MAT_MOMENT_DATE_ADAPTER_OPTIONS,\n  MAT_MOMENT_DATE_FORMATS,\n  MatMomentDateModule,\n  MomentDateAdapter,\n} from '@angular/material-moment-adapter';\n\nimport { UniFormField } from '../../../../models/interfaces/form-field.model';\nimport { UniFormFieldErrorComponent } from '../../../form-field-error/form-field-error.component';\n\n@Component({\n  selector: 'uni-datepicker-range-mat',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    MatMomentDateModule,\n    MatFormFieldModule,\n    MatDatepickerModule,\n    UniFormFieldErrorComponent,\n  ],\n  providers: [\n    { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },\n    { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { strict: true } },\n    { provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS },\n  ],\n  templateUrl: './datepicker-range-mat.component.html',\n})\nexport class UniDatepickerRangeMatComponent {\n  @Input()\n  field: UniFormField = { key: '', type: 'datepicker' };\n\n  @Input()\n  formGroup: FormGroup;\n\n  constructor(private formBuilder: FormBuilder) {\n    this.formGroup = this.formBuilder.group({});\n  }\n}\n","<mat-form-field [formGroup]='formGroup' class='pt-1'>\r\n  <mat-label>{{ field.label }}</mat-label>\r\n\r\n  <mat-date-range-input [rangePicker]='picker' [min]='field.minDate' [max]='field.maxDate'>\r\n    <input matStartDate [formControlName]='field.key' [placeholder]='field.placeholder || \"Start date\"'>\r\n    <input matEndDate [formControlName]='field.keyEnd || \"keyEnd\"' [placeholder]='field.placeholderEnd || \"End date\"'>\r\n  </mat-date-range-input>\r\n\r\n  <mat-datepicker-toggle matIconSuffix [for]='picker'></mat-datepicker-toggle>\r\n  <mat-date-range-picker #picker></mat-date-range-picker>\r\n\r\n  <mat-error class='d-flex'>\r\n    <uni-form-field-error-ng\r\n      [fieldErrors]='field.errors ?? {}'\r\n      [errors]='formGroup.controls[field.key].errors'\r\n    ></uni-form-field-error-ng>\r\n  </mat-error>\r\n</mat-form-field>\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatRadioButton, MatRadioGroup } from '@angular/material/radio';\n\nimport { UniFormField } from '../../../models/interfaces/form-field.model';\nimport { UniFormFieldType } from '../../../models/types/form-field.type';\nimport { UniSliderMatComponent } from './slider/slider-mat.component';\nimport { UniTextMatComponent } from './text/text.component';\nimport { UniSelectMatComponent } from './select/select.component';\nimport { UniAutocompleteMatComponent } from './autocomplete/autocomplete-mat.component';\nimport { UniDatepickerMatComponent } from './datepicker/datepicker-mat.component';\nimport { UniDatepickerRangeMatComponent } from './datepicker-range/datepicker-range-mat.component';\n\n@Component({\n  selector: 'uni-form-fields-mat',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    MatSlideToggle,\n    MatCheckbox,\n    MatRadioButton,\n    MatRadioGroup,\n    UniSliderMatComponent,\n    UniTextMatComponent,\n    UniSelectMatComponent,\n    UniAutocompleteMatComponent,\n    UniDatepickerMatComponent,\n    UniDatepickerRangeMatComponent,\n  ],\n  templateUrl: 'form-fields-mat.component.html',\n  styleUrls: ['form-fields-mat.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class UniFormFieldsMatComponent {\n  @Input()\n  field: UniFormField = { key: '', type: 'text' };\n\n  @Input()\n  formGroup: FormGroup;\n\n  @Input()\n  hasPrefix: boolean = false;\n\n  @Input()\n  hasSuffix: boolean = false;\n\n  constructor(private formBuilder: FormBuilder) {\n    this.formGroup = this.formBuilder.group({});\n  }\n\n  isInput(fieldType: UniFormFieldType): boolean {\n    return ['text', 'email', 'password'].includes(fieldType);\n  }\n}\n","@switch (field.type) {\r\n  @case ('checkbox') {\r\n    <div [formGroup]='formGroup'>\r\n      <mat-checkbox [formControlName]='field.key'>{{ field.label }}</mat-checkbox>\r\n    </div>\r\n  }\r\n  @case ('radio') {\r\n    <div [formGroup]='formGroup' [class]='field.inline ? \"uni-radio-field-inline\" : \"uni-radio-field\"'>\r\n      @if (field.label) {\r\n        <label class='uni-radio-field-label'>{{ field.label }}</label>\r\n      }\r\n\r\n      <mat-radio-group [formControlName]='field.key' [required]='field.required || false'>\r\n        @for (option of field.options; track option.value) {\r\n          <mat-radio-button [value]='option.value' [disabled]='option.disabled'>\r\n            <span class='uni-pointer'>{{ option.label }}</span>\r\n          </mat-radio-button>\r\n        }\r\n      </mat-radio-group>\r\n    </div>\r\n  }\r\n  @case ('select') {\r\n    <uni-select-mat [field]='field' [formGroup]='formGroup'></uni-select-mat>\r\n  }\r\n  @case ('autocomplete') {\r\n    <uni-autocomplete-mat [field]='field' [formGroup]='formGroup' />\r\n  }\r\n  @case ('slider') {\r\n    <uni-slider-mat [field]='field' [formGroup]='formGroup'></uni-slider-mat>\r\n  }\r\n  @case ('switch') {\r\n    <div [formGroup]='formGroup'>\r\n      <mat-slide-toggle [formControlName]='field.key' class='py-3'>\r\n        <span class='uni-pointer'>{{ field.label }}</span>\r\n      </mat-slide-toggle>\r\n    </div>\r\n  }\r\n  @case ('datepicker') {\r\n    @if (field.keyEnd) {\r\n      <uni-datepicker-range-mat [field]='field' [formGroup]='formGroup' class='d-flex'></uni-datepicker-range-mat>\r\n    } @else {\r\n      <uni-datepicker-mat [field]='field' [formGroup]='formGroup' class='d-flex'></uni-datepicker-mat>\r\n    }\r\n  }\r\n  @default {\r\n    @if (isInput(field.type) || field.type === \"number\" || field.type === \"textarea\") {\r\n      <uni-text-mat\r\n        [field]='field'\r\n        [formGroup]='formGroup'\r\n        [hasPrefix]='hasPrefix'\r\n        [hasSuffix]='hasSuffix'\r\n      >\r\n        <ng-content select='[prefix]' ngProjectAs='[prefix]'></ng-content>\r\n        <ng-content select='[suffix]' ngProjectAs='[suffix]'></ng-content>\r\n      </uni-text-mat>\r\n    }\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { UniFormField } from '../../models/interfaces/form-field.model';\r\nimport { isDefined } from '../../utils/is';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class UniFormService {\r\n\r\n  private uniFormGroupSource = new Subject<FormGroup>();\r\n  private uniFormDataAddSource = new Subject<{ formData: UniFormField[]; mode: 'add' | 'set' }>();\r\n  private uniFormDataRemoveSource = new Subject<UniFormField[]>();\r\n\r\n  uniFormGroupUpdated$ = this.uniFormGroupSource.asObservable();\r\n  uniFormDataAdded$ = this.uniFormDataAddSource.asObservable();\r\n  uniFormDataRemoved$ = this.uniFormDataRemoveSource.asObservable();\r\n\r\n  updateUniFormGroup(group: FormGroup): void {\r\n    this.uniFormGroupSource.next(group);\r\n  }\r\n\r\n  addUniFormData(formData: UniFormField[], mode: 'add' | 'set'): void {\r\n    this.uniFormDataAddSource.next({ formData, mode });\r\n  }\r\n\r\n  removeUniFormData(data: UniFormField[]): void {\r\n    this.uniFormDataRemoveSource.next(data);\r\n  }\r\n\r\n  removeControls(formGroup: FormGroup, fields: UniFormField[]): void {\r\n    fields.forEach((field: UniFormField) => {\r\n      formGroup.removeControl(field.key);\r\n    });\r\n  }\r\n\r\n  addControls(formGroup: FormGroup, fields: UniFormField[], mode: 'add' | 'set'): FormGroup {\r\n    fields.forEach((field: UniFormField) => {\r\n      const disabled = field.disabled || false;\r\n      const value = isDefined(field.value)\r\n        ? field.value\r\n        : field.type === 'switch' || field.type === 'checkbox'\r\n          ? false\r\n          : field.multi\r\n            ? []\r\n            : '';\r\n\r\n      const methodName = mode === 'set'? 'setControl' : 'addControl';\r\n\r\n      if (field.keyEnd) {\r\n        formGroup[methodName](field.keyEnd, new FormControl(field.valueEnd || field.dateEnd));\r\n      }\r\n\r\n      formGroup[methodName](field.key, new FormControl({ value, disabled }, [\r\n        ...(field.required ? [Validators.required] : []),\r\n        ...(field.requiredTrue ? [Validators.requiredTrue] : []),\r\n        ...(field.min ? [Validators.min(field.min)] : []),\r\n        ...(field.max ? [Validators.max(field.max)] : []),\r\n        ...(field.minLength ? [Validators.minLength(field.minLength)] : []),\r\n        ...(field.maxLength ? [Validators.maxLength(field.maxLength)] : []),\r\n        ...(field.pattern ? [Validators.pattern(field.pattern)] : []),\r\n      ]));\r\n    });\r\n\r\n    return formGroup;\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { takeUntil } from 'rxjs';\n\nimport { UniFormField } from '../../models/interfaces/form-field.model';\nimport { RxUnsubscribe } from '../../utils/rx-unsubscribe';\nimport { UniFormFieldsMatComponent } from '../form-fields/mat/form-fields-mat.component';\nimport { UniFormService } from './form.service';\n\n@Component({\n  selector: 'uni-form-ng',\n  standalone: true,\n  imports: [ReactiveFormsModule, UniFormFieldsMatComponent],\n  providers: [UniFormService],\n  templateUrl: 'form.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class UniFormComponent extends RxUnsubscribe implements OnInit {\n  @Input()\n  clean: boolean | undefined;\n\n  @Output()\n  formGroupEvent = new EventEmitter<FormGroup>();\n\n  @Output()\n  submitEvent = new EventEmitter<FormGroup>();\n\n  formGroup: FormGroup;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private formService: UniFormService,\n  ) {\n    super();\n    this.formGroup = this.formBuilder.group({});\n  }\n\n  ngOnInit(): void {\n    this.formService.uniFormDataAdded$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(data => this.onUniFormDataAddChange(data));\n\n    this.formService.uniFormDataRemoved$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(data => this.onUniFormDataRemoveChange(data));\n\n    this.formGroup.valueChanges\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(_ => this.uniFormGroupEvent(this.formGroup));\n  }\n\n  private onUniFormDataAddChange(data: { formData: UniFormField[]; mode: 'add' | 'set' }): void {\n    this.formGroup = this.formService.addControls(this.formGroup, [...data.formData], data.mode);\n    this.uniFormGroupEvent(this.formGroup);\n  }\n\n  private onUniFormDataRemoveChange(formData: UniFormField[]): void {\n    if (this.clean) {\n      this.formService.removeControls(this.formGroup, [...formData]);\n    }\n\n    this.uniFormGroupEvent(this.formGroup);\n  }\n\n  private uniFormGroupEvent(formGroup: FormGroup): void {\n    this.formService.updateUniFormGroup(formGroup);\n    this.formGroupEvent.emit(this.formGroup);\n    // const formFields = this.elRef.nativeElement.querySelectorAll('uni-form-field-ng');\n\n    // formFields.forEach((group: HTMLElement): void => {\n    //   group.dispatchEvent(new CustomEvent('uniFormGroup', { detail: formGroup }));\n    // });\n  }\n}\n","<form [formGroup]='formGroup' (ngSubmit)='submitEvent.emit(formGroup)'>\r\n  <ng-content></ng-content>\r\n</form>\r\n","import { Injectable } from '@angular/core';\n\nimport { UniFormField } from '../../models/interfaces/form-field.model';\nimport { UniFormFieldOption } from '../../models/interfaces/form-field-option.model';\nimport { UniFormFieldGroup } from '../../models/interfaces/form-field-group.model';\nimport { isArray } from '../../utils/is';\n\n@Injectable({ providedIn: 'root' })\nexport class UniFormFieldService {\n\n  // dispatchAdd(el: HTMLElement, formData: UniFormField[], mode: 'add' | 'set'): void {\n  //   el.dispatchEvent(new CustomEvent('uniFormDataAdd', {\n  //     bubbles: true,\n  //     detail: { formData, mode },\n  //   }));\n  // }\n\n  // dispatchRemove(el: HTMLElement, formData: UniFormField[]): void {\n  //   el.dispatchEvent(new CustomEvent('uniFormDataRemove', {\n  //     bubbles: true,\n  //     detail: { formData },\n  //   }));\n  // }\n\n  enrichField(field: UniFormField, options: Partial<UniFormField> | undefined): UniFormField {\n    if (options) {\n      if (options.options) {\n        if (field.options) {\n          field.options = this.mapOptions(field.options, options.options);\n        } else if (field.groups) {\n          field.groups = field.groups.map((group: UniFormFieldGroup): UniFormFieldGroup => {\n            group.options = this.mapOptions(group.options, options.options!);\n            return group;\n          });\n        }\n\n        delete options.options;\n      }\n\n      field = {\n        ...field,\n        ...options,\n      };\n    }\n\n    return field;\n  }\n\n  private mapOptions(fieldOptions: UniFormFieldOption[], options: UniFormFieldOption[]): UniFormFieldOption[] {\n    return fieldOptions.map((option: UniFormFieldOption) => {\n      const index: number = options.findIndex((opt: UniFormFieldOption): boolean => option.value === opt.value);\n\n      if (index >= 0) {\n        option = { ...option, ...options[index] };\n      }\n\n      return option;\n    });\n  }\n\n  groupsToOptions(field: UniFormField): UniFormFieldOption[] {\n    let options: UniFormFieldOption[] = [];\n\n    if (field.groups) {\n      field.groups.forEach((group: UniFormFieldGroup) => {\n        options = [...options, ...group.options];\n      });\n    } else {\n      options = field.options || [];\n    }\n\n    return options;\n  }\n\n  getSelectedOptions(options: UniFormFieldOption[], value: string | number | string[] | number[]) {\n    return (\n      options?.filter((option: UniFormFieldOption) =>\n        !isArray(value) ? value === option.value : option.value && (value as any[]).includes(option.value)\n      ) || []\n    );\n  }\n\n  hasSelectedOptionsFields(selectedOptions: UniFormFieldOption[]): boolean {\n    return selectedOptions.some((option: UniFormFieldOption) => option.fields);\n  }\n}\n","import {\n  Component,\n  effect,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  signal,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { takeUntil } from 'rxjs';\n\nimport { UniFormField } from '../../models/interfaces/form-field.model';\nimport { UniFormFieldOption } from '../../models/interfaces/form-field-option.model';\nimport { UniFormNested } from '../../models/interfaces/nested.model';\nimport { UniObject } from '../../models/interfaces/object.model';\nimport { isDefined, isObject } from '../../utils/is';\nimport { RxUnsubscribe } from '../../utils/rx-unsubscribe';\nimport { UniFormFieldsMatComponent } from '../form-fields/mat/form-fields-mat.component';\nimport { UniFormService } from '../form/form.service';\nimport { UniFormFieldService } from './form-field.service';\n\n@Component({\n  selector: 'uni-form-field-ng',\n  standalone: true,\n  imports: [ReactiveFormsModule, UniFormFieldsMatComponent],\n  templateUrl: 'form-field.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class UniFormFieldComponent extends RxUnsubscribe implements OnInit, OnChanges, OnDestroy {\n  @Input()\n  url: string | undefined;\n\n  @Input()\n  options: Partial<UniFormField> | undefined;\n\n  @Input()\n  inline: boolean = false;\n\n  @Input()\n  hasPrefix: boolean = false;\n\n  @Input()\n  hasSuffix: boolean = false;\n\n  @Input()\n  nested: UniObject<UniFormNested> = {};\n\n  // @HostListener('uniFormGroup') onUniFormGroup() {\n  //   this.formGroup = (event as CustomEvent).detail;\n  // }\n\n  formGroup: FormGroup;\n  fields: UniFormField[] = [];\n\n  showFields: UniFormField[] = [];\n  onFields: string[] = [];\n  subsFields: string[] = [];\n\n  showFieldsSignal = signal<any[]>([]);\n\n  constructor(\n    private http: HttpClient,\n    private formBuilder: FormBuilder,\n    private formService: UniFormService,\n    private formFieldService: UniFormFieldService\n  ) {\n    super();\n    this.formGroup = this.formBuilder.group({});\n    effect(() => this.onSignal());\n  }\n\n  ngOnInit(): void {\n    this.formService.uniFormGroupUpdated$.pipe(takeUntil(this.destroy$)).subscribe(value => (this.formGroup = value));\n\n    if (this.url) {\n      this.http.get(this.url).subscribe((field: any) => {\n        // @TODO make with builder pattern\n        field = this.formFieldService.enrichField(field, this.options);\n        field = this.formFieldService.enrichField(field, this.nested[field.key]);\n        this.fields = [field];\n        this.formService.addUniFormData(this.fields, 'add');\n\n        if (field.fields) {\n          if (isDefined(field.value)) {\n            this.loadNestedFields(field.fields);\n          }\n\n          this.formGroup.controls[field.key]?.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value: boolean): void => {\n            if (value) {\n              this.loadNestedFields(field.fields);\n            } else {\n              this.formService.removeUniFormData([...this.fields].slice(1));\n              this.fields = [field];\n            }\n          });\n        }\n\n        if (field.options || field.groups) {\n          const hasOptionsFields = field.options?.some((option: UniFormFieldOption) => option.fields);\n          const hasGroupsOptionsFields = field.groups?.some((group: any) => group.options?.some((option: UniFormFieldOption) => option.fields));\n\n          if (hasOptionsFields || hasGroupsOptionsFields) {\n            if (isDefined(field.value)) {\n              this.setSelectedOption(field, field.value);\n            }\n\n            this.formGroup.controls[field.key]?.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value: string) => {\n              this.setSelectedOption(field, value);\n            });\n          }\n        }\n      });\n    } else if (this.options?.type && this.options.key) {\n      this.fields = [this.options as UniFormField];\n      this.formService.addUniFormData(this.fields, 'add');\n    }\n  }\n\n  private onSignal(): void {\n    this.showFields = this.showFieldsSignal();\n    this.onFields = this.showFields\n      .map(field => field.showOn!.key)\n      .reduce((acc: string[], curr: string): string[] => (acc.includes(curr) ? acc : [...acc, curr]), []);\n\n    if (this.onFields.length > 0 && !this.subsFields.includes(this.onFields[this.onFields.length - 1])) {\n      const latestOnField: string = this.onFields[this.onFields.length - 1];\n      this.subsFields.push(latestOnField);\n\n      this.formGroup.controls[latestOnField]?.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\n        this.showFields\n          .map(field => this.formFieldService.enrichField(field, this.nested[field.key]))\n          .forEach((field: UniFormField) => {\n            if (field.showOn!.key === latestOnField) {\n              if (field.showOn!.value === value) {\n                this.fields.push(field);\n                this.formService.addUniFormData(this.fields, 'add');\n              } else {\n                this.fields = this.fields.filter((item: UniFormField) => field.showOn!.key !== item.showOn?.key || value === item.showOn?.value);\n                this.formService.removeUniFormData(this.fields);\n              }\n            }\n          });\n      });\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['options'] && !changes['options'].firstChange) {\n      this.fields[0] = {\n        ...this.fields[0],\n        ...changes['options'].currentValue,\n      };\n\n      this.formService.addUniFormData(this.fields, 'set');\n    }\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n\n    this.formService.removeUniFormData(this.fields);\n  }\n\n  getWidth(): string {\n    return `calc(100%/${this.fields.length})`;\n  }\n\n  private loadNestedFields(urls: string[], fieldIndex: number = 0): void {\n    urls.forEach((url: string, urlIndex: number): void => {\n      this.http.get(url).subscribe((field: any): void => {\n        // Is required for multi selection\n        if (fieldIndex) {\n          urlIndex = fieldIndex;\n        }\n\n        if (field.showOn) {\n          const formField = this.formGroup.controls[field.showOn.key];\n\n          if (field.showOn.value === formField.value) {\n            this.addForField(field, urlIndex);\n          }\n\n          if (this.showFieldsSignal().every(value => value.key !== field.key)) {\n            this.showFieldsSignal.update((values: UniFormField[]): UniFormField[] => [...values, field]);\n          }\n        } else {\n          this.addForField(field, urlIndex);\n        }\n      });\n    });\n  }\n\n  private addForField(field: any, urlIndex: number = 0) {\n    this.fields[urlIndex + 1] = this.formFieldService.enrichField(field, this.nested[field.key]);\n    // hotfix\n    this.fields = this.fields.filter(field => isObject(field));\n    this.formService.addUniFormData(this.fields, 'add');\n  }\n\n  private setSelectedOption(field: UniFormField, value: string | number | string[] | number[]): void {\n    const options = this.formFieldService.groupsToOptions(field);\n    const selectedOptions = this.formFieldService.getSelectedOptions(options, value);\n\n    // @TODO Remove only unselected option\n    this.formService.removeUniFormData([...this.fields].slice(1));\n\n    this.fields = [field];\n\n    if (selectedOptions.length > 0 && this.formFieldService.hasSelectedOptionsFields(selectedOptions)) {\n      selectedOptions.forEach((option: UniFormFieldOption, index: number) => {\n        this.loadNestedFields(option.fields || [], index);\n      });\n    } else {\n      // @TODO Remove all options\n      // this.formFieldService.dispatchRemove(this.elRef.nativeElement, this.fields);\n    }\n  }\n}\n","@for (field of fields; track field.key) {\r\n  <uni-form-fields-mat [field]='field' [formGroup]='formGroup' [hasPrefix]='hasPrefix' [hasSuffix]='hasSuffix'\r\n                       [style]='inline ? {display: \"inline-block\", width: getWidth()} : {}'>\r\n    <ng-content select='[prefix]' ngProjectAs='[prefix]'></ng-content>\r\n    <ng-content select='[suffix]' ngProjectAs='[suffix]'></ng-content>\r\n  </uni-form-fields-mat>\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { UniObject } from '../../models/interfaces/object.model';\r\nimport { UniFormNested } from '../../models/interfaces/nested.model';\r\nimport { UniFormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n  selector: 'uni-form-group-ng',\r\n  standalone: true,\r\n  imports: [UniFormFieldComponent],\r\n  templateUrl: 'form-group.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UniFormGroupComponent implements OnInit {\r\n\r\n  @Input()\r\n  url: string = '';\r\n\r\n  @Input()\r\n  nested: UniObject<UniFormNested> = {};\r\n\r\n  urls: string[] = [];\r\n\r\n  constructor(private http: HttpClient) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.http.get(this.url).subscribe((urls: any) => this.urls = urls);\r\n  }\r\n}\r\n","@for (url of urls; track url) {\r\n  <uni-form-field-ng [url]=\"url\" [nested]=\"nested\" />\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatError, MatFormField, MatHint, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\nimport { UniFormField } from '../../../../models/interfaces/form-field.model';\nimport { isDefined } from '../../../../utils/is';\nimport { UniFormFieldErrorComponent } from '../../../form-field-error/form-field-error.component';\n\n@Component({\n  selector: 'uni-number-mat',\n  standalone: true,\n  imports: [ReactiveFormsModule, MatFormField, MatInput, MatLabel, MatError, MatHint, UniFormFieldErrorComponent],\n  templateUrl: 'number.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class UniNumberMatComponent {\n  @Input()\n  field: UniFormField = { key: '', type: 'text' };\n\n  @Input()\n  formGroup: FormGroup;\n\n  @Input()\n  hasPrefix: boolean = false;\n\n  @Input()\n  hasSuffix: boolean = false;\n\n  isDefined = isDefined;\n\n  constructor(private formBuilder: FormBuilder) {\n    this.formGroup = this.formBuilder.group({});\n  }\n}\n","<mat-form-field [formGroup]='formGroup' class='w-100 pt-1'>\r\n  <mat-label>{{ field.label }}</mat-label>\r\n\r\n  @if (hasPrefix) {\r\n    <div matPrefix>\r\n      <ng-content select='[prefix]'></ng-content>\r\n    </div>\r\n  }\r\n\r\n  <input\r\n    matInput\r\n    [type]='field.type'\r\n    [formControlName]='field.key'\r\n    [placeholder]='field.placeholder || \"\"'\r\n    [min]='field.min'\r\n    [max]='field.max'\r\n    [step]='field.step'\r\n  >\r\n\r\n  @if (hasSuffix) {\r\n    <div matSuffix>\r\n      <ng-content select='[suffix]'></ng-content>\r\n    </div>\r\n  }\r\n\r\n  @if (field.hint) {\r\n    <mat-hint align='start'>{{ field.hint }}</mat-hint>\r\n  }\r\n\r\n  @if ((isDefined(field.min) || isDefined(field.max)) && !field.hint) {\r\n    <mat-hint align='start'>\r\n      @if (isDefined(field.min) && isDefined(field.max)) {\r\n        Min is: <strong>{{ field.min }}</strong>, max is: <strong>{{ field.max }}</strong>\r\n      } @else {\r\n        @if (isDefined(field.min)) {\r\n          Min is: <strong>{{ field.min }}</strong>\r\n        }\r\n\r\n        @if (isDefined(field.max)) {\r\n          Max is: <strong>{{ field.max }}</strong>\r\n        }\r\n      }\r\n    </mat-hint>\r\n  }\r\n\r\n  <mat-error [style]='{display: \"flex\"}'>\r\n    <uni-form-field-error-ng\r\n      [fieldErrors]='field.errors ?? {}'\r\n      [errors]='formGroup.controls[field.key].errors'\r\n    ></uni-form-field-error-ng>\r\n  </mat-error>\r\n</mat-form-field>\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatError, MatFormField, MatHint, MatLabel } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\n\r\nimport { UniFormField } from '../../../../models/interfaces/form-field.model';\r\nimport { UniFormFieldErrorComponent } from '../../../form-field-error/form-field-error.component';\r\n\r\n@Component({\r\n  selector: 'uni-textarea-mat',\r\n  standalone: true,\r\n  imports: [ReactiveFormsModule, MatFormField, MatInput, MatLabel, MatError, MatHint, UniFormFieldErrorComponent],\r\n  templateUrl: 'textarea.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UniTextareaMatComponent {\r\n\r\n  @Input()\r\n  field: UniFormField = { key: '', type: 'text' };\r\n\r\n  @Input()\r\n  formGroup: FormGroup;\r\n\r\n  constructor(private formBuilder: FormBuilder) {\r\n    this.formGroup = this.formBuilder.group({});\r\n  }\r\n}\r\n","<mat-form-field [formGroup]='formGroup' class='w-100 pt-1'>\r\n  <mat-label>{{ field.label }}</mat-label>\r\n\r\n  <textarea\r\n    matInput\r\n    [formControlName]='field.key'\r\n    [placeholder]='field.placeholder || \"\"'\r\n  ></textarea>\r\n\r\n  @if (field.hint) {\r\n    <mat-hint align='start'>{{ field.hint }}</mat-hint>\r\n  }\r\n\r\n  @if (field.minLength && !field.hint) {\r\n    <mat-hint align='start'>\r\n      @if (field.maxLength) {\r\n        Minimum characters count is: <strong>{{ field.minLength }}</strong>\r\n        and maximum is: <strong>{{ field.maxLength }}</strong>\r\n      } @else {\r\n        Minimum characters count is: <strong>{{ field.minLength }}</strong>\r\n      }\r\n    </mat-hint>\r\n  }\r\n\r\n  @if (field.maxLength) {\r\n    <mat-hint align='end'>\r\n      {{ formGroup.controls[field.key].value.length }} / {{ field.maxLength }}\r\n    </mat-hint>\r\n  }\r\n\r\n  <mat-error [style]='{display: \"flex\"}'>\r\n    <uni-form-field-error-ng\r\n      [fieldErrors]='field.errors ?? {}'\r\n      [errors]='formGroup.controls[field.key].errors'\r\n    ></uni-form-field-error-ng>\r\n  </mat-error>\r\n</mat-form-field>\r\n","/*\r\n * Public API Surface of uni-form-ng\r\n */\r\n\r\nexport * from './lib/models/types/form-field.type';\r\n\r\nexport * from './lib/models/interfaces/object.model';\r\nexport * from './lib/models/interfaces/errors.model';\r\nexport * from './lib/models/interfaces/form-field.model';\r\nexport * from './lib/models/interfaces/form-field-group.model';\r\nexport * from './lib/models/interfaces/form-field-option.model';\r\nexport * from './lib/models/interfaces/input-text.model';\r\nexport * from './lib/models/interfaces/input-number.model';\r\nexport * from './lib/models/interfaces/checkbox-field.model';\r\nexport * from './lib/models/interfaces/radio-field.model';\r\nexport * from './lib/models/interfaces/select-field.model';\r\n\r\nexport * from './lib/components/form/form.component';\r\nexport * from './lib/components/form-group/form-group.component';\r\nexport * from './lib/components/form-field/form-field.component';\r\nexport * from './lib/components/form-field-error/form-field-error.component';\r\nexport * from './lib/components/form-fields/mat/form-fields-mat.component';\r\nexport * from './lib/components/form-fields/mat/text/text.component';\r\nexport * from './lib/components/form-fields/mat/number/number.component';\r\nexport * from './lib/components/form-fields/mat/textarea/textarea.component';\r\nexport * from './lib/components/form-fields/mat/select/select.component';\r\nexport * from './lib/components/form-fields/mat/autocomplete/autocomplete-mat.component';\r\nexport * from './lib/components/form-fields/mat/datepicker/datepicker-mat.component';\r\nexport * from './lib/components/form-fields/mat/datepicker-range/datepicker-range-mat.component';\r\nexport * from './lib/components/form-fields/mat/slider/slider-mat.component';\r\n\r\nexport * from './lib/components/form/form.service';\r\nexport * from './lib/components/form-field/form-field.service';\r\nexport * from './lib/components/form-fields/mat/autocomplete/autocomplete-mat.service';\r\n\r\nexport * from './lib/utils/is';\r\nexport * from './lib/utils/rx-unsubscribe';\r\n\r\n// export * from './lib/form.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.UniAutocompleteMatService","MatOption","MatOptgroup","i3","i2","i2.UniFormService","i1","i3.UniFormService","i4.UniFormFieldService"],"mappings":"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"}