{"version":3,"file":"ngx-floyd-forms-formly.mjs","sources":["../../../../libs/forms-formly/src/lib/floydFieldType.ts","../../../../libs/forms-formly/src/lib/templates/short-string-template/short-string-template.component.ts","../../../../libs/forms-formly/src/lib/templates/date-template/date-template.component.ts","../../../../libs/forms-formly/src/lib/templates/bool-select-button-template/bool-select-button-template.component.ts","../../../../libs/forms-formly/src/lib/api.ts","../../../../libs/forms-formly/src/lib/templates/dropdown-template/dropdown-template.component.ts","../../../../libs/forms-formly/src/lib/templates/bool-switch-template/bool-switch-template.component.ts","../../../../libs/forms-formly/src/lib/templates/date-time-template/date-time-template.component.ts","../../../../libs/forms-formly/src/lib/templates/multiselect-dropdown-template/multiselect-dropdown-template.component.ts","../../../../libs/forms-formly/src/lib/templates/auto-complete-template/auto-complete-template.component.ts","../../../../libs/forms-formly/src/lib/templates/multiselect-auto-complete-template/multiselect-auto-complete-template.component.ts","../../../../libs/forms-formly/src/lib/templates/number-template/number-template.component.ts","../../../../libs/forms-formly/src/lib/templates/long-string-template/long-string-template.component.ts","../../../../libs/forms-formly/src/lib/wrappers/field-wrapper.component.ts","../../../../libs/forms-formly/src/lib/templates/file-upload-template/file-upload-template.component.ts","../../../../libs/forms-formly/src/lib/configuration/property-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/dropdown-property-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/date-property-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/number-property-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/string-property-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/file-upload-property-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/detail-form-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/dropdown-with-echo-fields-property-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/autocomplete-property-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/fieldgroup-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/extension-form-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/date-time-property-configuration.ts","../../../../libs/forms-formly/src/lib/configuration/floyd-formly-configuration.ts","../../../../libs/forms-formly/src/lib/templates/detail-form-template/detail-form-template.component.ts","../../../../libs/forms-formly/src/lib/templates/detail-form-template/detail-form-template.component.html","../../../../libs/forms-formly/src/lib/templates/dropdown-with-echo-fields/dropdown-with-echo-fields-template.component.ts","../../../../libs/forms-formly/src/lib/floyd-forms-formly.module.ts","../../../../libs/forms-formly/src/ngx-floyd-forms-formly.ts"],"sourcesContent":["import {FieldType} from '@ngx-formly/core';\r\nimport {FormControl} from '@angular/forms';\r\nimport {Directive, OnDestroy, OnInit} from '@angular/core';\r\n\r\n@Directive()\r\nexport abstract class FloydFieldType extends FieldType implements OnInit, OnDestroy {\r\n  get formControl(): FormControl {\r\n    return super.formControl as FormControl;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.props.componentRef = this;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    delete this.props.componentRef;\r\n  }\r\n}\r\n","import { Component, forwardRef, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { ShortStringComponent } from '@ngx-floyd/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'short-string-template',\r\n  template: `\r\n    <f-short-string ngDefaultControl [formControl]='formControl' [formlyAttributes]='field' [label]='props.label'\r\n                    [hidden]='props.hidden'\r\n                    [actions]='props.actions' [type]=\"props.type ?? 'text'\"\r\n                    [keyFilter]='props.keyFilter'\r\n                    [readOnly]='props.readonly ?? false'\r\n                    [maxLen]='props.maxLen'\r\n    ></f-short-string>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => ShortStringTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [ShortStringComponent, FormsModule, ReactiveFormsModule, FormlyModule]\r\n})\r\nexport class ShortStringTemplateComponent extends FloydFieldType {\r\n  @ViewChild(ShortStringComponent) innerComponent!: ShortStringComponent;\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, Inject, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { FLOYD_UI_CONFIG } from '@ngx-floyd/core-ui';\r\nimport { WeekDay } from '@angular/common';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { DateComponent } from '@ngx-floyd/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'date-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <f-date ngDefaultControl [formControl]='formControl' [formlyAttributes]='field' [label]='props.label'\r\n            [hidden]='props.hidden'\r\n            [readOnly]='props.readonly ?? false'\r\n            [actions]='props.actions'\r\n            [minDate]='props.minDate'\r\n            [maxDate]='props.maxDate'\r\n            [format]='props.format !== undefined ? props.format : defaultDateFormat'\r\n            [firstDayOfWeek]='props.firstDayOfWeek ?? monday'\r\n            [defaultDate]='props.defaultDate ?? defaultDate'\r\n    ></f-date>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DateTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [DateComponent, FormsModule, ReactiveFormsModule, FormlyModule]\r\n})\r\nexport class DateTemplateComponent extends FloydFieldType {\r\n  defaultDateFormat: string;\r\n  monday: WeekDay = WeekDay.Monday;\r\n  defaultDate: Date = new Date();\r\n  @ViewChild(DateComponent) innerComponent!: DateComponent;\r\n\r\n  constructor(@Inject(FLOYD_UI_CONFIG) private config: FloydUiConfig) {\r\n    super();\r\n    this.defaultDateFormat = config.dateFormat;\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { BoolSelectButtonComponent } from '@ngx-floyd/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'bool-select-button-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <f-bool-select-button ngDefaultControl\r\n                          [label]='props.label'\r\n                          [formControl]='formControl'\r\n                          [formlyAttributes]='field'\r\n                          [hidden]='props.hidden'\r\n                          [readOnly]='props.readonly ?? false'\r\n                          [trueLabel]='props.trueLabel'\r\n                          [falseLabel]='props.falseLabel'></f-bool-select-button>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => BoolSelectButtonTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [BoolSelectButtonComponent, FormsModule, ReactiveFormsModule, FormlyModule]\r\n})\r\nexport class BoolSelectButtonTemplateComponent extends FloydFieldType {\r\n  @ViewChild(BoolSelectButtonComponent) innerComponent!: BoolSelectButtonComponent;\r\n}\r\n","import { FieldType, FormlyFieldConfig } from '@ngx-formly/core';\nimport { LookupDataSource } from '@ngx-floyd/core';\nimport { FloydFormlyFieldConfig } from './configuration/property-configuration';\n\nexport function initializeDataSource(field: FieldType): LookupDataSource | undefined {\n  if (!field.props) return undefined;\n  if (!field.props.dataSourceFactory) return undefined;\n\n  const dataSource = field.props.dataSourceFactory();\n\n  if (field.props.dataSourceCascadeFilter) {\n    const filter = field.props.dataSourceCascadeFilter(field.form);\n    field.props.lastCascadeFilter = filter;\n    dataSource.cascadeFilter(filter);\n  }\n\n  return dataSource;\n}\n\nexport function findFormlyField(fieldName: string, fields: FloydFormlyFieldConfig[]): FloydFormlyFieldConfig | undefined {\n\n  const find = (fieldName: string, fields: FloydFormlyFieldConfig[]) => {\n    const field = fields.find(x => x.key === fieldName);\n    if (field)\n      return field;\n\n    const groups = fields.filter(x => x.fieldGroup);\n    for (const group of groups) {\n      const fld: any = find(fieldName, group.fieldGroup ?? []);\n      if (fld)\n        return fld;\n    }\n\n    return undefined;\n  };\n\n  return find(fieldName, fields);\n}\n\nexport function formatNumberFieldValue(value: number | undefined, field: FormlyFieldConfig): string {\n  if (value === undefined || value == null) return '';\n  if (field.props) {\n    const format = new Intl.NumberFormat('hr-HR', {\n      useGrouping: field.props['useGrouping'],\n      minimumFractionDigits: field.props['minFractionDigits'],\n      maximumFractionDigits: field.props['minFractionDigits']\n    });\n    return format.format(value);\n  }\n  return value.toLocaleString();\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { initializeDataSource } from '../../api';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { DropdownComponent } from '@ngx-floyd/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'dropdown-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <f-dropdown\r\n      ngDefaultControl\r\n      [formControl]='formControl'\r\n      [formlyAttributes]='field'\r\n      [label]='props.label'\r\n      [hidden]='props.hidden'\r\n      [readOnly]='props.readonly ?? false'\r\n      [dataSource]='props.dataSource'\r\n      [actions]='props.actions'\r\n      [isRequired]='props.required !== undefined ? props.required : false'\r\n      [hideClear]='props.hideClear !== undefined ? props.hideClear : false'\r\n      [dropdownColumns]='props.dropdownColumns ?? []'\r\n      [panelStyleClass]='props.panelClassName'\r\n    ></f-dropdown>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DropdownTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [DropdownComponent, FormsModule, ReactiveFormsModule, FormlyModule]\r\n})\r\nexport class DropdownTemplateComponent extends FloydFieldType {\r\n  @ViewChild(DropdownComponent) innerComponent!: DropdownComponent;\r\n\r\n  override ngOnInit(): void {\r\n    super.ngOnInit();\r\n    this.props.dataSource = initializeDataSource(this);\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    delete this.props.dataSource;\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { BoolSwitchComponent } from '@ngx-floyd/forms';\r\nimport { newGuid } from '@ngx-floyd/core';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'bool-switch-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <div class='field-checkbox'>\r\n      <f-bool-switch ngDefaultControl\r\n                     [inputId]='inputId'\r\n                     [label]='props.label'\r\n                     [formControl]='formControl'\r\n                     [formlyAttributes]='field'\r\n                     [hidden]='props.hidden'\r\n                     [readOnly]='props.readonly ?? false'\r\n      ></f-bool-switch>\r\n      <label [for]='inputId'>{{ props.label }}</label>\r\n    </div>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => BoolSwitchTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [BoolSwitchComponent, FormsModule, ReactiveFormsModule, FormlyModule]\r\n})\r\nexport class BoolSwitchTemplateComponent extends FloydFieldType {\r\n  @ViewChild(BoolSwitchComponent) innerComponent!: BoolSwitchComponent;\r\n  inputId = newGuid();\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, Inject, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { FLOYD_UI_CONFIG } from '@ngx-floyd/core-ui';\r\nimport { WeekDay } from '@angular/common';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { DateTimeComponent } from '@ngx-floyd/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'date-time-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <f-date-time ngDefaultControl [formControl]='formControl' [formlyAttributes]='field' [label]='props.label'\r\n                 [hidden]='props.hidden'\r\n                 [readOnly]='props.readonly ?? false'\r\n                 [actions]='props.actions'\r\n                 [minDate]='props.minDate'\r\n                 [maxDate]='props.maxDate'\r\n                 [stepHour]='props.stepHour ?? 1'\r\n                 [stepMinute]='props.stepMinute ?? 1'\r\n                 [stepSecond]='props.stepSecond ?? 1'\r\n                 [format]='props.format !== undefined ? props.format : defaultDateFormat'\r\n                 [firstDayOfWeek]='props.firstDayOfWeek ?? monday'\r\n                 [defaultDate]='props.defaultDate ?? defaultDate'\r\n    ></f-date-time>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DateTimeTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [DateTimeComponent, FormsModule, ReactiveFormsModule, FormlyModule]\r\n})\r\nexport class DateTimeTemplateComponent extends FloydFieldType {\r\n  defaultDateFormat: string;\r\n  monday: WeekDay = WeekDay.Monday;\r\n  defaultDate: Date = new Date();\r\n  @ViewChild(DateTimeComponent) innerComponent!: DateTimeComponent;\r\n\r\n  constructor(@Inject(FLOYD_UI_CONFIG) private config: FloydUiConfig) {\r\n    super();\r\n    this.defaultDateFormat = config.dateFormat;\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { initializeDataSource } from '../../api';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { MultiselectDropdownComponent } from '@ngx-floyd/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'multiselect-dropdown-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <f-multiselect-dropdown\r\n      ngDefaultControl\r\n      [formControl]='formControl'\r\n      [formlyAttributes]='field'\r\n      [label]='props.label'\r\n      [hidden]='props.hidden'\r\n      [readOnly]='props.readonly ?? false'\r\n      [actions]='props.actions'\r\n      [dataSource]='props.dataSource'\r\n      [dropdownColumns]='props.dropdownColumns ?? []'\r\n      [panelStyleClass]='props.panelClassName'\r\n    ></f-multiselect-dropdown>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MultiselectDropdownTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [MultiselectDropdownComponent, FormsModule, ReactiveFormsModule, FormlyModule]\r\n})\r\nexport class MultiselectDropdownTemplateComponent extends FloydFieldType {\r\n\r\n  @ViewChild(MultiselectDropdownComponent) innerComponent!: MultiselectDropdownComponent;\r\n\r\n  override ngOnInit(): void {\r\n    super.ngOnInit();\r\n    this.props.dataSource = initializeDataSource(this);\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    delete this.props.dataSource;\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, Inject, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { FLOYD_UI_CONFIG } from '@ngx-floyd/core-ui';\r\nimport { initializeDataSource } from '../../api';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { AutoCompleteComponent } from '@ngx-floyd/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'dropdown-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <f-auto-complete\r\n      ngDefaultControl\r\n      [formControl]='formControl'\r\n      [formlyAttributes]='field'\r\n      [label]='props.label'\r\n      [dropdown]='props.dropdown'\r\n      [hidden]='props.hidden'\r\n      [dataSource]='props.dataSource'\r\n      [actions]='props.actions'\r\n      [autoHighlight]='props.autoHighlight ?? defaultAutoHighliht'\r\n      [dropdownColumns]='props.dropdownColumns ?? []'\r\n      [minLength]='props.minLength ?? defaultMinLength'\r\n      [delay]='props.delay ?? defaultDelay'\r\n      [panelStyleClass]='props.panelClassName'\r\n      [readOnly]='props.readonly ?? false'\r\n      [forceSelection]='props.forceSelection ?? defaultForceSelection'\r\n    ></f-auto-complete>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => AutoCompleteTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [AutoCompleteComponent, FormsModule, ReactiveFormsModule, FormlyModule]\r\n})\r\nexport class AutoCompleteTemplateComponent extends FloydFieldType {\r\n  defaultMinLength = 0;\r\n  defaultAutoHighliht = false;\r\n  defaultDelay = 500;\r\n  defaultForceSelection = true;\r\n  @ViewChild(AutoCompleteComponent) innerComponent!: AutoCompleteComponent;\r\n\r\n  constructor(@Inject(FLOYD_UI_CONFIG) private config: FloydUiConfig) {\r\n    super();\r\n    this.defaultMinLength = config.autoComplete.minSearchLength;\r\n    if (this.config.autoComplete.autoHighlight !== undefined)\r\n      this.defaultAutoHighliht = this.config.autoComplete.autoHighlight;\r\n  }\r\n\r\n  override ngOnInit(): void {\r\n    super.ngOnInit();\r\n    this.props.dataSource = initializeDataSource(this);\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    delete this.props.dataSource;\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, Inject, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { FLOYD_UI_CONFIG } from '@ngx-floyd/core-ui';\r\nimport { initializeDataSource } from '../../api';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { MultiselectAutoCompleteComponent } from '@ngx-floyd/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'app-multiselect-auto-complete-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <f-multiselect-auto-complete\r\n      ngDefaultControl\r\n      [formControl]='formControl'\r\n      [formlyAttributes]='field'\r\n      [label]='props.label'\r\n      [hidden]='props.hidden'\r\n      [readOnly]='props.readonly ?? false'\r\n      [dataSource]='props.dataSource'\r\n      [dropdown]='props.dropdown'\r\n      [actions]='props.actions'\r\n      [panelStyleClass]='props.panelClassName'\r\n      [dropdownColumns]='props.dropdownColumns ?? []'\r\n      [minLength]='props.minLength ?? defaultMinLength'\r\n      [delay]='props.delay ?? defaultDelay'\r\n    ></f-multiselect-auto-complete>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MultiselectAutoCompleteTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [MultiselectAutoCompleteComponent, FormsModule, ReactiveFormsModule, FormlyModule]\r\n})\r\nexport class MultiselectAutoCompleteTemplateComponent extends FloydFieldType {\r\n\r\n  defaultMinLength = 0;\r\n  defaultAutoHighliht = false;\r\n  defaultDelay = 500;\r\n\r\n  @ViewChild(MultiselectAutoCompleteComponent) innerComponent!: MultiselectAutoCompleteComponent;\r\n\r\n  constructor(@Inject(FLOYD_UI_CONFIG) private config: FloydUiConfig) {\r\n    super();\r\n    this.defaultMinLength = config.autoComplete.minSearchLength;\r\n    if (this.config.autoComplete.autoHighlight !== undefined)\r\n      this.defaultAutoHighliht = this.config.autoComplete.autoHighlight;\r\n  }\r\n\r\n  override ngOnInit(): void {\r\n    super.ngOnInit();\r\n    this.props.dataSource = initializeDataSource(this);\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    delete this.props.dataSource;\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { NumberComponent } from '@ngx-floyd/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'app-integer-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <f-integer ngDefaultControl [formControl]='formControl' [formlyAttributes]='field' [label]='props.label'\r\n               [actions]='props.actions'\r\n               [hidden]='props.hidden'\r\n               [minFractionDigits]='props.minFractionDigits'\r\n               [maxFractionDigits]='props.maxFractionDigits'\r\n               [min]='props.min'\r\n               [max]='props.max'\r\n               [prefix]='props.prefix'\r\n               [suffix]='props.suffix'\r\n               [readOnly]='props.readonly ?? false'\r\n               [useGrouping]='props.useGrouping'\r\n    ></f-integer>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => NumberTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [NumberComponent, FormsModule, ReactiveFormsModule, FormlyModule]\r\n})\r\nexport class NumberTemplateComponent extends FloydFieldType {\r\n  @ViewChild(NumberComponent) innerComponent!: NumberComponent;\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { LongStringComponent } from '@ngx-floyd/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'short-string-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <f-long-string\r\n      ngDefaultControl\r\n      [formControl]='formControl'\r\n      [formlyAttributes]='field'\r\n      [label]='props.label'\r\n      [hidden]='props.hidden'\r\n      [readOnly]='props.readonly ?? false'\r\n      [actions]='props.actions'\r\n      [maxLen]='props.maxLen'\r\n      [autoResize]='props.autoResize !== undefined ? props.autoResize : true'\r\n      [rws]='props.rws'\r\n      [keyFilter]='props.keyFilter'\r\n    ></f-long-string>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => LongStringTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [\r\n    LongStringComponent,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    FormlyModule\r\n  ]\r\n})\r\nexport class LongStringTemplateComponent extends FloydFieldType {\r\n  @ViewChild(LongStringComponent) innerComponent!: LongStringComponent;\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { FieldWrapper, FormlyModule } from '@ngx-formly/core';\nimport { NgIf } from '@angular/common';\r\n\r\n@Component({\n    selector: 'field-wrapper',\n    template: `\r\n      <div class=\"field\">\r\n        <ng-container #fieldComponent></ng-container>\r\n        <small *ngIf=\"showError\" class=\"p-error\">\r\n          <formly-validation-message class=\"ui-message-text\" [field]=\"field\"></formly-validation-message>\r\n        </small>\r\n      </div>\r\n  `,\n    styles: [`\r\n    formly-validation-message {\r\n      font-size: 0.85rem;\r\n    }\r\n  `],\n    standalone: true,\n    imports: [NgIf, FormlyModule]\n})\r\nexport class FieldWrapperComponent extends FieldWrapper {\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, forwardRef, ViewChild } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FileUploadComponent } from '@ngx-floyd/forms';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'file-upload-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <f-file-upload [formlyAttributes]='field'\r\n                   [hidden]='props.hidden'\r\n                   [label]='props.label' [multiple]='props.multiple ?? false'\r\n                   [actions]='props.actions' [required]='props.required ?? false'\r\n                   [getFileName]='props.getFileName' [accept]='props.accept'\r\n                   [chooseLabel]='props.chooseLabel ?? \"Odaberi\"'\r\n                   [disabled]='props.disabled ?? false'\r\n    ></f-file-upload>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => FileUploadTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [FileUploadComponent, FormlyModule]\r\n})\r\nexport class FileUploadTemplateComponent extends FloydFieldType implements AfterViewInit {\r\n  @ViewChild(FileUploadComponent) innerComponent!: FileUploadComponent;\r\n\r\n  ngAfterViewInit(): void {\r\n    this.props.componentInstance = this.innerComponent;\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    delete this.props.componentInstance;\r\n  }\r\n}\r\n","import { FormlyFieldConfig, FormlyFieldProps } from '@ngx-formly/core';\r\nimport { __rest } from 'tslib';\r\nimport { isObservable, Observable } from 'rxjs';\r\nimport { auditTime, tap } from 'rxjs/operators';\r\nimport { FormlyTemplate } from './formly-template';\r\nimport { FloydFormlyConfigurationBuilder } from './floyd-formly-configuration';\r\nimport { ActionConfiguration, UiAction } from '@ngx-floyd/core-ui';\r\nimport { isFunction } from '@ngx-floyd/core';\r\nimport { AbstractControl } from '@angular/forms';\r\n\r\nexport type FloydFormlyFieldProps = FormlyFieldProps & { [additionalProperties: string]: any };\r\nexport type FloydFormlyFieldConfig = FormlyFieldConfig<FormlyFieldProps & FloydFormlyFieldProps>;\r\nexport type FloydFormlyExpressions = {\r\n  [p: string]: string | Observable<any> | ((field: FloydFormlyFieldConfig) => any)\r\n};\r\n\r\nexport function isFloydFormlyFieldConfig(obj: any): obj is FloydFormlyFieldConfig {\r\n  if (!obj) return false;\r\n  return ('template' in obj || 'type' in obj) && 'props' in obj && 'key' in obj;\r\n}\r\n\r\nexport interface Validator {\r\n  isValid: (control: AbstractControl) => boolean,\r\n  message: (error: any, field: FormlyFieldConfig) => string;\r\n}\r\n\r\nexport interface PropertyConfiguration<T> {\r\n  required(required?: boolean): this;\r\n\r\n  readOnly(required?: boolean): this;\r\n\r\n  templateOption(option: (o: FloydFormlyFieldProps) => void): this;\r\n\r\n  expressionProperty(property: string, expression: ((model: T, formState: any, field?: FormlyFieldConfig) => any) | Observable<any>): this;\r\n\r\n  hideExpression(expression: boolean | string | ((model: T, formState: any, field?: FormlyFieldConfig) => boolean)): this;\r\n\r\n  disable(disable: boolean | (() => boolean) | undefined): this;\r\n\r\n  disableOnEmpty(fieldName: keyof T): this;\r\n\r\n  hideOnEmpty(fieldName: keyof T): this;\r\n\r\n  /**\r\n   * Adds a function which should be executed when this property changes.\r\n   *\r\n   * @param {(initial: boolean) => void} onChangeFn Function which should be executed when change is triggered.\r\n   * */\r\n  onChange(onChangeFn: (field: FormlyFieldConfig) => void): this;\r\n\r\n  /**\r\n   * Adds a function which should be executed when this property named in `fieldName` parameter changes.\r\n   *\r\n   * @param {keyof T} fieldName Name of the property whose changes is monitored.\r\n   * @param {(initial: boolean) => void} changesOnFn Function which should be executed when change is triggered.\r\n   * */\r\n  changesOn(fieldName: keyof T, changesOnFn: () => void): this;\r\n\r\n  onInit(onChangeFn: (field: FormlyFieldConfig) => void): this;\r\n\r\n  wrappers(wrappers: string[]): this;\r\n\r\n  className(className: string): this;\r\n\r\n  addAction(label: string, icon: string, action: ($event: any, data?: any) => void, config?: (c: ActionConfiguration<T>) => ActionConfiguration<T>): this;\r\n\r\n  defaultValue(defaultValue: any): this;\r\n\r\n  id(id: string): this;\r\n\r\n  atIndex(index: number): this;\r\n\r\n  label(label: string): this;\r\n\r\n  if(ifFn: () => boolean, config: (c: this) => this): this;\r\n\r\n  apply(configuration: (c: this) => this): this;\r\n\r\n  addValidation(name: string, validator: Validator): this;\r\n}\r\n\r\nexport class PropertyConfigurationBuilder<T> implements PropertyConfiguration<T> {\r\n\r\n  readonly fieldName?: keyof T;\r\n  fieldId?: string;\r\n  index?: number;\r\n  formlyTemplate?: FormlyTemplate;\r\n  protected readonly config: FloydFormlyFieldConfig;\r\n  protected parent!: FloydFormlyConfigurationBuilder<T>;\r\n  protected changeFuncs: ((field: FloydFormlyFieldConfig) => void)[] = [];\r\n  protected onInitFuncs: ((field: FloydFormlyFieldConfig) => any)[] = [];\r\n  protected fieldGroupConfigurationBuilder?: FloydFormlyConfigurationBuilder<any>;\r\n  protected detailForm = false;\r\n\r\n  constructor(fieldName?: keyof T, formlyTemplate?: FormlyTemplate, fieldId?: string) {\r\n    this.config = {\r\n      props: {},\r\n      expressions: {},\r\n      hooks: {}\r\n    };\r\n    this.fieldName = fieldName;\r\n    this.fieldId = fieldId;\r\n    this.formlyTemplate = formlyTemplate;\r\n  }\r\n\r\n  apply(configuration: (c: this) => this): this {\r\n    configuration(this);\r\n    return this;\r\n  }\r\n\r\n  protected get safeFieldName(): keyof T {\r\n    return this.fieldName as keyof T;\r\n  }\r\n\r\n  get props(): FloydFormlyFieldProps {\r\n    this.config.props = this.config.props ?? {};\r\n    return this.config.props;\r\n  }\r\n\r\n  get expressions(): FloydFormlyExpressions {\r\n    this.config.expressions = this.config.expressions ?? {};\r\n    return this.config.expressions;\r\n  }\r\n\r\n  if(ifFn: () => boolean, config: (c: this) => this): this {\r\n    if (ifFn()) {\r\n      config(this);\r\n    }\r\n    return this;\r\n  }\r\n\r\n  id(id: string): this {\r\n    this.fieldId = id;\r\n    return this;\r\n  }\r\n\r\n  atIndex(index: number): this {\r\n    this.index = index;\r\n    return this;\r\n  }\r\n\r\n  initialize(parent: FloydFormlyConfigurationBuilder<T>): void {\r\n    this.parent = parent;\r\n  }\r\n\r\n  hasClassName(): boolean {\r\n    return this.config.className !== undefined;\r\n  }\r\n\r\n  initializeAsFormGroup(parent: FloydFormlyConfigurationBuilder<T>, builder: FloydFormlyConfigurationBuilder<T>): void {\r\n    this.initialize(parent);\r\n    this.fieldGroupConfigurationBuilder = builder;\r\n  }\r\n\r\n  initializeAsDetailForm<TDetail>(builder: FloydFormlyConfigurationBuilder<TDetail>): void {\r\n    this.detailForm = true;\r\n    this.fieldGroupConfigurationBuilder = builder;\r\n  }\r\n\r\n  expressionProperty(property: string, expression: ((model: T) => any) | Observable<any>): this {\r\n    if (isObservable(expression))\r\n      this.expressions[property] = expression as Observable<any>;\r\n    else if (typeof expression === 'function')\r\n      this.expressions[property] = (field: FloydFormlyFieldConfig | T) => expression(isFloydFormlyFieldConfig(field) ? (field as FloydFormlyFieldConfig).model as T : field as T);\r\n\r\n    return this;\r\n  }\r\n\r\n  required(required = true): this {\r\n    this.props.required = required;\r\n    return this;\r\n  }\r\n\r\n  readOnly(readOnly = true): this {\r\n    this.props.readonly = readOnly;\r\n    return this;\r\n  }\r\n\r\n  template(template: string): this {\r\n    this.config.template = template;\r\n    return this;\r\n  }\r\n\r\n  getConfiguration(): FloydFormlyFieldConfig {\r\n    if (!this.config.wrappers) {\r\n      this.config.wrappers = ['default'];\r\n    }\r\n\r\n    if (this.props.actions?.length) {\r\n      this.onInitFuncs = [...this.onInitFuncs, (field) => {\r\n        if (field.props?.actions) {\r\n          for (const action of field.props.actions) {\r\n            const originalAction = action.action;\r\n            action.action = ($event: any, data: any) => {\r\n              originalAction($event, data ?? field.model);\r\n            };\r\n          }\r\n        }\r\n      }];\r\n    }\r\n\r\n    if (this.changeFuncs.length) {\r\n      this.onInitFuncs = [...this.onInitFuncs, (fld: FloydFormlyFieldConfig) => {\r\n        return fld.formControl?.valueChanges.pipe(\r\n          auditTime(150),\r\n          tap(() => {\r\n            for (const changeFunc of this.changeFuncs) {\r\n              changeFunc(fld);\r\n            }\r\n          }));\r\n      }];\r\n    }\r\n\r\n    if (this.onInitFuncs.length) {\r\n      this.config.hooks = this.config.hooks ?? {};\r\n      this.config.hooks.onInit = field => {\r\n        let retValue: any;\r\n        for (const onInitFunc of this.onInitFuncs) {\r\n          retValue = onInitFunc(field as FloydFormlyFieldConfig);\r\n        }\r\n        return retValue;\r\n      };\r\n    }\r\n\r\n    const f = __rest(this.config, ['key', 'type', 'fieldGroupConfigurationBuilder']);\r\n    return {\r\n      key: this.fieldName,\r\n      type: this.formlyTemplate,\r\n      fieldGroup: this.fieldGroupConfigurationBuilder && !this.detailForm ? this.fieldGroupConfigurationBuilder.getConfiguration().fields : undefined,\r\n      fieldArray: this.fieldGroupConfigurationBuilder && this.detailForm ? {\r\n        fieldGroup: this.fieldGroupConfigurationBuilder.getConfiguration().fields,\r\n        fieldGroupClassName: this.fieldGroupConfigurationBuilder && this.detailForm && this.props.inlineForm ? 'formgrid grid' : undefined,\r\n        className: this.config.className\r\n      } : undefined,\r\n      id: this.fieldId,\r\n      ...f\r\n    };\r\n  }\r\n\r\n  label(label: string): this {\r\n    this.props.label = label;\r\n    return this;\r\n  }\r\n\r\n  hideExpression(expression: boolean | string | ((model: T, formState: any, field?: FormlyFieldConfig) => boolean)): this {\r\n    if (typeof expression === 'boolean')\r\n      this.expressions.hide = () => expression as boolean;\r\n    else if (typeof expression === 'string')\r\n      this.expressions.hide = expression as string;\r\n    else\r\n      this.expressions.hide = field => expression(field.model as T, field.options?.formState, field);\r\n\r\n    return this;\r\n  }\r\n\r\n  disable(disable: boolean | (() => boolean) | undefined): this {\r\n    if (typeof disable === 'boolean')\r\n      this.templateOption(o => o.disabled = disable);\r\n    else if (!!disable && isFunction(disable))\r\n      this.templateOption(o => o.disabled = disable());\r\n    else\r\n      this.templateOption(o => o.disabled = true);\r\n    return this;\r\n  }\r\n\r\n  templateOption(option: (o: FloydFormlyFieldProps) => void): this {\r\n    option(this.props);\r\n    return this;\r\n  }\r\n\r\n  disableOnEmpty(fieldName: keyof T): this {\r\n    this\r\n    .expressionProperty('props.disabled', m => this.isValueEmpty(m[fieldName]))\r\n    .expressionProperty(`model.${this.safeFieldName as string}`, m => !this.isValueEmpty(m[fieldName]) ? m[this.safeFieldName] : undefined);\r\n    return this;\r\n  }\r\n\r\n  hideOnEmpty(fieldName: keyof T): this {\r\n    this.hideExpression(m => this.isValueEmpty(m[fieldName]));\r\n    return this;\r\n  }\r\n\r\n  onChange(onChangeFn: (field: FloydFormlyFieldConfig) => void): this {\r\n    this.changeFuncs = [...this.changeFuncs, onChangeFn];\r\n    return this;\r\n  }\r\n\r\n  changesOn(fieldName: keyof T, changesOnFn: () => void): this {\r\n    this.parent.changesOnFn = { fieldName, changesOnFn };\r\n    return this;\r\n  }\r\n\r\n  onInit(onInitFn: (field: FloydFormlyFieldConfig) => void): this {\r\n    this.onInitFuncs = [...this.onInitFuncs, onInitFn];\r\n    return this;\r\n  }\r\n\r\n  wrappers(wrappers?: string[]): this {\r\n    this.config.wrappers = wrappers;\r\n    return this;\r\n  }\r\n\r\n  className(className: string): this {\r\n    this.config.className = className;\r\n    return this;\r\n  }\r\n\r\n  fieldGroupClassName(className: string): this {\r\n    this.config.fieldGroupClassName = className;\r\n    return this;\r\n  }\r\n\r\n  addAction(label: string, icon: string, action: ($event: any, data?: any) => void, config?: (c: ActionConfiguration<T>) => ActionConfiguration<T>): this {\r\n    const unsupported: FormlyTemplate[] = ['BoolSelectButton', 'BoolSwitch'];\r\n    if (unsupported.find(x => x === this.formlyTemplate)) {\r\n      throw new Error(`Function addAction is not supported for ${this.formlyTemplate} control.`);\r\n    }\r\n\r\n    const c = new ActionConfiguration<T>();\r\n    if (config) {\r\n      config(c);\r\n    }\r\n\r\n    let actions: UiAction[] = this.props.actions ?? [];\r\n    actions = [...actions, {\r\n      label,\r\n      action,\r\n      icon,\r\n      tooltipPosition: c.config.tooltipPosition,\r\n      style: c.config.style,\r\n      type: c.config.type,\r\n      visible: c.config.visible,\r\n      showLabel: c.config.showLabel ?? false\r\n    }];\r\n    this.templateOption(o => o.actions = actions);\r\n    return this;\r\n  }\r\n\r\n  defaultValue(defaultValue: any): this {\r\n    this.config.defaultValue = defaultValue;\r\n    return this;\r\n  }\r\n\r\n  protected isValueEmpty(value: any) {\r\n    if (!value)\r\n      return true;\r\n    if (Array.isArray(value))\r\n      return !(value as any[]).length;\r\n    return false;\r\n  }\r\n\r\n  addValidation(name: string, validator: Validator): this {\r\n    if (!validator.isValid)\r\n      throw new Error('Validation expression must be defined');\r\n    if (!validator.message)\r\n      throw new Error('Validation message must be defined');\r\n\r\n    this.config.validators = this.config.validators ?? {};\r\n\r\n    this.config.validators[name] = {\r\n      expression: (control: AbstractControl) => validator.isValid(control) ? { name: true } : null,\r\n      message: validator.message\r\n    };\r\n\r\n    return this;\r\n  }\r\n}\r\n","import {FloydFormlyFieldConfig, PropertyConfiguration, PropertyConfigurationBuilder} from './property-configuration';\r\nimport {deepEqual, LookupDataSource} from '@ngx-floyd/core';\r\nimport {FormlyTemplate} from './formly-template';\r\nimport {DropdownColumn} from '@ngx-floyd/forms';\r\nimport {FormGroup} from '@angular/forms';\r\nimport {take} from 'rxjs/operators';\r\n\r\nexport interface DropdownPropertyConfiguration<T> extends PropertyConfiguration<T> {\r\n  dataSource(dataSource: () => LookupDataSource): this;\r\n\r\n  cascadeFrom(...fields: ((keyof T) | MappedField<T>)[]): this;\r\n\r\n  additionalDropdownColumns(config: (d: DropdownColumnConfiguration<T>) => DropdownColumnConfiguration<T>): this;\r\n\r\n  hideClear(): this;\r\n\r\n  panelClassName(className: string): this;\r\n}\r\n\r\nexport interface MappedField<T> {\r\n  field: keyof T;\r\n  as: string;\r\n}\r\n\r\nexport class DropdownColumnConfiguration<T> {\r\n  columns: DropdownColumn[] = [];\r\n\r\n  constructor(columns: DropdownColumn[]) {\r\n    this.columns = columns;\r\n  }\r\n\r\n  add(field: string, size?: number, format?: (value: any) => string, atIndex?: number): DropdownColumnConfiguration<T> {\r\n    const column = {field, size, format};\r\n    if (atIndex !== undefined && atIndex >= 0 && atIndex < this.columns.length) {\r\n      const columns = [...this.columns];\r\n      columns.splice(atIndex, 0, column);\r\n      this.columns = columns;\r\n    } else {\r\n      this.columns = [...this.columns, column];\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  remove(field: string): DropdownColumnConfiguration<T> {\r\n    this.columns = this.columns.filter(x => x.field !== field);\r\n    return this;\r\n  }\r\n\r\n  modify(field: string, modifyFn: (column: DropdownColumn) => void): DropdownColumnConfiguration<T> {\r\n    const column = this.columns.find(x => x.field === field);\r\n    if (!column)\r\n      throw new Error(`Additional column for field '${field}' does not exists.`);\r\n    modifyFn(column);\r\n    return this;\r\n  }\r\n}\r\n\r\nexport class DropdownPropertyConfigurationBuilder<T> extends PropertyConfigurationBuilder<T> implements DropdownPropertyConfiguration<T> {\r\n\r\n  constructor(fieldName: keyof T, formlyTemplate: FormlyTemplate) {\r\n    super(fieldName, formlyTemplate);\r\n  }\r\n\r\n  hideClear(): this {\r\n    this.templateOption(o => o.hideClear = true);\r\n    return this;\r\n  }\r\n\r\n  additionalDropdownColumns(config: (d: DropdownColumnConfiguration<T>) => DropdownColumnConfiguration<T>): this {\r\n    this.props.dropdownColumns = this.props.dropdownColumns ?? [];\r\n    const builder = config(new DropdownColumnConfiguration<T>(this.props.dropdownColumns));\r\n    this.templateOption(o => o.dropdownColumns = builder.columns);\r\n\r\n    return this;\r\n  }\r\n\r\n  panelClassName(className: string): this {\r\n    this.props.panelClassName = className;\r\n    return this;\r\n  }\r\n\r\n  dataSource(dataSourceFactory: () => LookupDataSource): this {\r\n    this.templateOption((o) => o.dataSourceFactory = dataSourceFactory);\r\n    return this;\r\n  }\r\n\r\n  cascadeFrom(...fields: ((keyof T) | MappedField<T>)[]): this {\r\n\r\n    const fieldName = (f: (keyof T) | MappedField<T>): string => typeof (f) === 'string' ? f as string : (f as MappedField<T>).field as string;\r\n    const asField = (f: (keyof T) | MappedField<T>): string => typeof (f) === 'string' ? f as string : (f as MappedField<T>).as as string;\r\n\r\n    const getFilter = (form: FormGroup) => {\r\n      const filter: any = {};\r\n      for (const field of fields) {\r\n        filter[asField(field)] = form.controls[fieldName(field)]?.value;\r\n      }\r\n      return filter;\r\n    };\r\n\r\n    for (const field of fields.map(f => fieldName(f))) {\r\n      const builder = this.parent.rootConfiguration.flatFields.find(x => x.fieldName === field);\r\n      if (!builder) {\r\n        throw new Error(`Field ${field} is not yet defined.`);\r\n      }\r\n\r\n      this.props.dataSourceCascadeFilter = getFilter;\r\n\r\n      builder.onChange((fld) => {\r\n        const form = fld.form as FormGroup;\r\n        const thisField = this.findFieldInParent(fld?.parent);\r\n        if (!thisField) {\r\n          throw new Error(`Control with name ${this.fieldName as string} was not found in the same FormGroup.`);\r\n        }\r\n\r\n        const filter = getFilter(form);\r\n        thisField.props = thisField.props ?? {};\r\n\r\n        // If filters are equal there is not need to filter with the same equal again.\r\n        // Another side effect is that unwanted change on parent lookup will trigger deletion of child lookup value\r\n        if (!deepEqual(thisField.props.lastCascadeFilter, filter) && thisField.props.dataSource) {\r\n          thisField.props.lastCascadeFilter = filter;\r\n          const controlValue = thisField.formControl?.value;\r\n          thisField.props.dataSource.cascadeFilter(filter, controlValue).pipe(take(1)).subscribe((value: any) => {\r\n            thisField.formControl?.setValue(value);\r\n          });\r\n        }\r\n      });\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n  private findFieldInParent(parent: FloydFormlyFieldConfig | undefined): FloydFormlyFieldConfig | undefined {\r\n    let field = this.findFieldInFieldGroup(parent?.fieldGroup);\r\n    if (field) return field;\r\n    if (parent?.parent)\r\n      field = this.findFieldInParent(parent?.parent);\r\n    return field;\r\n  }\r\n\r\n  private findFieldInFieldGroup(fieldGroup: FloydFormlyFieldConfig[] | undefined): FloydFormlyFieldConfig | undefined {\r\n    if (fieldGroup == null) return;\r\n\r\n    let field = fieldGroup.find(x => x.key == this.fieldName);\r\n    if (field) return field;\r\n\r\n    for (let int = 0; int < fieldGroup.length; int++) {\r\n      field = this.findFieldInFieldGroup(fieldGroup[int].fieldGroup);\r\n      if (field) break;\r\n    }\r\n    return field;\r\n  }\r\n}\r\n","import {PropertyConfiguration, PropertyConfigurationBuilder} from './property-configuration';\r\nimport {FormlyTemplate} from './formly-template';\r\nimport {WeekDay} from '@angular/common';\r\n\r\nexport interface DatePropertyConfiguration<T> extends PropertyConfiguration<T> {\r\n  rangeFrom(rangeFromField: keyof T): this;\r\n\r\n  min(value: Date | undefined): this;\r\n\r\n  max(value: Date | undefined): this;\r\n\r\n  format(format: string | undefined): this;\r\n\r\n  firstDayOfWeek(value: WeekDay | undefined): this;\r\n}\r\n\r\nexport class DatePropertyConfigurationBuilder<T> extends PropertyConfigurationBuilder<T> implements DatePropertyConfiguration<T> {\r\n\r\n  private minDate: Date | undefined = undefined;\r\n\r\n  constructor(fieldName: keyof T, formlyTemplate: FormlyTemplate) {\r\n    super(fieldName, formlyTemplate);\r\n  }\r\n\r\n  rangeFrom(rangeFromField: keyof T): this {\r\n    this\r\n    .expressionProperty(`model.${this.fieldName as string}`,\r\n      m => m[rangeFromField] && m[this.safeFieldName] && m[this.safeFieldName] < m[rangeFromField] ? undefined : m[this.safeFieldName])\r\n    .expressionProperty('props.minDate', m => {\r\n      const fromValue = m[rangeFromField] as Date | undefined;\r\n      if (this.minDate && fromValue)\r\n        return this.minDate > fromValue ? this.minDate : fromValue;\r\n      return this.minDate ?? fromValue;\r\n    });\r\n    return this;\r\n  }\r\n\r\n  format(format: string | undefined): this {\r\n    this.templateOption(o => o.format = format);\r\n    return this;\r\n  }\r\n\r\n  max(value: Date | undefined): this {\r\n    this.templateOption(o => o.maxDate = value);\r\n    return this;\r\n  }\r\n\r\n  min(value: Date | undefined): this {\r\n    this.minDate = value;\r\n    this.templateOption(o => o.minDate = value);\r\n    return this;\r\n  }\r\n\r\n  firstDayOfWeek(value: WeekDay | undefined): this {\r\n    this.templateOption((o) => (o.firstDayOfWeek = value));\r\n    return this;\r\n  }\r\n}\r\n","import {PropertyConfiguration, PropertyConfigurationBuilder} from './property-configuration';\r\n\r\nexport interface NumberPropertyConfiguration<T> extends PropertyConfiguration<T> {\r\n  min(value: number | undefined): this;\r\n\r\n  max(value: number | undefined): this;\r\n\r\n  useGrouping(value: boolean): this;\r\n\r\n  fractionDigits(min?: number, max?: number): this;\r\n\r\n  rangeFrom(rangeFromField: keyof T): this;\r\n\r\n  prefix(value: string): this;\r\n\r\n  suffix(value: string): this;\r\n}\r\n\r\nexport class NumberPropertyConfigurationBuilder<T> extends PropertyConfigurationBuilder<T> implements NumberPropertyConfiguration<T> {\r\n\r\n  prefix(value: string): this {\r\n    this.templateOption(o => o.prefix = value);\r\n    return this;\r\n  }\r\n\r\n  suffix(value: string): this {\r\n    this.templateOption(o => o.suffix = value);\r\n    return this;\r\n  }\r\n\r\n  max(value: number | undefined): this {\r\n    this.templateOption(o => o.max = value);\r\n    return this;\r\n  }\r\n\r\n  min(value: number | undefined): this {\r\n    this.templateOption(o => o.min = value);\r\n    return this;\r\n  }\r\n\r\n  useGrouping(value: boolean): this {\r\n    this.templateOption(o => o.useGrouping = value);\r\n    return this;\r\n  }\r\n\r\n  fractionDigits(min?: number | null, max?: number | null): this {\r\n    if (min && !max) max = min;\r\n    if (!min && max) min = 0;\r\n    this.templateOption(o => o.minFractionDigits = min);\r\n    this.templateOption(o => o.maxFractionDigits = max);\r\n    return this;\r\n  }\r\n\r\n  rangeFrom(rangeFromField: keyof T): this {\r\n    this\r\n      .expressionProperty(`model.${this.fieldName as string}`,\r\n        m => m[rangeFromField] && m[this.safeFieldName] && m[this.safeFieldName] < m[rangeFromField] ? undefined : m[this.safeFieldName])\r\n      .expressionProperty('props.min', m => m[rangeFromField]);\r\n    return this;\r\n  }\r\n}\r\n","import {PropertyConfiguration, PropertyConfigurationBuilder} from './property-configuration';\nimport { KeyFilterPattern } from 'primeng/keyfilter';\n\nexport interface StringPropertyConfiguration<T> extends PropertyConfiguration<T> {\n  maxLength(value: number): this;\n  pattern(pattern: string, validationMessage: string): this;\n  keyFilter(keyFilter: RegExp | KeyFilterPattern | undefined): this;\n}\n\nexport class StringPropertyConfigurationBuilder<T>\n  extends PropertyConfigurationBuilder<T>\n  implements StringPropertyConfiguration<T>\n{\n  maxLength(value: number): this {\n    this.templateOption((o) => (o.maxLen = value));\n    return this;\n  }\n\n  pattern(pattern: string, validationMessage: string): this {\n    this.templateOption((o) => {\n      o.pattern = pattern;\n      o.patternValidationMessage = validationMessage;\n    });\n    return this;\n  }\n\n  keyFilter(keyFilter: RegExp | KeyFilterPattern | undefined): this {\n    this.templateOption((o) => (o.keyFilter = keyFilter));\n    return this;\n  }\n}\n\nexport  interface LongStringPropertyConfiguration<T> extends StringPropertyConfiguration<T> {\n  rows(rows: number) : this;\n  autoResize(autoResize: boolean) : this;\n}\n\nexport class LongStringPropertyConfigurationBuilder<T> extends StringPropertyConfigurationBuilder<T> implements LongStringPropertyConfiguration<T> {\n  autoResize(autoResize: boolean): this {\n    this.templateOption(o => o.autoResize = autoResize);\n    return this;\n  }\n\n  rows(rows: number): this {\n    this.templateOption(o => o.rws = rows);\n    return this;\n  }\n}\n","import {PropertyConfiguration, PropertyConfigurationBuilder} from './property-configuration';\nimport {FormlyTemplate} from './formly-template';\n\nexport interface FileUploadPropertyConfiguration<T> extends PropertyConfiguration<T> {\n  multiple(multiple?: boolean): this;\n\n  getFileName(func: (file: any) => string): this;\n\n  accept(fileTypes: string): this;\n}\n\nexport class FileUploadPropertyConfigurationBuilder<T> extends PropertyConfigurationBuilder<T> implements FileUploadPropertyConfiguration<T> {\n\n  constructor(fieldId: string, formlyTemplate: FormlyTemplate) {\n    super(undefined, formlyTemplate, fieldId);\n    this.templateOption(o => o.getFileName = (file: any) => file?.filename ?? file?.name);\n  }\n\n  accept(fileTypes: string): this {\n    this.templateOption(o => o.accept = fileTypes);\n    return this;\n  }\n\n  getFileName(func: (file: any) => string): this {\n    this.templateOption(o => o.getFileName = func);\n    return this;\n  }\n\n  multiple(multiple = true): this {\n    this.templateOption(o => o.multiple = multiple);\n    return this;\n  }\n}\n","import { FloydFormlyConfigurationBuilder } from './floyd-formly-configuration';\nimport { FloydFormlyFieldProps, PropertyConfigurationBuilder } from './property-configuration';\nimport { FormlyTemplate } from './formly-template';\nimport { Observable } from 'rxjs/internal/Observable';\n\nexport interface DetailFormConfiguration<T> {\n  addButtonText(text: string): DetailFormConfiguration<T>;\n\n  className(className: string): DetailFormConfiguration<T>;\n\n  removeButtonText(text: string): DetailFormConfiguration<T>;\n\n  inlineForm(inlineForm?: boolean): DetailFormConfiguration<T>;\n\n  detailTemplate(template: string): DetailFormConfiguration<T>;\n\n  wrappers(wrappers: string[]): DetailFormConfiguration<T>;\n\n  fields(config: (fields: FloydFormlyConfiguration<T>) => FloydFormlyConfiguration<T>): DetailFormConfiguration<T>;\n\n  templateOption(option: (o: FloydFormlyFieldProps) => void): DetailFormConfiguration<T>;\n\n  hideExpression(expression: boolean | string | ((model: T, formState: any) => boolean)): DetailFormConfiguration<T>;\n\n  newItemFactory(fn: () => T): DetailFormConfiguration<T>;\n\n  onRemoveItem(fn: (model: T[], index: number) => Observable<boolean>): DetailFormConfiguration<T>;\n\n  id(id: string): this;\n\n  atIndex(index: number): this;\n\n  if(ifFn: () => boolean, config: (c: this) => this): this;\n}\n\nexport class DetailFormConfigurationBuilder<T> implements DetailFormConfiguration<T> {\n\n  protected innerFormBuilder: FloydFormlyConfigurationBuilder<T>;\n  protected propertyBuilder: PropertyConfigurationBuilder<any>;\n  private _inlineForm = false;\n\n  constructor(fieldName: string, innerFormBuilder: FloydFormlyConfigurationBuilder<T>) {\n    this.innerFormBuilder = innerFormBuilder;\n    this.propertyBuilder = new PropertyConfigurationBuilder<any>(fieldName, 'DetailForm');\n    this.propertyBuilder.initializeAsDetailForm(this.innerFormBuilder);\n  }\n\n  public get fieldName(): string | undefined {\n    return this.propertyBuilder.fieldName as string;\n  }\n\n  getConfiguration(): PropertyConfigurationBuilder<any> {\n    if (this._inlineForm) {\n      for (const property of this.innerFormBuilder.properties) {\n        if (!property.hasClassName()) {\n          property.className('col');\n        }\n      }\n    }\n    return this.propertyBuilder;\n  }\n\n  if(ifFn: () => boolean, config: (c: this) => this): this {\n    if (ifFn()) {\n      config(this);\n    }\n    return this;\n  }\n\n  addButtonText(text: string): DetailFormConfiguration<T> {\n    this.templateOption(o => o.addText = text);\n    return this;\n  }\n\n  className(className: string): DetailFormConfiguration<T> {\n    this.propertyBuilder.className(className);\n    return this;\n  }\n\n  removeButtonText(text: string): DetailFormConfiguration<T> {\n    this.templateOption(o => o.removeText = text);\n    return this;\n  }\n\n  fields(config: (fields: FloydFormlyConfiguration<T>) => FloydFormlyConfiguration<T>): DetailFormConfiguration<T> {\n    config(this.innerFormBuilder as unknown as FloydFormlyConfiguration<T>);\n    return this;\n  }\n\n  templateOption(option: (o: FloydFormlyFieldProps) => void): DetailFormConfiguration<T> {\n    this.propertyBuilder.templateOption(option);\n    return this;\n  }\n\n  inlineForm(inlineForm?: boolean): DetailFormConfiguration<T> {\n    this._inlineForm = inlineForm === undefined || inlineForm;\n    this.templateOption(o => o.inlineForm = this._inlineForm);\n    return this;\n  }\n\n  detailTemplate(template: string): DetailFormConfiguration<T> {\n    this.propertyBuilder.formlyTemplate = template as FormlyTemplate;\n    return this;\n  }\n\n  wrappers(wrappers: string[]): DetailFormConfiguration<T> {\n    this.propertyBuilder.wrappers(wrappers);\n    return this;\n  }\n\n  hideExpression(expression: boolean | string | ((model: T, formState: any) => boolean)): this {\n    this.propertyBuilder.hideExpression(expression);\n    return this;\n  }\n\n  newItemFactory(fn: () => T): DetailFormConfiguration<T> {\n    this.templateOption(o => o.newItemFactory = fn);\n    return this;\n  }\n\n  atIndex(index: number): this {\n    this.propertyBuilder.atIndex(index);\n    return this;\n  }\n\n  id(id: string): this {\n    this.propertyBuilder.id(id);\n    return this;\n  }\n\n  onRemoveItem(fn: (model: T[], index: number) => Observable<boolean>): DetailFormConfiguration<T> {\n    this.templateOption(o => o.onRemoveItem = fn);\n    return this;\n  }\n}\n","import {FormlyTemplate} from './formly-template';\nimport {DropdownPropertyConfiguration, DropdownPropertyConfigurationBuilder} from './dropdown-property-configuration';\nimport {EchoField} from '../echo-field';\n\nexport interface DropdownWithEchoFieldsPropertyConfiguration<T> extends DropdownPropertyConfiguration<T> {\n  echoField(property: string, label: string, className?: string, formatInput?: (d: any) => string): this;\n\n  ddClassName(className: string): this;\n}\n\nexport class EchoFieldConfiguration {\n  echoFields: EchoField[] = [];\n\n  add(property: string, label: string, className?: string, formatInput?: (d: any) => string): EchoFieldConfiguration {\n    this.echoFields = [...this.echoFields, {\n      property: property,\n      label: label,\n      className: className,\n      formatInput: formatInput,\n      value: undefined\n    }];\n    return this;\n  }\n}\n\nexport class DropdownWithEchoFieldsPropertyConfigurationBuilder<T> extends DropdownPropertyConfigurationBuilder<T> implements DropdownWithEchoFieldsPropertyConfiguration<T> {\n\n  constructor(fieldName: keyof T, formlyTemplate: FormlyTemplate) {\n    super(fieldName, formlyTemplate);\n  }\n\n  ddClassName(className: string): this {\n    this.templateOption(x => x.ddClassName = className);\n    return this;\n  }\n\n  echoField(property: string, label: string, className?: string, formatInput?: (d: any) => string): this {\n    const builder = new EchoFieldConfiguration();\n    builder.add(property, label, className, formatInput);\n\n    let echoFields: EchoField[] = this.props.echoFields ?? [];\n    echoFields = [...echoFields, ...builder.echoFields];\n    this.templateOption(o => o.echoFields = echoFields);\n\n    return this;\n  }\n}\n\n","import { DropdownPropertyConfiguration, DropdownPropertyConfigurationBuilder } from './dropdown-property-configuration';\r\n\r\nexport interface AutocompletePropertyConfiguration<T> extends DropdownPropertyConfiguration<T> {\r\n\r\n  minSearchLength(minSearchLength: number): this;\r\n\r\n  showDropdown(show?: boolean): this;\r\n\r\n  delay(delay: number): this;\r\n\r\n  forceSelection(forceSelection: boolean): this;\r\n}\r\n\r\nexport class AutocompletePropertyConfigurationBuilder<T> extends DropdownPropertyConfigurationBuilder<T> implements AutocompletePropertyConfiguration<T> {\r\n\r\n  minSearchLength(minSearchLength: number): this {\r\n    this.templateOption(o => o.minLength = minSearchLength);\r\n    return this;\r\n  }\r\n\r\n  showDropdown(show?: boolean): this {\r\n    if (show === undefined) show = true;\r\n    this.templateOption(o => o.dropdown = show);\r\n    return this;\r\n  }\r\n\r\n  delay(delay: number): this {\r\n    this.templateOption(o => o.delay = delay);\r\n    return this;\r\n  }\r\n\r\n  forceSelection(forceSelection: boolean): this {\r\n    this.templateOption(o => o.forceSelection = forceSelection);\r\n    return  this;\r\n  }\r\n}\r\n","import { FloydFormlyConfigurationBuilder } from './floyd-formly-configuration';\nimport { FormlyTemplate } from './formly-template';\nimport { FloydFormlyFieldProps, PropertyConfigurationBuilder } from './property-configuration';\n\nexport interface FieldGroupConfiguration<T> {\n  fields(config: (fields: FloydFormlyConfiguration<T>) => FloydFormlyConfiguration<T>): FieldGroupConfiguration<T>;\n\n  wrappers(wrappers: string[]): FieldGroupConfiguration<T>;\n\n  template(template: string): FieldGroupConfiguration<T>;\n\n  className(className: string): FieldGroupConfiguration<T>;\n\n  fieldGroupClassName(className: string): FieldGroupConfiguration<T>;\n\n  templateOption(option: (o: FloydFormlyFieldProps) => void): FieldGroupConfiguration<T>;\n\n  hideExpression(expression: boolean | string | ((model: T, formState: any) => boolean)): this;\n\n  id(id: string): this;\n\n  atIndex(index: number): this;\n\n  if(ifFn: () => boolean, config: (c: this) => this): this;\n}\n\nexport class FieldGroupConfigurationBuilder<T> implements FieldGroupConfiguration<T> {\n\n  protected parent: FloydFormlyConfigurationBuilder<T>;\n  protected innerFormBuilder: FloydFormlyConfigurationBuilder<T>;\n  protected propertyBuilder: PropertyConfigurationBuilder<T>;\n\n  constructor(parent: FloydFormlyConfigurationBuilder<T>, innerFormBuilder: FloydFormlyConfigurationBuilder<T>) {\n    this.parent = parent;\n    this.innerFormBuilder = innerFormBuilder;\n    this.propertyBuilder = new PropertyConfigurationBuilder<T>();\n    this.propertyBuilder.initializeAsFormGroup(parent, innerFormBuilder);\n  }\n\n  public get fieldId(): string | undefined {\n    return this.propertyBuilder.fieldId;\n  }\n\n  getConfiguration(): PropertyConfigurationBuilder<T> {\n    return this.propertyBuilder;\n  }\n\n  fields(config: (fields: FloydFormlyConfiguration<T>) => FloydFormlyConfiguration<T>): FieldGroupConfiguration<T> {\n    config(this.innerFormBuilder as unknown as FloydFormlyConfiguration<T>);\n    return this;\n  }\n\n  wrappers(wrappers: string[]): FieldGroupConfiguration<T> {\n    this.propertyBuilder.wrappers(wrappers);\n    return this;\n  }\n\n  template(template: string): FieldGroupConfiguration<T> {\n    this.propertyBuilder.formlyTemplate = template as FormlyTemplate;\n    return this;\n  }\n\n  className(className: string): FieldGroupConfiguration<T> {\n    this.propertyBuilder.className(className);\n    return this;\n  }\n\n  fieldGroupClassName(className: string): FieldGroupConfiguration<T> {\n    this.propertyBuilder.fieldGroupClassName(className);\n    return this;\n  }\n\n  templateOption(option: (o: FloydFormlyFieldProps) => void): FieldGroupConfiguration<T> {\n    this.propertyBuilder.templateOption(option);\n    return this;\n  }\n\n  hideExpression(expression: boolean | string | ((model: T, formState: any) => boolean)): this {\n    this.propertyBuilder.hideExpression(expression);\n    return this;\n  }\n\n  atIndex(index: number): this {\n    this.propertyBuilder.atIndex(index);\n    return this;\n  }\n\n  id(id: string): this {\n    this.propertyBuilder.id(id);\n    return this;\n  }\n\n  if(ifFn: () => boolean, config: (c: this) => this): this {\n    if (ifFn()) {\n      config(this);\n    }\n    return this;\n  }\n}\n","import { FloydFormlyConfigurationBuilder } from './floyd-formly-configuration';\nimport { FloydFormlyFieldProps, PropertyConfigurationBuilder } from './property-configuration';\nimport { FormlyTemplate } from './formly-template';\n\nexport interface ExtensionFormConfiguration<T> {\n  fields(config: (fields: FloydFormlyConfiguration<T>) => FloydFormlyConfiguration<T>): ExtensionFormConfiguration<T>;\n\n  wrappers(wrappers: string[]): ExtensionFormConfiguration<T>;\n\n  template(template: string): ExtensionFormConfiguration<T>;\n\n  fieldGroupClassName(fieldGroupClassName: string): ExtensionFormConfiguration<T>;\n\n  className(fieldGroupClassName: string): ExtensionFormConfiguration<T>;\n\n  templateOption(option: (o: FloydFormlyFieldProps) => void): ExtensionFormConfiguration<T>;\n\n  hideExpression(expression: boolean | string | ((model: T, formState: any) => boolean)): this;\n\n  id(id: string): this;\n\n  atIndex(index: number): this;\n\n  if(ifFn: () => boolean, config: (c: this) => this): this;\n}\n\nexport class ExtensionFormConfigurationBuilder<T> implements ExtensionFormConfiguration<T> {\n  protected parent: FloydFormlyConfigurationBuilder<any>;\n  protected innerFormBuilder: FloydFormlyConfigurationBuilder<T>;\n  protected propertyBuilder: PropertyConfigurationBuilder<T>;\n\n  constructor(fieldName: string, parent: FloydFormlyConfigurationBuilder<any>, innerFormBuilder: FloydFormlyConfigurationBuilder<T>) {\n    this.parent = parent;\n    this.innerFormBuilder = innerFormBuilder;\n    this.propertyBuilder = new PropertyConfigurationBuilder<any>(fieldName);\n    this.propertyBuilder.initializeAsFormGroup(parent, innerFormBuilder);\n  }\n\n  public get fieldName(): string | undefined {\n    return this.propertyBuilder.fieldName as string;\n  }\n\n  id(id: string): this {\n    this.propertyBuilder.id(id);\n    return this;\n  }\n\n  if(ifFn: () => boolean, config: (c: this) => this): this {\n    if (ifFn()) {\n      config(this);\n    }\n    return this;\n  }\n\n  atIndex(index: number): this {\n    this.propertyBuilder.atIndex(index);\n    return this;\n  }\n\n  getConfiguration(): PropertyConfigurationBuilder<T> {\n    return this.propertyBuilder;\n  }\n\n  fields(config: (fields: FloydFormlyConfiguration<T>) => FloydFormlyConfiguration<T>): ExtensionFormConfiguration<T> {\n    config(this.innerFormBuilder as unknown as FloydFormlyConfiguration<T>);\n    return this;\n  }\n\n  wrappers(wrappers: string[]): ExtensionFormConfiguration<T> {\n    this.propertyBuilder.wrappers(wrappers);\n    return this;\n  }\n\n  template(template: string): ExtensionFormConfiguration<T> {\n    this.propertyBuilder.formlyTemplate = template as FormlyTemplate;\n    return this;\n  }\n\n  className(className: string): ExtensionFormConfiguration<T> {\n    this.propertyBuilder.className(className);\n    return this;\n  }\n\n  fieldGroupClassName(fieldGroupClassName: string): ExtensionFormConfiguration<T> {\n    this.propertyBuilder.fieldGroupClassName(fieldGroupClassName);\n    return this;\n  }\n\n  templateOption(option: (o: FloydFormlyFieldProps) => void): ExtensionFormConfiguration<T> {\n    this.propertyBuilder.templateOption(option);\n    return this;\n  }\n\n  hideExpression(expression: boolean | string | ((model: T, formState: any) => boolean)): this {\n    this.propertyBuilder.hideExpression(expression);\n    return this;\n  }\n}\n","import { DatePropertyConfiguration, DatePropertyConfigurationBuilder } from './date-property-configuration';\r\n\r\nexport interface DateTimePropertyConfiguration<T> extends DatePropertyConfiguration<T> {\r\n  stepHour(step: number): this;\r\n\r\n  stepMinute(step: number): this;\r\n\r\n  stepSecond(step: number): this;\r\n}\r\n\r\nexport class DateTimePropertyConfigurationBuilder<T> extends DatePropertyConfigurationBuilder<T> implements DateTimePropertyConfiguration<T> {\r\n\r\n  stepHour(step: number): this {\r\n    this.templateOption(o => o.stepHour = step);\r\n    return this;\r\n  }\r\n\r\n  stepMinute(step: number): this {\r\n    this.templateOption(o => o.stepMinute = step);\r\n    return this;\r\n  }\r\n\r\n  stepSecond(step: number): this {\r\n    this.templateOption(o => o.stepSecond = step);\r\n    return this;\r\n  }\r\n}\r\n","import {FormlyFieldConfig} from '@ngx-formly/core';\r\nimport {FloydFormlyFieldConfig, PropertyConfiguration, PropertyConfigurationBuilder} from './property-configuration';\r\nimport {DropdownPropertyConfiguration, DropdownPropertyConfigurationBuilder} from './dropdown-property-configuration';\r\nimport {DatePropertyConfiguration, DatePropertyConfigurationBuilder} from './date-property-configuration';\r\nimport {FormGroup} from '@angular/forms';\r\nimport {NumberPropertyConfiguration, NumberPropertyConfigurationBuilder} from './number-property-configuration';\r\nimport {\r\n  LongStringPropertyConfiguration,\r\n  LongStringPropertyConfigurationBuilder,\r\n  StringPropertyConfiguration,\r\n  StringPropertyConfigurationBuilder\r\n} from './string-property-configuration';\r\nimport {FormlyTemplate} from './formly-template';\r\nimport {\r\n  FileUploadPropertyConfiguration,\r\n  FileUploadPropertyConfigurationBuilder\r\n} from './file-upload-property-configuration';\r\nimport {DetailFormConfiguration, DetailFormConfigurationBuilder} from './detail-form-configuration';\r\nimport {\r\n  DropdownWithEchoFieldsPropertyConfiguration,\r\n  DropdownWithEchoFieldsPropertyConfigurationBuilder\r\n} from './dropdown-with-echo-fields-property-configuration';\r\nimport {\r\n  AutocompletePropertyConfiguration,\r\n  AutocompletePropertyConfigurationBuilder,\r\n} from './autocomplete-property-configuration';\r\nimport {FieldGroupConfiguration, FieldGroupConfigurationBuilder} from './fieldgroup-configuration';\r\nimport {ExtensionFormConfiguration, ExtensionFormConfigurationBuilder} from './extension-form-configuration';\r\nimport {DateTimePropertyConfiguration, DateTimePropertyConfigurationBuilder} from './date-time-property-configuration';\r\n\r\nexport enum FormState {\r\n  New = 'New',\r\n  Edit = 'Edit',\r\n  ReadOnly = 'ReadOnly'\r\n}\r\n\r\nexport type FormlyKeyValue<TModel, ControlType> = {\r\n  [K in keyof TModel]:\r\n  TModel[K] extends ControlType | null | undefined\r\n    ? K & string\r\n    : never;\r\n}[keyof TModel];\r\n\r\nexport interface FloydFormlyConfigurationParams {\r\n  readonly form: FormGroup,\r\n  fields: FormlyFieldConfig[],\r\n}\r\n\r\ndeclare global {\r\n  export interface FloydFormlyConfiguration<T> {\r\n    form: FormGroup;\r\n\r\n    if(ifFn: () => boolean, config: (c: FloydFormlyConfiguration<T>) => FloydFormlyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    shortString(fieldName: FormlyKeyValue<T, string>, label: string, config?: (c: StringPropertyConfiguration<T>) => StringPropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    longString(fieldName: FormlyKeyValue<T, string>, label: string, config?: (c: LongStringPropertyConfiguration<T>) => LongStringPropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    date(fieldName: FormlyKeyValue<T, Date>, label: string, config?: (c: DatePropertyConfiguration<T>) => DatePropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    dateTime(fieldName: FormlyKeyValue<T, Date>, label: string, config?: (c: DateTimePropertyConfiguration<T>) => DateTimePropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    boolSelectButton(fieldName: FormlyKeyValue<T, boolean>, trueLabel: string, falseLabel: string, config?: (c: PropertyConfiguration<T>) => PropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    boolSwitch(fieldName: FormlyKeyValue<T, boolean>, label: string, config?: (c: PropertyConfiguration<T>) => PropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    dropDown(fieldName: FormlyKeyValue<T, string>, label: string, config?: (c: DropdownPropertyConfiguration<T>) => DropdownPropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    dropDownWithEchoFields(fieldName: FormlyKeyValue<T, string>, label: string, config?: (c: DropdownWithEchoFieldsPropertyConfiguration<T>) => DropdownWithEchoFieldsPropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    multiSelectDropdown(fieldName: FormlyKeyValue<T, string[]>, label: string, config?: (c: DropdownPropertyConfiguration<T>) => DropdownPropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    autoComplete(fieldName: FormlyKeyValue<T, string>, label: string, config?: (c: AutocompletePropertyConfiguration<T>) => AutocompletePropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    multiSelectAutoComplete(fieldName: FormlyKeyValue<T, string[]>, label: string, config?: (c: AutocompletePropertyConfiguration<T>) => AutocompletePropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    integer(fieldName: FormlyKeyValue<T, number>, label: string, config?: (c: NumberPropertyConfiguration<T>) => NumberPropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    money(fieldName: FormlyKeyValue<T, number>, label: string, config?: (c: NumberPropertyConfiguration<T>) => NumberPropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    decimal(fieldName: FormlyKeyValue<T, number>, label: string, config?: (c: NumberPropertyConfiguration<T>) => NumberPropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    fileUpload(fieldId: string, label: string, config?: (c: FileUploadPropertyConfiguration<T>) => FileUploadPropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    removeField(fieldOrId: keyof T | string): FloydFormlyConfiguration<T>;\r\n\r\n    modifyField<C extends PropertyConfiguration<T>>(fieldOrId: keyof T | string, config: (c: C) => C): FloydFormlyConfiguration<T>;\r\n\r\n    modifyFieldGroup(id: string, config: (c: FieldGroupConfiguration<T>) => FieldGroupConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    addField(fieldName: keyof T, label: string, formlyTemplate: string, config?: (c: PropertyConfiguration<T>) => PropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    disabledFieldsOnEdit(...fields: (keyof T)[]): FloydFormlyConfiguration<T>;\r\n\r\n    disabledFieldsOnNew(...fields: (keyof T)[]): FloydFormlyConfiguration<T>;\r\n\r\n    formState(formState: FormState): FloydFormlyConfiguration<T>;\r\n\r\n    fieldGroup(config: (c: FieldGroupConfiguration<T>) => FieldGroupConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    template(template: string, config?: (c: PropertyConfiguration<T>) => PropertyConfiguration<T>): FloydFormlyConfiguration<T>;\r\n\r\n    extensionForm<TExtension>(fieldName: FormlyKeyValue<T, TExtension>, config: (c: ExtensionFormConfiguration<TExtension>) => ExtensionFormConfiguration<TExtension>): FloydFormlyConfiguration<T>;\r\n\r\n    modifyExtensionForm<TExtension>(fieldName: FormlyKeyValue<T, TExtension>, config: (c: ExtensionFormConfiguration<TExtension>) => ExtensionFormConfiguration<TExtension>): FloydFormlyConfiguration<T>;\r\n\r\n    detailForm<TDetail>(fieldName: FormlyKeyValue<T, any[]>, config: (c: DetailFormConfiguration<TDetail>) => DetailFormConfiguration<TDetail>): FloydFormlyConfiguration<T>;\r\n\r\n    modifyDetailForm<TDetail>(fieldName: FormlyKeyValue<T, any[]>, config: (c: DetailFormConfiguration<TDetail>) => DetailFormConfiguration<TDetail>): FloydFormlyConfiguration<T>;\r\n  }\r\n}\r\n\r\nexport interface IChangesOnFn<T> {\r\n  fieldName: keyof T;\r\n  changesOnFn: () => void;\r\n}\r\n\r\nexport interface RootConfiguration<T> {\r\n  flatFields: PropertyConfigurationBuilder<T>[],\r\n  formState: FormState,\r\n  disabledFieldsOnEdit?: string[],\r\n  disabledFieldsOnNew?: string[]\r\n}\r\n\r\nexport class FloydFormlyConfigurationBuilder<T> implements Partial<FloydFormlyConfiguration<T>> {\r\n\r\n  readonly form: FormGroup;\r\n  public readonly rootConfiguration: RootConfiguration<T>;\r\n  protected readonly configuration: FloydFormlyConfigurationParams;\r\n\r\n  protected fieldGroupBuilders: FieldGroupConfigurationBuilder<T>[] = [];\r\n  protected detailFormBuilders: DetailFormConfigurationBuilder<any>[] = [];\r\n  protected extensionFormBuilders: ExtensionFormConfigurationBuilder<any>[] = [];\r\n\r\n  constructor(form?: FormGroup, rootConfiguration?: RootConfiguration<T>) {\r\n    this.rootConfiguration = rootConfiguration ?? {\r\n      flatFields: [],\r\n      formState: FormState.New,\r\n      disabledFieldsOnEdit: [],\r\n      disabledFieldsOnNew: []\r\n    };\r\n    this.form = form ?? new FormGroup({});\r\n    this.configuration = {\r\n      form: this.form,\r\n      fields: []\r\n    };\r\n  }\r\n\r\n  protected _changesOnFn: IChangesOnFn<T>[] = [];\r\n\r\n  public set changesOnFn(val: IChangesOnFn<T>) {\r\n    this._changesOnFn.push(val);\r\n  }\r\n\r\n  private _properties: PropertyConfigurationBuilder<any>[] = [];\r\n\r\n  public get properties(): PropertyConfigurationBuilder<any>[] {\r\n    return this._properties;\r\n  }\r\n\r\n  asInterface(): FloydFormlyConfiguration<T> {\r\n    return this as unknown as FloydFormlyConfiguration<T>;\r\n  }\r\n\r\n  if(ifFn: () => boolean, config: (c: FloydFormlyConfiguration<T>) => FloydFormlyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    if (ifFn()) {\r\n      config(this.asInterface());\r\n    }\r\n    return this.asInterface();\r\n  }\r\n\r\n  extensionForm<TExtension>(fieldName: FormlyKeyValue<T, TExtension>, config: (c: ExtensionFormConfiguration<TExtension>) => ExtensionFormConfiguration<TExtension>): FloydFormlyConfiguration<T> {\r\n    const builder = this.createChildBuilder<TExtension>(this.form, {\r\n      formState: this.rootConfiguration.formState,\r\n      disabledFieldsOnNew: [],\r\n      disabledFieldsOnEdit: [],\r\n      flatFields: []\r\n    });\r\n    const extensionBuilder = new ExtensionFormConfigurationBuilder<TExtension>(fieldName, this, builder as unknown as FloydFormlyConfigurationBuilder<TExtension>);\r\n    this.extensionFormBuilders = [...this.extensionFormBuilders, extensionBuilder];\r\n    config(extensionBuilder);\r\n\r\n    const configBuilder = extensionBuilder.getConfiguration();\r\n    this.addProperty(configBuilder as unknown as PropertyConfigurationBuilder<T>);\r\n    return this.asInterface();\r\n  }\r\n\r\n  modifyExtensionForm<TExtension>(fieldName: FormlyKeyValue<T, TExtension>, config: (c: ExtensionFormConfiguration<TExtension>) => ExtensionFormConfiguration<TExtension>): FloydFormlyConfiguration<T> {\r\n    const builder = this.extensionFormBuilders.find(x => x.fieldName === fieldName);\r\n    if (!builder) {\r\n      throw new Error(`ExtensionForm for ${fieldName} does not exist.`);\r\n    }\r\n    config(builder);\r\n    return this.asInterface();\r\n  }\r\n\r\n  fieldGroup(config: (c: FieldGroupConfiguration<T>) => FieldGroupConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    const builder = this.createChildBuilder<T>(this.form, this.rootConfiguration);\r\n    const fieldGroupBuilder = new FieldGroupConfigurationBuilder<T>(this, builder as unknown as FloydFormlyConfigurationBuilder<T>);\r\n    this.fieldGroupBuilders = [...this.fieldGroupBuilders, fieldGroupBuilder];\r\n    config(fieldGroupBuilder);\r\n\r\n    const configBuilder = fieldGroupBuilder.getConfiguration();\r\n    this.addProperty(configBuilder);\r\n    return this.asInterface();\r\n  }\r\n\r\n  modifyFieldGroup(id: string, config: (c: FieldGroupConfiguration<T>) => FieldGroupConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    const builder = this.fieldGroupBuilders.find(x => x.fieldId === id);\r\n    if (!builder) {\r\n      throw new Error(`FieldGroup with id ${id} does not exist.`);\r\n    }\r\n    config(builder);\r\n    return this.asInterface();\r\n  }\r\n\r\n  detailForm<TDetail>(fieldName: FormlyKeyValue<T, any[]>, config: (c: DetailFormConfiguration<TDetail>) => DetailFormConfiguration<TDetail>): FloydFormlyConfiguration<T> {\r\n    const builder = this.createChildBuilder<TDetail>(this.form, {\r\n      formState: this.rootConfiguration.formState,\r\n      disabledFieldsOnNew: [],\r\n      disabledFieldsOnEdit: [],\r\n      flatFields: []\r\n    });\r\n    const detailBuilder = new DetailFormConfigurationBuilder<TDetail>(fieldName, builder as unknown as FloydFormlyConfigurationBuilder<TDetail>);\r\n    this.detailFormBuilders = [...this.detailFormBuilders, detailBuilder];\r\n    config(detailBuilder);\r\n\r\n    const configBuilder = detailBuilder.getConfiguration();\r\n    this.addProperty(configBuilder);\r\n    return this.asInterface();\r\n  }\r\n\r\n  modifyDetailForm<TDetail>(fieldName: FormlyKeyValue<T, any[]>, config: (c: DetailFormConfiguration<TDetail>) => DetailFormConfiguration<TDetail>): FloydFormlyConfiguration<T> {\r\n    const builder = this.detailFormBuilders.find(x => x.fieldName === fieldName);\r\n    if (!builder) {\r\n      throw new Error(`DetailForm for ${fieldName} does not exist.`);\r\n    }\r\n    config(builder);\r\n    return this.asInterface();\r\n  }\r\n\r\n  disabledFieldsOnEdit(...fields: (keyof T)[]): FloydFormlyConfiguration<T> {\r\n    this.rootConfiguration.disabledFieldsOnEdit = fields.map(f => f as string);\r\n    return this.asInterface();\r\n  }\r\n\r\n  disabledFieldsOnNew(...fields: (keyof T)[]): FloydFormlyConfiguration<T> {\r\n    this.rootConfiguration.disabledFieldsOnNew = fields.map(f => f as string);\r\n    return this.asInterface();\r\n  }\r\n\r\n  formState(formState: FormState): FloydFormlyConfiguration<T> {\r\n    this.rootConfiguration.formState = formState;\r\n    return this.asInterface();\r\n  }\r\n\r\n  getConfiguration(): FloydFormlyConfigurationParams {\r\n\r\n    this._changesOnFn.forEach(fn => {\r\n      this.rootConfiguration.flatFields.find(x => x.fieldName === fn.fieldName)?.onChange(fn.changesOnFn);\r\n    });\r\n\r\n    this.configuration.fields = this._properties.map(p => {\r\n      p.props.disabledFn = p.expressions['props.disabled'] as (m: T) => boolean;\r\n      p.props.disabledInitial = !!p.props?.disabled;\r\n\r\n      p.expressions['props.disabled'] = (field: FloydFormlyFieldConfig) => {\r\n        field.props = field.props ?? {};\r\n        let formState = field.options?.formState;\r\n        formState = (typeof formState === 'string') ? formState : this.rootConfiguration.formState;\r\n        const disabled = !!field.props.disabledInitial\r\n          || !!(field.props.disabledFn && field.props.disabledFn(field.model))\r\n          || this.calculateDisabled(field.key as string, formState);\r\n        return disabled;\r\n      };\r\n      return p.getConfiguration();\r\n    });\r\n\r\n    return this.configuration;\r\n  }\r\n\r\n  removeField(fieldOrId: keyof T | string): FloydFormlyConfiguration<T> {\r\n    this._properties = this._properties.filter(value => value.fieldName !== fieldOrId && value.fieldId !== fieldOrId);\r\n    this.rootConfiguration.flatFields = this.rootConfiguration.flatFields.filter(value => value.fieldName !== fieldOrId && value.fieldId !== fieldOrId);\r\n    return (this as unknown) as FloydFormlyConfiguration<T>;\r\n  }\r\n\r\n  modifyField<C extends PropertyConfiguration<T>>(fieldOrId: keyof T | string, config: (c: C) => C): FloydFormlyConfiguration<T> {\r\n    const fieldConfig = this._properties.find(x => x.fieldName === fieldOrId || x.fieldId === fieldOrId);\r\n    if (!fieldConfig) {\r\n      throw new Error(`Field ${fieldOrId as string} does not exist.`);\r\n    }\r\n    config(fieldConfig as unknown as C);\r\n    return (this as unknown) as FloydFormlyConfiguration<T>;\r\n  }\r\n\r\n  template(template: string, config?: (c: PropertyConfiguration<T>) => PropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    const configBuilder = new PropertyConfigurationBuilder<T>();\r\n    configBuilder.template(template);\r\n    return this.add(configBuilder, undefined, config);\r\n  }\r\n\r\n  addField(fieldName: keyof T, label: string, formlyTemplate: string, config?: (c: PropertyConfiguration<T>) => PropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new PropertyConfigurationBuilder<T>(fieldName, formlyTemplate as FormlyTemplate), label, config);\r\n  }\r\n\r\n  date(fieldName: FormlyKeyValue<T, Date>, label: string, config?: (c: DatePropertyConfiguration<T>) => DatePropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new DatePropertyConfigurationBuilder<T>(fieldName, 'Date'), label, config);\r\n  }\r\n\r\n  dateTime(fieldName: FormlyKeyValue<T, Date>, label: string, config?: (c: DateTimePropertyConfiguration<T>) => DateTimePropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new DateTimePropertyConfigurationBuilder<T>(fieldName, 'DateTime'), label, config);\r\n  }\r\n\r\n  boolSelectButton(fieldName: FormlyKeyValue<T, boolean>, trueLabel: string, falseLabel: string, config?: (c: PropertyConfiguration<T>) => PropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    const builder = new PropertyConfigurationBuilder<T>(fieldName, 'BoolSelectButton');\r\n    builder\r\n    .templateOption(o => o.trueLabel = trueLabel)\r\n    .templateOption(o => o.falseLabel = falseLabel);\r\n    return this.add(builder, undefined, config);\r\n  }\r\n\r\n  boolSwitch(fieldName: FormlyKeyValue<T, boolean>, label: string, config?: (c: PropertyConfiguration<T>) => PropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new PropertyConfigurationBuilder<T>(fieldName, 'BoolSwitch'), label, config);\r\n  }\r\n\r\n  dropDown(fieldName: FormlyKeyValue<T, string>, label: string, config?: (c: DropdownPropertyConfiguration<T>) => DropdownPropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new DropdownPropertyConfigurationBuilder<T>(fieldName, 'Dropdown'), label, config);\r\n  }\r\n\r\n  multiSelectDropdown(fieldName: FormlyKeyValue<T, string[]>, label: string, config?: (c: DropdownPropertyConfiguration<T>) => DropdownPropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new DropdownPropertyConfigurationBuilder<T>(fieldName, 'MultiSelectDropdown'), label, config);\r\n  }\r\n\r\n  dropDownWithEchoFields(fieldName: FormlyKeyValue<T, string>, label: string, config?: (c: DropdownWithEchoFieldsPropertyConfiguration<T>) => DropdownWithEchoFieldsPropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new DropdownWithEchoFieldsPropertyConfigurationBuilder<T>(fieldName, 'DropdownWithEchoFields'), label, config);\r\n  }\r\n\r\n  fileUpload(fieldId: string, label: string, config?: (c: FileUploadPropertyConfiguration<T>) => FileUploadPropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new FileUploadPropertyConfigurationBuilder<T>(fieldId, 'FileUpload'), label, config);\r\n  }\r\n\r\n  autoComplete(fieldName: FormlyKeyValue<T, string>, label: string, config?: (c: AutocompletePropertyConfiguration<T>) => AutocompletePropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new AutocompletePropertyConfigurationBuilder<T>(fieldName, 'AutoComplete'), label, config);\r\n  }\r\n\r\n  multiSelectAutoComplete(fieldName: FormlyKeyValue<T, string[]>, label: string, config?: (c: AutocompletePropertyConfiguration<T>) => AutocompletePropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new AutocompletePropertyConfigurationBuilder<T>(fieldName, 'MultiSelectAutoComplete'), label, config);\r\n  }\r\n\r\n  shortString(fieldName: FormlyKeyValue<T, string>, label: string, config?: (c: StringPropertyConfiguration<T>) => StringPropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new StringPropertyConfigurationBuilder<T>(fieldName, 'ShortString'), label, config);\r\n  }\r\n\r\n  longString(fieldName: FormlyKeyValue<T, string>, label: string, config?: (c: LongStringPropertyConfiguration<T>) => LongStringPropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    return this.add(new LongStringPropertyConfigurationBuilder<T>(fieldName, 'LongString'), label, config);\r\n  }\r\n\r\n  integer(fieldName: FormlyKeyValue<T, number>, label: string, config?: (c: NumberPropertyConfiguration<T>) => NumberPropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    const builder = new NumberPropertyConfigurationBuilder<T>(fieldName, 'Number');\r\n    builder.fractionDigits(null, null);\r\n    builder.max(2147483647);\r\n    return this.add(builder, label, config);\r\n  }\r\n\r\n  money(fieldName: FormlyKeyValue<T, number>, label: string, config?: (c: NumberPropertyConfiguration<T>) => NumberPropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    const builder = new NumberPropertyConfigurationBuilder<T>(fieldName, 'Number');\r\n    builder.fractionDigits(2, 2);\r\n    builder.max(922337203685477);\r\n    return this.add(builder, label, config);\r\n  }\r\n\r\n  decimal(fieldName: FormlyKeyValue<T, number>, label: string, config?: (c: NumberPropertyConfiguration<T>) => NumberPropertyConfiguration<T>): FloydFormlyConfiguration<T> {\r\n    const builder = new NumberPropertyConfigurationBuilder<T>(fieldName, 'Number');\r\n    builder.fractionDigits(4, 4);\r\n    builder.max(922337203685477);\r\n    return this.add(builder, label, config);\r\n  }\r\n\r\n  protected add<C extends PropertyConfiguration<T>, B extends PropertyConfigurationBuilder<T>>(configBuilder: B, label?: string, config?: (c: C) => C) {\r\n    configBuilder.initialize(this);\r\n\r\n    if (label) {\r\n      configBuilder.label(label);\r\n    }\r\n    if (config) {\r\n      config((configBuilder as unknown) as C);\r\n    }\r\n    this.addProperty(configBuilder);\r\n    return this.asInterface();\r\n  }\r\n\r\n  protected addProperty(configBuilder: PropertyConfigurationBuilder<T>): void {\r\n    if (configBuilder.index !== undefined && configBuilder.index < this.properties.length) {\r\n      const props = [...this.properties];\r\n      props.splice(configBuilder.index, 0, configBuilder);\r\n      this._properties = props;\r\n    } else {\r\n      this._properties = [...this._properties, configBuilder];\r\n    }\r\n    this.rootConfiguration.flatFields = [...this.rootConfiguration.flatFields, configBuilder];\r\n  }\r\n\r\n  protected createChildBuilder<TModel>(form: FormGroup, rootConfiguration: RootConfiguration<TModel>): FloydFormlyConfiguration<TModel> {\r\n    return new FloydFormlyConfigurationBuilder<TModel>(form, rootConfiguration).asInterface();\r\n  }\r\n\r\n  private calculateDisabled(fieldName: string, formState: FormState): boolean {\r\n    switch (formState) {\r\n      case FormState.New:\r\n        if (!this.rootConfiguration.disabledFieldsOnNew)\r\n          return false;\r\n        return this.rootConfiguration.disabledFieldsOnNew.includes(fieldName);\r\n      case FormState.Edit:\r\n        if (!this.rootConfiguration.disabledFieldsOnEdit)\r\n          return false;\r\n        return this.rootConfiguration.disabledFieldsOnEdit.includes(fieldName);\r\n      case FormState.ReadOnly:\r\n        return true;\r\n    }\r\n  }\r\n}\r\n","import {ChangeDetectionStrategy, Component, Inject, Input} from '@angular/core';\r\nimport { FieldArrayType, FormlyModule } from '@ngx-formly/core';\r\nimport {FLOYD_UI_CONFIG} from '@ngx-floyd/core-ui';\r\nimport {FormState} from './../../configuration/floyd-formly-configuration';\r\nimport {Observable} from 'rxjs/internal/Observable';\r\nimport {take} from 'rxjs/operators';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { NgIf, NgFor } from '@angular/common';\r\n\r\n@Component({\r\n    selector: 'ngx-floyd-detail-form-template',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    templateUrl: 'detail-form-template.component.html',\r\n    styleUrls: ['detail-form-template.component.scss'],\r\n    standalone: true,\r\n    imports: [NgIf, NgFor, FormlyModule, ButtonModule, RippleModule, DividerModule]\r\n})\r\nexport class DetailFormTemplateComponent extends FieldArrayType {\r\n  @Input() trashIcon: string;\r\n  @Input() plusIcon: string;\r\n\r\n  readonly readOnlyState = FormState.ReadOnly;\r\n\r\n  constructor(@Inject(FLOYD_UI_CONFIG) private floydUiConfig: FloydUiConfig) {\r\n    super();\r\n    this.trashIcon = this.floydUiConfig.icons.trashIcon;\r\n    this.plusIcon = this.floydUiConfig.icons.plusIcon;\r\n  }\r\n\r\n  removeItem(index: number): void {\r\n    const onRemoveItem = this.props.onRemoveItem as ((model: any[], index: number) => Observable<boolean>);\r\n    if (onRemoveItem) {\r\n      onRemoveItem(this.model, index).pipe(take(1)).subscribe(value => {\r\n        if (value) this.remove(index);\r\n      });\r\n    } else {\r\n      this.remove(index);\r\n    }\r\n  }\r\n}\r\n","<ng-container *ngIf='props?.inlineForm'>\n  <div *ngFor='let field of field.fieldGroup; let i = index;' class='detail-form grid'>\n    <div class='col'>\n      <formly-field [field]='field'></formly-field>\n    </div>\n    <div class='col-fixed'>\n      <button (click)='removeItem(i)' *ngIf='formState !== readOnlyState  && !props?.disabled' [icon]='trashIcon'\n              [label]='props.removeText'\n              class='p-button-text p-button-danger'\n              pButton pRipple type='button'></button>\n    </div>\n  </div>\n</ng-container>\n\n<ng-container *ngIf='!props.inlineForm'>\n  <div *ngFor='let field of field.fieldGroup; let i = index;' class='detail-form'>\n    <formly-field [field]='field' class='col'></formly-field>\n    <button (click)='removeItem(i)' *ngIf='formState !== readOnlyState && !props.disabled' [icon]='trashIcon'\n            [label]='props.removeText'\n            class='p-button-text p-button-danger p-detail-form-button'\n            pButton pRipple type='button'></button>\n    <p-divider></p-divider>\n  </div>\n</ng-container>\n\n<button (click)='add(undefined, props.newItemFactory !== undefined ? props.newItemFactory() : {})'\n        *ngIf='formState !== readOnlyState && !props.disabled'\n        [icon]='plusIcon'\n        [label]='props.addText'\n        class='p-button-text p-detail-form-button'\n        pButton pRipple type='button'></button>\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewChild } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { LookupDataSource } from '@ngx-floyd/core';\r\nimport { initializeDataSource } from '../../api';\r\nimport { EchoField } from '../../echo-field';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { FloydFieldType } from '../../floydFieldType';\r\nimport { DropdownComponent, ShortStringComponent } from '@ngx-floyd/forms';\r\nimport { NgFor } from '@angular/common';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\n\r\n@Component({\r\n  selector: 'dropdown-with-echo-fields-template',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <div class='formgrid grid'>\r\n      <div class='{{props.ddClassName}} field'>\r\n        <f-dropdown ngDefaultControl [formControl]='formControl' [formlyAttributes]='field' [label]='props.label'\r\n                    [hidden]='props.hidden'\r\n                    [readOnly]='props.readonly ?? false'\r\n                    [dataSource]='props.dataSource'\r\n                    [isRequired]='props.required !== undefined ? props.required : false'\r\n                    [dropdownColumns]='props.dropdownColumns ?? []'\r\n                    [panelStyleClass]='props.panelClassName'\r\n        ></f-dropdown>\r\n      </div>\r\n      <div *ngFor='let echoField of props.echoFields' class='{{echoField.className}} field'>\r\n        <f-short-string [(ngModel)]='echoField.value' [disabled]='true' [label]='echoField.label'></f-short-string>\r\n      </div>\r\n    </div>`,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DropdownWithEchoFieldsTemplateComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  standalone: true,\r\n  imports: [DropdownComponent, FormsModule, ReactiveFormsModule, FormlyModule, NgFor, ShortStringComponent]\r\n})\r\nexport class DropdownWithEchoFieldsTemplateComponent extends FloydFieldType {\r\n\r\n  private destroy$$ = new Subject<void>();\r\n  @ViewChild(DropdownComponent) innerComponent!: DropdownComponent;\r\n\r\n  override ngOnInit(): void {\r\n    super.ngOnInit();\r\n    this.props.dataSource = initializeDataSource(this) as LookupDataSource;\r\n    const dataSource = this.props.dataSource as LookupDataSource;\r\n\r\n    dataSource.data$.pipe(takeUntil(this.destroy$$)).subscribe(x => {\r\n        const selectedObject = x.find((d: any) => d.ID == this.formControl.value);\r\n        this.setEchoFields(selectedObject);\r\n      }\r\n    );\r\n\r\n    this.formControl.valueChanges.pipe(takeUntil(this.destroy$$)).subscribe(x => {\r\n      const selectedObject = dataSource.currentData().find(row => row.ID == x);\r\n      this.setEchoFields(selectedObject);\r\n    });\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    this.destroy$$.next();\r\n    this.destroy$$.complete();\r\n    delete this.props.dataSource;\r\n  }\r\n\r\n  setEchoFields(selectedObject: any): void {\r\n    for (let i = 0; i < this.props?.echoFields.length; i++) {\r\n      const echoField = this.props?.echoFields[i] as EchoField;\r\n\r\n      if (selectedObject == null) {\r\n        echoField.value = null;\r\n        continue;\r\n      }\r\n\r\n      if (echoField.formatInput)\r\n        echoField.value = echoField.formatInput(selectedObject[echoField.property]);\r\n      else\r\n        echoField.value = selectedObject[echoField.property];\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { ShortStringTemplateComponent } from './templates/short-string-template/short-string-template.component';\nimport { DateTemplateComponent } from './templates/date-template/date-template.component';\nimport { BoolSelectButtonTemplateComponent } from './templates/bool-select-button-template/bool-select-button-template.component';\nimport { DropdownTemplateComponent } from './templates/dropdown-template/dropdown-template.component';\nimport { BoolSwitchTemplateComponent } from './templates/bool-switch-template/bool-switch-template.component';\nimport { DateTimeTemplateComponent } from './templates/date-time-template/date-time-template.component';\nimport { MultiselectDropdownTemplateComponent } from './templates/multiselect-dropdown-template/multiselect-dropdown-template.component';\nimport { AutoCompleteTemplateComponent } from './templates/auto-complete-template/auto-complete-template.component';\nimport { MultiselectAutoCompleteTemplateComponent } from './templates/multiselect-auto-complete-template/multiselect-auto-complete-template.component';\nimport { NumberTemplateComponent } from './templates/number-template/number-template.component';\nimport { LongStringTemplateComponent } from './templates/long-string-template/long-string-template.component';\nimport { FieldWrapperComponent } from './wrappers/field-wrapper.component';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FileUploadTemplateComponent } from './templates/file-upload-template/file-upload-template.component';\nimport { DetailFormTemplateComponent } from './templates/detail-form-template/detail-form-template.component';\nimport { DropdownWithEchoFieldsTemplateComponent } from './templates/dropdown-with-echo-fields/dropdown-with-echo-fields-template.component';\nimport { formatNumberFieldValue } from './api';\n\n@NgModule({\n  exports: [\n    ShortStringTemplateComponent,\n    FieldWrapperComponent,\n    DateTemplateComponent,\n    DateTimeTemplateComponent,\n    BoolSelectButtonTemplateComponent,\n    BoolSwitchTemplateComponent,\n    DropdownTemplateComponent,\n    MultiselectDropdownTemplateComponent,\n    AutoCompleteTemplateComponent,\n    MultiselectAutoCompleteTemplateComponent,\n    FileUploadTemplateComponent,\n    DropdownWithEchoFieldsTemplateComponent,\n    NumberTemplateComponent,\n    LongStringTemplateComponent,\n    DetailFormTemplateComponent\n  ],\n  imports: [\n    FormlyModule.forChild({\n      extras: { lazyRender: true },\n      wrappers: [\n        { name: 'default', component: FieldWrapperComponent }\n      ],\n      types: [\n        { name: 'ShortString', component: ShortStringTemplateComponent },\n        { name: 'LongString', component: LongStringTemplateComponent },\n        { name: 'Date', component: DateTemplateComponent },\n        { name: 'DateTime', component: DateTimeTemplateComponent },\n        { name: 'BoolSelectButton', component: BoolSelectButtonTemplateComponent },\n        { name: 'BoolSwitch', component: BoolSwitchTemplateComponent },\n        { name: 'Dropdown', component: DropdownTemplateComponent },\n        { name: 'MultiSelectDropdown', component: MultiselectDropdownTemplateComponent },\n        { name: 'FileUpload', component: FileUploadTemplateComponent },\n        { name: 'DropdownWithEchoFields', component: DropdownWithEchoFieldsTemplateComponent },\n        { name: 'AutoComplete', component: AutoCompleteTemplateComponent },\n        { name: 'MultiSelectAutoComplete', component: MultiselectAutoCompleteTemplateComponent },\n        { name: 'Number', component: NumberTemplateComponent },\n        { name: 'DetailForm', component: DetailFormTemplateComponent }\n      ],\n      validationMessages: [\n        { name: 'required', message: 'Podatak je obavezan.' },\n        {\n          name: 'pattern',\n          message: (err, field) => field.props?.patternValidationMessage ?? 'Podatak nije ispravan.'\n        },\n        { name: 'min', message: (err, field) => `Minimalna dozvoljena vrijednost je ${formatNumberFieldValue(field.props?.min, field)}.` },\n        { name: 'max', message: (err, field) => `Maksimalna dozvoljena vrijednost je ${formatNumberFieldValue(field.props?.max, field)}.` }\n      ]\n    }),\n    ShortStringTemplateComponent,\n    FieldWrapperComponent,\n    DateTemplateComponent,\n    DateTimeTemplateComponent,\n    BoolSelectButtonTemplateComponent,\n    BoolSwitchTemplateComponent,\n    DropdownTemplateComponent,\n    MultiselectDropdownTemplateComponent,\n    AutoCompleteTemplateComponent,\n    MultiselectAutoCompleteTemplateComponent,\n    FileUploadTemplateComponent,\n    DropdownWithEchoFieldsTemplateComponent,\n    NumberTemplateComponent,\n    LongStringTemplateComponent,\n    DetailFormTemplateComponent\n  ]\n})\nexport class FloydFormsFormlyModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}