@stemy/ngx-dynamic-form 19.1.14 → 19.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/fesm2022/stemy-ngx-dynamic-form-ui-nebular.mjs +4 -4
  2. package/fesm2022/stemy-ngx-dynamic-form-ui-nebular.mjs.map +1 -1
  3. package/fesm2022/stemy-ngx-dynamic-form.mjs +858 -1661
  4. package/fesm2022/stemy-ngx-dynamic-form.mjs.map +1 -1
  5. package/ngx-dynamic-form/common-types.d.ts +109 -26
  6. package/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.d.ts +21 -0
  7. package/ngx-dynamic-form/components/dynamic-form-array/dynamic-form-array.component.d.ts +9 -0
  8. package/ngx-dynamic-form/components/dynamic-form-chips/dynamic-form-chips.component.d.ts +7 -0
  9. package/ngx-dynamic-form/components/dynamic-form-field/dynamic-form-field.component.d.ts +6 -0
  10. package/ngx-dynamic-form/components/dynamic-form-fieldset/dynamic-form-fieldset.component.d.ts +7 -0
  11. package/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.d.ts +6 -0
  12. package/ngx-dynamic-form/components/dynamic-form-upload/dynamic-form-upload.component.d.ts +7 -0
  13. package/ngx-dynamic-form/directives/async-submit.directive.d.ts +17 -23
  14. package/ngx-dynamic-form/ngx-dynamic-form.imports.d.ts +5 -9
  15. package/ngx-dynamic-form/ngx-dynamic-form.module.d.ts +13 -11
  16. package/ngx-dynamic-form/services/dynamic-form-builder.service.d.ts +27 -0
  17. package/ngx-dynamic-form/services/dynamic-form.service.d.ts +28 -46
  18. package/ngx-dynamic-form/utils/customizer.d.ts +5 -12
  19. package/ngx-dynamic-form/utils/decorators.d.ts +10 -0
  20. package/ngx-dynamic-form/utils/misc.d.ts +2 -4
  21. package/ngx-dynamic-form/utils/validation.d.ts +13 -0
  22. package/package.json +21 -16
  23. package/public_api.d.ts +13 -18
  24. package/ui-nebular/index.d.ts +1 -5
  25. package/common-types.d.ts +0 -37
  26. package/components/base/dynamic-base-form-array.component.d.ts +0 -38
  27. package/components/base/dynamic-base-form-control-container.component.d.ts +0 -39
  28. package/components/base/dynamic-base-form-control.component.d.ts +0 -26
  29. package/components/base/dynamic-base-form-group.component.d.ts +0 -25
  30. package/components/base/dynamic-base-form.component.d.ts +0 -46
  31. package/components/base/dynamic-base-select.component.d.ts +0 -15
  32. package/directives/async-submit.directive.d.ts +0 -31
  33. package/esm2020/ngx-dynamic-form/common-types.mjs +0 -2
  34. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-array.component.mjs +0 -104
  35. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.mjs +0 -127
  36. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-control.component.mjs +0 -57
  37. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-group.component.mjs +0 -75
  38. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form.component.mjs +0 -182
  39. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-select.component.mjs +0 -66
  40. package/esm2020/ngx-dynamic-form/directives/async-submit.directive.mjs +0 -116
  41. package/esm2020/ngx-dynamic-form/ngx-dynamic-form.imports.mjs +0 -26
  42. package/esm2020/ngx-dynamic-form/ngx-dynamic-form.module.mjs +0 -116
  43. package/esm2020/ngx-dynamic-form/services/dynamic-form.service.mjs +0 -615
  44. package/esm2020/ngx-dynamic-form/utils/creators.mjs +0 -67
  45. package/esm2020/ngx-dynamic-form/utils/customizer.mjs +0 -28
  46. package/esm2020/ngx-dynamic-form/utils/dynamic-editor.model.mjs +0 -14
  47. package/esm2020/ngx-dynamic-form/utils/dynamic-form-array.model.mjs +0 -128
  48. package/esm2020/ngx-dynamic-form/utils/dynamic-form-group.model.mjs +0 -26
  49. package/esm2020/ngx-dynamic-form/utils/dynamic-select.model.mjs +0 -59
  50. package/esm2020/ngx-dynamic-form/utils/form-select-subject.mjs +0 -26
  51. package/esm2020/ngx-dynamic-form/utils/form-subject.mjs +0 -29
  52. package/esm2020/ngx-dynamic-form/utils/misc.mjs +0 -47
  53. package/esm2020/ngx-dynamic-form/utils/validation-errors.mjs +0 -22
  54. package/esm2020/ngx-dynamic-form/utils/validators.mjs +0 -56
  55. package/esm2020/public_api.mjs +0 -21
  56. package/esm2020/stemy-ngx-dynamic-form.mjs +0 -5
  57. package/fesm2015/stemy-ngx-dynamic-form.mjs +0 -1927
  58. package/fesm2015/stemy-ngx-dynamic-form.mjs.map +0 -1
  59. package/fesm2020/stemy-ngx-dynamic-form.mjs +0 -1893
  60. package/fesm2020/stemy-ngx-dynamic-form.mjs.map +0 -1
  61. package/fesm2022/stemy-ngx-dynamic-form-src-ngx-dynamic-form-nebular.mjs +0 -50
  62. package/fesm2022/stemy-ngx-dynamic-form-src-ngx-dynamic-form-nebular.mjs.map +0 -1
  63. package/imports.d.ts +0 -12
  64. package/ngx-dynamic-form/components/base/dynamic-base-form-array.component.d.ts +0 -38
  65. package/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.d.ts +0 -39
  66. package/ngx-dynamic-form/components/base/dynamic-base-form-control.component.d.ts +0 -26
  67. package/ngx-dynamic-form/components/base/dynamic-base-form-group.component.d.ts +0 -25
  68. package/ngx-dynamic-form/components/base/dynamic-base-form.component.d.ts +0 -46
  69. package/ngx-dynamic-form/components/base/dynamic-base-select.component.d.ts +0 -15
  70. package/ngx-dynamic-form/services/dynamic-form-layout.service.d.ts +0 -7
  71. package/ngx-dynamic-form/utils/creators.d.ts +0 -18
  72. package/ngx-dynamic-form/utils/dynamic-editor.model.d.ts +0 -11
  73. package/ngx-dynamic-form/utils/dynamic-form-array.model.d.ts +0 -69
  74. package/ngx-dynamic-form/utils/dynamic-form-group.model.d.ts +0 -14
  75. package/ngx-dynamic-form/utils/dynamic-select.model.d.ts +0 -39
  76. package/ngx-dynamic-form/utils/form-select-subject.d.ts +0 -6
  77. package/ngx-dynamic-form/utils/form-subject.d.ts +0 -10
  78. package/ngx-dynamic-form/utils/validators.d.ts +0 -8
  79. package/ngx-dynamic-form.imports.d.ts +0 -12
  80. package/ngx-dynamic-form.module.d.ts +0 -21
  81. package/services/dynamic-form.service.d.ts +0 -61
  82. package/src/ngx-dynamic-form/nebular/imports.d.ts +0 -4
  83. package/src/ngx-dynamic-form/nebular/index.d.ts +0 -5
  84. package/src/ngx-dynamic-form/nebular/ngx-dynamic-form.nebular.module.d.ts +0 -9
  85. package/src/ngx-dynamic-form/nebular/public_api.d.ts +0 -1
  86. package/stemy-ngx-dynamic-form.d.ts +0 -5
  87. package/ui-nebular/public_api.d.ts +0 -1
  88. package/utils/creators.d.ts +0 -18
  89. package/utils/customizer.d.ts +0 -14
  90. package/utils/dynamic-editor.model.d.ts +0 -11
  91. package/utils/dynamic-form-array.model.d.ts +0 -69
  92. package/utils/dynamic-form-group.model.d.ts +0 -14
  93. package/utils/dynamic-select.model.d.ts +0 -39
  94. package/utils/form-select-subject.d.ts +0 -6
  95. package/utils/form-subject.d.ts +0 -10
  96. package/utils/misc.d.ts +0 -11
  97. package/utils/validation-errors.d.ts +0 -11
  98. package/utils/validators.d.ts +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"stemy-ngx-dynamic-form.mjs","sources":["../../src/ngx-dynamic-form/utils/dynamic-editor.model.ts","../../src/ngx-dynamic-form/utils/dynamic-form-array.model.ts","../../src/ngx-dynamic-form/utils/dynamic-form-group.model.ts","../../src/ngx-dynamic-form/utils/dynamic-select.model.ts","../../src/ngx-dynamic-form/utils/creators.ts","../../src/ngx-dynamic-form/utils/misc.ts","../../src/ngx-dynamic-form/utils/customizer.ts","../../src/ngx-dynamic-form/utils/validators.ts","../../src/ngx-dynamic-form/utils/form-subject.ts","../../src/ngx-dynamic-form/utils/form-select-subject.ts","../../src/ngx-dynamic-form/utils/validation-errors.ts","../../src/ngx-dynamic-form/services/dynamic-form.service.ts","../../src/ngx-dynamic-form/directives/async-submit.directive.ts","../../src/ngx-dynamic-form/components/base/dynamic-base-form.component.ts","../../src/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.ts","../../src/ngx-dynamic-form/components/base/dynamic-base-form-array.component.ts","../../src/ngx-dynamic-form/components/base/dynamic-base-form-control.component.ts","../../src/ngx-dynamic-form/components/base/dynamic-base-form-group.component.ts","../../src/ngx-dynamic-form/components/base/dynamic-base-select.component.ts","../../src/ngx-dynamic-form/ngx-dynamic-form.imports.ts","../../src/ngx-dynamic-form/ngx-dynamic-form.module.ts","../../src/stemy-ngx-dynamic-form.ts"],"sourcesContent":["import {\n DYNAMIC_FORM_CONTROL_TYPE_EDITOR,\n DynamicFormControlLayout,\n DynamicInputControlModel,\n DynamicInputControlModelConfig,\n serializable\n} from \"@ng-dynamic-forms/core\";\n\nexport interface DynamicEditorModelConfig extends DynamicInputControlModelConfig<string | Object> {\n inputType: string;\n convertObject?: boolean;\n}\n\nexport class DynamicEditorModel extends DynamicInputControlModel<string | Object> {\n\n @serializable() readonly type: string = DYNAMIC_FORM_CONTROL_TYPE_EDITOR;\n\n readonly inputType: string;\n readonly convertObject: boolean;\n\n constructor(config: DynamicEditorModelConfig, layout?: DynamicFormControlLayout) {\n super(config, layout);\n this.inputType = config.inputType || \"javascript\";\n this.convertObject = config.convertObject !== false;\n }\n}\n","import {ChangeDetectorRef, Injector} from \"@angular/core\";\nimport {FormArray} from \"@angular/forms\";\nimport {BehaviorSubject} from \"rxjs\";\nimport {\n DynamicFormArrayGroupModel as GroupBase,\n DynamicFormArrayModel as Base,\n DynamicFormArrayModelConfig as ConfigBase,\n DynamicFormControlLayout,\n DynamicFormModel\n} from \"@ng-dynamic-forms/core\";\nimport {ITimer, ObjectUtils, TimerUtils} from \"@stemy/ngx-utils\";\n\nexport type SaveTabFunc = (index: number, model: DynamicFormArrayGroupModel, arrayModel: DynamicFormArrayModel, injector: Injector) => void;\nexport type RestoreTabFunc = (arrayModel: DynamicFormArrayModel, injector: Injector) => number;\nexport type TabLabelFunc = (index: number, model: DynamicFormArrayGroupModel, arrayModel: DynamicFormArrayModel, array: FormArray, injector: Injector) => string;\n\nexport class DynamicFormArrayGroupModel extends GroupBase {\n\n get hidden(): boolean {\n return this.isHidden;\n }\n\n set hidden(value: boolean) {\n if (this.isHidden == value) return;\n this.isHidden = value || false;\n this.context?.filterGroups();\n }\n\n protected isHidden: boolean;\n\n constructor(readonly context: DynamicFormArrayModel, group: DynamicFormModel, index: number = -1) {\n super(context, group, index);\n this.isHidden = false;\n }\n}\n\nexport interface DynamicFormArrayModelConfig extends ConfigBase {\n\n groups?: DynamicFormArrayGroupModel[] | null;\n sortable?: boolean;\n useTabs?: boolean;\n saveTab?: SaveTabFunc;\n restoreTab?: RestoreTabFunc;\n getTabLabel?: TabLabelFunc;\n additional?: { [key: string]: any };\n\n addItem?: boolean;\n insertItem?: boolean;\n cloneItem?: boolean;\n moveItem?: boolean;\n removeItem?: boolean;\n clearItems?: boolean;\n}\n\nexport class DynamicFormArrayModel extends Base {\n\n readonly filteredGroups: BehaviorSubject<ReadonlyArray<DynamicFormArrayGroupModel>>;\n readonly sortable: boolean;\n readonly useTabs: boolean;\n readonly saveTab: SaveTabFunc;\n readonly restoreTab: RestoreTabFunc;\n readonly getTabLabel: TabLabelFunc;\n readonly additional: { [key: string]: any };\n\n groups: DynamicFormArrayGroupModel[] = [];\n tabIndex: number = 0;\n\n protected _sortBy: string;\n protected _sortDescending: boolean;\n protected _formArray: FormArray;\n protected _filteredGroups: ReadonlyArray<DynamicFormArrayGroupModel>;\n protected _filterTimer: ITimer;\n\n get addItem(): boolean {\n return this.config.addItem !== false;\n }\n\n get insertItem(): boolean {\n return !this._sortBy && this.config.insertItem !== false;\n }\n\n get cloneItem(): boolean {\n return this.config.cloneItem !== false;\n }\n\n get moveItem(): boolean {\n return !this._sortBy && this.config.moveItem !== false;\n }\n\n get removeItem(): boolean {\n return this.config.removeItem !== false;\n }\n\n get clearItems(): boolean {\n return this.config.clearItems !== false;\n }\n\n get sortBy(): string {\n return this._sortBy;\n }\n\n set sortBy(value: string) {\n if (!this.sortable) return;\n value = value || null;\n if (this._sortBy !== value) {\n this._sortBy = value;\n this._sortDescending = false;\n } else if (this._sortDescending) {\n this._sortBy = null;\n this._sortDescending = false;\n } else {\n this._sortDescending = true;\n }\n this.filterGroups();\n }\n\n get sortDescending(): boolean {\n return this._sortDescending;\n }\n\n get sortOrder(): string {\n return this.sortDescending ? \"desc\" : \"asc\";\n }\n\n constructor(protected config: DynamicFormArrayModelConfig, layout?: DynamicFormControlLayout) {\n super(config, layout);\n this.filteredGroups = new BehaviorSubject<ReadonlyArray<DynamicFormArrayGroupModel>>([]);\n this.sortable = config.sortable || false;\n this.useTabs = config.useTabs || false;\n this.saveTab = ObjectUtils.isFunction(config.saveTab) ? config.saveTab : ((index, model, arrayModel) => {\n arrayModel.tabIndex = index;\n });\n this.restoreTab = ObjectUtils.isFunction(config.restoreTab) ? config.restoreTab : ((model) => {\n return model.tabIndex;\n });\n this.getTabLabel = ObjectUtils.isFunction(config.getTabLabel) ? config.getTabLabel : ((index) => {\n return `${index + 1}`;\n });\n this.additional = config.additional || {};\n this.tabIndex = 0;\n this._sortBy = null;\n this._sortDescending = false;\n this._formArray = null;\n }\n\n initialize(array?: FormArray): void {\n this._formArray = array || this._formArray;\n this.filterGroups();\n }\n\n filterGroups(): void {\n this._filterTimer = this._filterTimer || TimerUtils.createTimeout();\n this._filterTimer.set(() => {\n const filtered = this.groups.filter(g => !g.hidden);\n if (this._sortBy && this._formArray) {\n const compare: (a: any, b: any) => number = this._sortDescending\n ? (a, b) => this.compareModels(b, a)\n : (a, b) => this.compareModels(a, b);\n filtered.sort(compare);\n }\n this._filteredGroups = filtered;\n this.filteredGroups.next(filtered);\n }, 100);\n }\n\n getFiltered(index: number): DynamicFormArrayGroupModel {\n return !this._filteredGroups ? null : this._filteredGroups[index];\n }\n\n insertGroup(index: number): DynamicFormArrayGroupModel {\n const group = new DynamicFormArrayGroupModel(this, this.groupFactory());\n this.groups.splice(index, 0, group);\n this.groups.forEach((g, index) => g.index = index);\n this.filterGroups();\n return group;\n }\n\n moveGroup(index: number, step: number): void {\n super.moveGroup(index, step);\n this.filterGroups();\n }\n\n removeGroup(index: number): void {\n super.removeGroup(index);\n this.filterGroups();\n }\n\n protected compareModels(a: DynamicFormArrayGroupModel, b: DynamicFormArrayGroupModel): number {\n const aGroup = this._formArray.at(a.index).get(this._sortBy)?.value || null;\n const bGroup = this._formArray.at(b.index).get(this._sortBy)?.value || null;\n return ObjectUtils.compare(aGroup, bGroup);\n }\n}\n","import {\n DynamicFormControlLayout,\n DynamicFormControlModel,\n DynamicFormGroupModel as Base,\n DynamicFormGroupModelConfig as BaseConfig,\n} from \"@ng-dynamic-forms/core\";\n\nexport interface DynamicFormFieldSet<T> {\n id: string;\n legend: string;\n fields: T[];\n}\n\nexport type DynamicFormFieldSets<T> = ReadonlyArray<DynamicFormFieldSet<T>>;\n\nexport interface DynamicFormGroupModelConfig extends BaseConfig {\n fieldSets?: DynamicFormFieldSets<string>;\n}\n\nexport class DynamicFormGroupModel extends Base {\n\n readonly groups: DynamicFormFieldSets<DynamicFormControlModel>;\n\n constructor(config: DynamicFormGroupModelConfig, layout?: DynamicFormControlLayout) {\n super(config, layout);\n const controls = [...config.group];\n const groups: DynamicFormFieldSet<DynamicFormControlModel>[] = [];\n const sets = config.fieldSets || [];\n for (const fs of sets) {\n const fields: DynamicFormControlModel[] = [];\n for (const f of fs.fields) {\n const ix = controls.findIndex(c => c.id === f);\n if (ix < 0) continue;\n fields.push(controls.splice(ix, 1)[0]);\n }\n if (fields.length === 0) continue;\n groups.push({id: fs.id, legend: fs.legend, fields});\n }\n if (controls.length > 0) {\n groups.unshift({id: \"root-controls\", legend: config.legend, fields: controls});\n }\n this.groups = groups;\n }\n}\n","import {Injector} from \"@angular/core\";\nimport {FormControl} from \"@angular/forms\";\nimport {isObservable, Observable, of} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\nimport {ObjectUtils} from \"@stemy/ngx-utils\";\nimport {\n DynamicFormControlLayout,\n DynamicFormOption as BaseOption,\n DynamicFormOptionConfig as BaseOptionConfig,\n DynamicSelectModel as Base,\n DynamicSelectModelConfig as BaseConfig,\n} from \"@ng-dynamic-forms/core\";\n\nconst ignoredKeys = [\"disabled\", \"label\", \"value\", \"classes\"];\n\nexport interface DynamicFormOptionConfig<T> extends BaseOptionConfig<T> {\n classes?: string;\n\n [key: string]: any;\n}\n\nexport class DynamicFormOption<T> extends BaseOption<T> {\n\n readonly classes: string;\n readonly props: any;\n\n constructor(config: DynamicFormOptionConfig<T>) {\n super(config);\n this.classes = config.classes || \"\";\n this.props = Object.keys(config).reduce((res, k) => {\n if (ignoredKeys.indexOf(k) >= 0) return res;\n res[k] = config[k];\n return res;\n }, {});\n }\n}\n\nexport interface DynamicFormOptionGroup<T> {\n group: string;\n options: ReadonlyArray<DynamicFormOption<T>>;\n}\n\nexport type OptionClassesFunc<T> = (option: DynamicFormOptionConfig<T>, model: DynamicSelectModel<T>, control: FormControl, injector: Injector) => string;\n\nexport interface DynamicSelectModelConfig<T> extends BaseConfig<T> {\n groupBy?: string;\n inline?: boolean;\n options?: DynamicFormOptionConfig<T>[] | Observable<DynamicFormOptionConfig<T>[]>;\n getClasses?: OptionClassesFunc<T>;\n allowEmpty?: boolean;\n}\n\nexport class DynamicSelectModel<T> extends Base<T> {\n\n readonly groupBy: string;\n readonly inline: boolean;\n readonly getClasses: OptionClassesFunc<T>;\n readonly allowEmpty: boolean;\n\n options$: Observable<DynamicFormOption<T>[]> = null;\n\n protected mOptions: DynamicFormOption<T>[] = [];\n\n constructor(config: DynamicSelectModelConfig<T>, layout?: DynamicFormControlLayout) {\n super(config, layout);\n this.groupBy = config.groupBy || null;\n this.inline = config.inline || false;\n this.getClasses = ObjectUtils.isFunction(config.getClasses) ? config.getClasses : (() => \"\");\n this.allowEmpty = config.allowEmpty || false;\n this.options = config.options;\n }\n\n set options(options: any) {\n if (Array.isArray(options)) {\n this.mOptions = (options as DynamicFormOptionConfig<T>[]).map(optionConfig => new DynamicFormOption<T>(optionConfig));\n this.updateOptions();\n } else if (isObservable(options)) {\n this.options$ = (options as Observable<DynamicFormOptionConfig<T>[]>).pipe(\n map(optionsConfig => {\n this.mOptions = optionsConfig.map(optionConfig => new DynamicFormOption<T>(optionConfig));\n return this.mOptions;\n }));\n } else {\n this.updateOptions();\n }\n }\n\n get options(): ReadonlyArray<DynamicFormOption<T>> {\n return this.mOptions;\n }\n\n insert(index: number, optionConfig: DynamicFormOptionConfig<T>): DynamicFormOption<T> {\n const option = new DynamicFormOption(optionConfig);\n this.mOptions.splice(index, 0, option);\n this.updateOptions();\n return option;\n }\n\n remove(...indices: number[]): void {\n indices.forEach(index => this.mOptions.splice(index, 1));\n this.updateOptions();\n }\n\n protected updateOptions(): void {\n this.options$ = of(this.mOptions);\n }\n}\n","import {\n DynamicCheckboxModel,\n DynamicCheckboxModelConfig,\n DynamicDatePickerModel,\n DynamicFileUploadModel,\n DynamicFileUploadModelConfig,\n DynamicFormControlLayout,\n DynamicFormValueControlModelConfig,\n DynamicInputModel,\n DynamicInputModelConfig,\n DynamicTextAreaModel,\n DynamicTextAreaModelConfig\n} from \"@ng-dynamic-forms/core\";\nimport {ObjectUtils} from \"@stemy/ngx-utils\";\nimport {DynamicEditorModel, DynamicEditorModelConfig} from \"./dynamic-editor.model\";\nimport {DynamicFormArrayModel, DynamicFormArrayModelConfig} from \"./dynamic-form-array.model\";\nimport {DynamicFormGroupModel, DynamicFormGroupModelConfig} from \"./dynamic-form-group.model\";\nimport {DynamicSelectModel, DynamicSelectModelConfig} from \"./dynamic-select.model\";\n\nexport type ValueModelConfig = DynamicFormValueControlModelConfig<any>;\n\nexport type OmitId<T extends ValueModelConfig> = Omit<T, \"id\">;\n\nexport type AddId<T extends OmitId<ValueModelConfig>> = T extends OmitId<(infer U)> ? U : never;\n\nexport function createFormConfig<T extends ValueModelConfig, U extends OmitId<T>>(id: string, config?: U): AddId<U> {\n const res = (config || {id}) as AddId<U>;\n res.id = id;\n res.label = ObjectUtils.isNullOrUndefined(config.label) ? id : config.label;\n res.disabled = config.disabled || false;\n res.hidden = config.hidden || false;\n res.additional = Object.assign({\n // For material components\n appearance: \"fill\",\n }, res.additional || {});\n return res;\n}\n\nexport function createFormCheckbox(id: string, config: OmitId<DynamicCheckboxModelConfig>, layout?: DynamicFormControlLayout): DynamicCheckboxModel {\n const res = createFormConfig(id, config);\n res.indeterminate = config.indeterminate || false;\n return new DynamicCheckboxModel(res, layout);\n}\n\nexport function createFormDate(id: string, config: OmitId<DynamicDatePickerModel>, layout?: DynamicFormControlLayout): DynamicDatePickerModel {\n const res = createFormConfig(id, config);\n res.autoFocus = config.autoFocus || false;\n res.focusedDate = config.focusedDate || new Date();\n res.inline = config.inline || false;\n return new DynamicDatePickerModel(res, layout);\n}\n\nexport function createFormEditor(id: string, config: OmitId<DynamicEditorModelConfig>, layout?: DynamicFormControlLayout): DynamicEditorModel {\n const res = createFormConfig(id, config);\n return new DynamicEditorModel(res, layout);\n}\n\nexport function createFormArray(id: string, config: OmitId<DynamicFormArrayModelConfig>, layout?: DynamicFormControlLayout): DynamicFormArrayModel {\n const res = createFormConfig(id, config);\n return new DynamicFormArrayModel(res, layout);\n}\n\nexport function createFormGroup(id: string, config: OmitId<DynamicFormGroupModelConfig>, layout?: DynamicFormControlLayout): DynamicFormGroupModel {\n const res = createFormConfig(id, config);\n res.name = config.name || \"\";\n return new DynamicFormGroupModel(res, layout);\n}\n\nexport function createFormInput(id: string, config: OmitId<DynamicInputModelConfig>, type: string = \"text\", layout?: DynamicFormControlLayout): DynamicInputModel {\n const res = createFormConfig(id, config);\n res.inputType = config.inputType || type;\n res.placeholder = config.placeholder || (config.inputType == \"mask\" ? \"_\" : \"\");\n res.step = config.step || 1;\n res.mask = config.mask || null;\n return new DynamicInputModel(res, layout);\n}\n\nexport function createFormSelect<T = any>(id: string, config: OmitId<DynamicSelectModelConfig<T>>, layout?: DynamicFormControlLayout): DynamicSelectModel<T> {\n const res = createFormConfig(id, config);\n res.options = config.options || [];\n return new DynamicSelectModel(res, layout);\n}\n\nexport function createFormTextarea(id: string, config: OmitId<DynamicTextAreaModelConfig>, layout?: DynamicFormControlLayout): DynamicTextAreaModel {\n const res = createFormConfig(id, config);\n res.cols = config.cols || 10;\n res.rows = config.rows || 3;\n res.wrap = config.wrap || \"soft\";\n return new DynamicTextAreaModel(res, layout);\n}\n\nexport function createFormFile(id: string, config: OmitId<DynamicFileUploadModelConfig>, layout?: DynamicFormControlLayout): DynamicFileUploadModel {\n const res = createFormConfig(id, config);\n res.accept = config.accept || [\"jpg\", \"jpeg\", \"png\"];\n res.multiple = config.multiple || false;\n res.url = ObjectUtils.isString(config.url) ? config.url : \"assets\";\n return new DynamicFileUploadModel(res, layout);\n}\n","import {DynamicFormModel, DynamicPathable} from \"@ng-dynamic-forms/core\";\nimport {IOpenApiSchemaProperty} from \"@stemy/ngx-utils\";\n\nexport function isStringWithVal(val: any): boolean {\n return typeof val == \"string\" && val.length > 0;\n}\n\nexport function findRefs(property: IOpenApiSchemaProperty): string[] {\n const refs = Array.isArray(property.allOf)\n ? property.allOf.map(o => o.$ref).filter(isStringWithVal)\n : [property.items?.$ref, property.$ref].filter(isStringWithVal);\n return refs.map(t => t.split(\"/\").pop());\n}\n\nexport function replaceSpecialChars(str: string, to: string = \"-\"): string {\n return `${str}`.replace(/[&\\/\\\\#, +()$~%.@'\":*?<>{}]/g, to);\n}\n\nexport function mergeFormModels(formModels: DynamicFormModel[]): DynamicFormModel {\n const res: DynamicFormModel = [];\n for (const formModel of formModels) {\n for (const subModel of formModel) {\n const index = res.findIndex(t => t.id == subModel.id);\n if (index >= 0) {\n res[index] = subModel;\n continue;\n }\n res.push(subModel);\n }\n }\n return res;\n}\n\nexport function collectPathAble<T extends DynamicPathable>(start: T, getter: (cur: T & DynamicPathable) => string): string[] {\n if (!start || !getter(start)) return [];\n const parts = [];\n let currentPath = start;\n while (currentPath) {\n const val = getter(currentPath);\n if (val) {\n parts.unshift(val);\n }\n currentPath = currentPath.parent as T;\n }\n return parts;\n}\n\nexport function getDynamicPath(start: DynamicPathable): string {\n return collectPathAble(start, t => t.id).join(\".\");\n}\n\nexport const MIN_INPUT_NUM = -999999999;\n\nexport const MAX_INPUT_NUM = 999999999;\n\nexport const EDITOR_FORMATS = [\"php\", \"json\", \"html\", \"css\", \"scss\"];\n","import {Type} from \"@angular/core\";\nimport {\n DynamicFormControlComponent,\n DynamicFormControlModel,\n DynamicFormControlModelConfig\n} from \"@ng-dynamic-forms/core\";\nimport {CachedProvider, cachedFactory, IOpenApiSchema, IOpenApiSchemaProperty} from \"@stemy/ngx-utils\";\n\nimport {FormModelCustomizer, GetFormControlComponentType, PromiseOrNot} from \"../common-types\";\nimport {getDynamicPath} from \"./misc\";\n\nexport interface IFormComponentCustomizer {\n acceptModel(model: DynamicFormControlModel, path: string): boolean;\n getFormComponent(model: DynamicFormControlModel): Type<DynamicFormControlComponent>;\n}\n\nexport function getFormComponent(...providers: CachedProvider<IFormComponentCustomizer>[]): GetFormControlComponentType {\n const factory = cachedFactory(providers);\n return (model, injector) => {\n const customizers = factory(injector);\n for (const customizer of customizers) {\n const component = customizer.acceptModel(model, getDynamicPath(model)) ? customizer.getFormComponent(model) : null;\n if (component) {\n return component;\n }\n }\n return null;\n }\n}\n\nexport interface IFormModelCustomizer {\n acceptModel(model: DynamicFormControlModel, path: string): boolean;\n customizeModel(\n model: DynamicFormControlModel,\n config: DynamicFormControlModelConfig,\n property: IOpenApiSchemaProperty,\n schema: IOpenApiSchema,\n path: string,\n ): PromiseOrNot<DynamicFormControlModel | DynamicFormControlModel[]>;\n}\n\nexport function customizeFormModel(...providers: CachedProvider<IFormModelCustomizer>[]): FormModelCustomizer {\n const factory = cachedFactory(providers);\n return async (property, schema, model, config, path, injector) => {\n const customizers = factory(injector);\n const models = [model];\n for (const customizer of customizers) {\n const index = models.findIndex(m => customizer.acceptModel(m, path));\n if (index >= 0) {\n const custom = await customizer.customizeModel(\n models[index], config, property, schema, path\n );\n const result = Array.isArray(custom) ? custom : [custom];\n models.splice(index, 1, ...result);\n }\n }\n return models;\n }\n}\n","import {AbstractControl, ValidationErrors, ValidatorFn} from \"@angular/forms\";\n\nexport function validateJSON(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (!value) return null;\n try {\n JSON.parse(value);\n return null;\n } catch (e) {\n return {json: true};\n }\n}\n\nexport function validateRequiredTranslation(control: AbstractControl): ValidationErrors | null {\n const value: any[] = control.value;\n if (!value || value.length == 0) return {requiredTranslation: true};\n return value.findIndex(t => (t.lang == \"de\" || t.lang == \"en\") && !t.translation) < 0\n ? null\n : {requiredTranslation: true};\n}\n\nexport function validatePhone(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (!value) return Promise.resolve(null);\n const phoneRegexp = /^(?:\\d){10,12}$/;\n return phoneRegexp.test(value) ? null : {phone: true};\n}\n\nexport function validateItemsMinLength(minLength: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n return (Array.isArray(value) && value.every(v => typeof v == \"string\" && v.length >= minLength))\n ? null : {itemsMinLength: minLength}\n };\n}\n\nexport function validateItemsMaxLength(maxLength: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n return (Array.isArray(value) && value.every(v => typeof v == \"string\" && v.length <= maxLength))\n ? null : {itemsMaxLength: maxLength}\n };\n}\n\nexport function validateItemsMinValue(min: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n return (Array.isArray(value) && value.every(v => typeof v == \"number\" && v >= min))\n ? null : {itemsMinValue: min}\n };\n}\n\nexport function validateItemsMaxValue(max: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n return (Array.isArray(value) && value.every(v => typeof v == \"number\" && v <= max))\n ? null : {itemsMaxValue: max}\n };\n}\n","import {Subject} from \"rxjs\";\nimport {FormControl} from \"@angular/forms\";\nimport {DynamicFormControlModel, DynamicFormModel, DynamicPathable} from \"@ng-dynamic-forms/core\";\n\nconst indexLabels = [\"$ix\", \"$pix\"];\n\nexport type NotifyCallback<M extends DynamicFormControlModel> = (controlModel: M, control: FormControl, root: DynamicFormModel, indexes: any) => any | Promise<any>;\n\nexport class FormSubject<M extends DynamicFormControlModel, T> extends Subject<T> {\n\n private readonly notifyCallback: NotifyCallback<M>;\n\n constructor(notifyCallback: NotifyCallback<M>) {\n super();\n this.notifyCallback = notifyCallback;\n }\n\n protected handleNotifiedValue(controlModel: M, control: FormControl, val: Promise<T>) {\n val.then(v => this.next(v));\n }\n\n notify(controlModel: M, control: FormControl, root: DynamicFormModel): void {\n const indexes = {};\n let path = controlModel as DynamicPathable;\n let ix = 0;\n while (path) {\n if (!isNaN(path.index)) {\n const key = indexLabels[ix++] || `$pix${ix}`;\n indexes[key] = path.index;\n }\n path = path.parent;\n }\n let value = this.notifyCallback(controlModel, control, root, indexes);\n if (!(value instanceof Promise)) {\n value = Promise.resolve(value);\n }\n this.handleNotifiedValue(controlModel, control, value);\n }\n}\n","import {AbstractControl} from \"@angular/forms\";\nimport {DynamicFormOptionConfig, DynamicSelectModel} from \"./dynamic-select.model\";\nimport {FormSubject} from \"./form-subject\";\n\nexport class FormSelectSubject<T extends DynamicFormOptionConfig<any>[]> extends FormSubject<DynamicSelectModel<any>, T> {\n\n protected handleNotifiedValue(controlModel: DynamicSelectModel<any>, control: AbstractControl, val: Promise<T>) {\n val.then(options => {\n if (options.length == 0) {\n this.next(options);\n return;\n }\n const currentVal = control.value;\n if (controlModel.multiple) {\n const correctVal = (currentVal || []).filter(t => options.findIndex(o => o.value == t) >= 0);\n if (correctVal.length !== currentVal?.length) {\n control.setValue(correctVal, {onlySelf: true, emitEvent: false});\n }\n } else {\n const option = options.find(t => t.value == currentVal);\n if (!option) {\n control.setValue(\n controlModel.allowEmpty ? null : options[0]?.value ?? null,\n {onlySelf: true, emitEvent: false}\n );\n }\n }\n this.next(options);\n });\n }\n}\n","import {AbstractControl, FormArray, FormGroup} from \"@angular/forms\";\n\nexport interface AllValidationErrors {\n control: AbstractControl;\n path: string;\n errorKey: string;\n errorValue: any;\n}\n\nexport interface FormGroupControls {\n [key: string]: AbstractControl;\n}\n\nexport function getFormValidationErrors(controls: FormGroupControls, parentPath: string = \"\"): AllValidationErrors[] {\n const errors: AllValidationErrors[] = [];\n Object.entries(controls).forEach(([name, control], ix) => {\n const path = !parentPath ? name : `${parentPath}.${name}`;\n if (control instanceof FormGroup) {\n getFormValidationErrors(control.controls, path).forEach(error => errors.push(error));\n return;\n }\n if (control instanceof FormArray) {\n control.controls.forEach((control: FormGroup, ix) => {\n getFormValidationErrors(control.controls, `${path}.${ix}`).forEach(error => errors.push(error));\n });\n return;\n }\n Object.entries(control.errors || {}).forEach(([errorKey, errorValue]) => {\n errors.push({control, path, errorKey, errorValue});\n });\n });\n return errors;\n}\n","import {Inject, Injectable, Injector} from \"@angular/core\";\nimport {AbstractControl, AbstractControlOptions, FormArray, FormControl, FormGroup} from \"@angular/forms\";\nimport {firstValueFrom, Subject} from \"rxjs\";\nimport {debounceTime, first} from \"rxjs/operators\";\nimport {\n DynamicCheckboxModel,\n DynamicCheckboxModelConfig,\n DynamicDatePickerModel,\n DynamicDatePickerModelConfig,\n DynamicFileUploadModel,\n DynamicFileUploadModelConfig,\n DynamicFormComponentService,\n DynamicFormControlModel,\n DynamicFormModel,\n DynamicFormService as Base,\n DynamicFormValidationService,\n DynamicFormValueControlModel,\n DynamicFormValueControlModelConfig,\n DynamicInputModel,\n DynamicInputModelConfig,\n DynamicPathable,\n DynamicRadioGroupModel,\n DynamicRadioGroupModelConfig,\n DynamicTextAreaModel,\n DynamicTextAreaModelConfig,\n DynamicValidatorsConfig, isString,\n} from \"@ng-dynamic-forms/core\";\nimport {\n IApiService,\n ILanguageService,\n IOpenApiSchema,\n IOpenApiSchemaProperty,\n IOpenApiSchemas,\n ObjectUtils,\n OpenApiService,\n StringUtils\n} from \"@stemy/ngx-utils\";\n\nimport {\n FormControlSerializer,\n FormModelCustomizer,\n IDynamicForm,\n ModelForSchemaOptions,\n ModelForSchemaWrapOptions\n} from \"../common-types\";\n\nimport {EDITOR_FORMATS, findRefs, isStringWithVal, MAX_INPUT_NUM, mergeFormModels, MIN_INPUT_NUM} from \"../utils/misc\";\nimport {FormSelectSubject} from \"../utils/form-select-subject\";\nimport {FormSubject} from \"../utils/form-subject\";\nimport {DynamicEditorModel, DynamicEditorModelConfig} from \"../utils/dynamic-editor.model\";\nimport {\n DynamicFormArrayGroupModel,\n DynamicFormArrayModel,\n DynamicFormArrayModelConfig\n} from \"../utils/dynamic-form-array.model\";\nimport {\n DynamicFormFieldSet,\n DynamicFormGroupModel,\n DynamicFormGroupModelConfig\n} from \"../utils/dynamic-form-group.model\";\nimport {DynamicFormOptionConfig, DynamicSelectModel, DynamicSelectModelConfig} from \"../utils/dynamic-select.model\";\nimport {DynamicBaseFormComponent} from \"../components/base/dynamic-base-form.component\";\nimport {createFormInput} from \"../utils/creators\";\nimport {AllValidationErrors, getFormValidationErrors} from \"../utils/validation-errors\";\n\n@Injectable()\nexport class DynamicFormService extends Base {\n\n get api(): IApiService {\n return this.openApi.api;\n }\n\n get language(): ILanguageService {\n return this.api.language;\n }\n\n protected schemas: IOpenApiSchemas;\n\n constructor(cs: DynamicFormComponentService,\n vs: DynamicFormValidationService,\n @Inject(OpenApiService) readonly openApi: OpenApiService,\n @Inject(Injector) readonly injector: Injector) {\n super(cs, vs);\n }\n\n async serializeForm(form: IDynamicForm, validate?: boolean): Promise<any> {\n if (!form.group) return null;\n if (validate) {\n await this.validateForm(form);\n }\n return this.serialize(form.model, form.group);\n }\n\n async getFormModelForSchema(name: string, customizeOrOptions?: FormModelCustomizer | ModelForSchemaOptions): Promise<DynamicFormModel> {\n return (await this.getFormGroupModelForSchema(name, customizeOrOptions)).group;\n }\n\n getErrors(form: DynamicBaseFormComponent): Promise<AllValidationErrors[]> {\n this.showErrors(form);\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(getFormValidationErrors(form.group.controls, \"\"));\n }, 500);\n });\n }\n\n createFormGroup(formModel: DynamicFormModel, options?: AbstractControlOptions | null, parent?: DynamicPathable | null) {\n const group = super.createFormGroup(formModel, options, parent);\n if (!parent) {\n group.valueChanges.pipe(debounceTime(500)).subscribe(() => {\n this.notifyChanges(formModel, group, formModel);\n });\n }\n return group;\n }\n\n patchGroup(value: any, formModel: DynamicFormModel, formGroup: FormGroup): void {\n value = ObjectUtils.copy(value);\n this.patchValues(value, formModel, formGroup);\n formGroup.patchValue(value);\n this.detectChanges();\n }\n\n patchForm(value: any, component: DynamicBaseFormComponent): void {\n value = ObjectUtils.copy(value);\n this.patchValues(value, component.model, component.group);\n component.group.patchValue(value);\n this.detectChanges(component);\n }\n\n validateForm(form: IDynamicForm, showErrors: boolean = true): Promise<any> {\n if (!form.group) return Promise.resolve();\n return new Promise<any>((resolve, reject) => {\n form.group.statusChanges.pipe(first(status => status == \"VALID\" || status == \"INVALID\")).subscribe(status => {\n if (showErrors) {\n this.showErrors(form);\n }\n if (status == \"VALID\") {\n resolve(null);\n return;\n }\n console.log(`Form errors:`, getFormValidationErrors(form.group.controls));\n reject(null);\n });\n form.group.updateValueAndValidity();\n });\n }\n\n async serialize(formModel: DynamicFormModel, formGroup: FormGroup): Promise<any> {\n const result = {};\n if (!formModel || !formGroup || !formGroup.value) return result;\n for (const i in formModel) {\n const subModel = formModel[i] as DynamicFormValueControlModel<any>;\n const subControl = this.findControlByModel(subModel, formGroup);\n const serializer = subModel.additional?.serializer as FormControlSerializer;\n if (ObjectUtils.isFunction(serializer)) {\n result[subModel.id] = await serializer(subModel, subControl);\n continue;\n }\n if (subModel.hidden && !subModel.additional?.serialize) continue;\n if (subModel instanceof DynamicFormArrayModel) {\n const length = Array.isArray(subControl.value) ? subControl.value.length : 0;\n const subArray = subControl as FormArray;\n const resArray = [];\n for (let i = 0; i < length; i++) {\n const itemModel = subModel.get(i);\n resArray.push(\n await this.serialize(itemModel.group, subArray.at(i) as FormGroup)\n );\n }\n result[subModel.id] = resArray;\n continue;\n }\n if (subModel instanceof DynamicInputModel && !ObjectUtils.isNullOrUndefined(subControl.value)) {\n result[subModel.id] = subModel.inputType == \"number\"\n ? parseFloat((`${subControl.value}` || \"0\").replace(/,/gi, \".\")) ?? null\n : subControl.value;\n continue;\n }\n if (subModel instanceof DynamicFormGroupModel) {\n result[subModel.id] = await this.serialize(subModel.group, subControl as FormGroup);\n continue;\n }\n result[subModel.id] = subControl.value;\n }\n return result;\n }\n\n showErrors(form: IDynamicForm): void {\n this.showErrorsForGroup(form.group);\n this.detectChanges(form);\n }\n\n notifyChanges(formModel: DynamicFormModel, formGroup: FormGroup, root: DynamicFormModel): void {\n if (!formModel || !formGroup) return;\n for (const i in formModel) {\n const subModel = formModel[i] as DynamicFormValueControlModel<any>;\n const subControl = this.findControlByModel(subModel, formGroup);\n if (subModel instanceof DynamicFormArrayModel) {\n const length = Array.isArray(subControl.value) ? subControl.value.length : 0;\n const subArray = subControl as FormArray;\n for (let i = 0; i < length; i++) {\n const itemModel = subModel.get(i);\n this.notifyChanges(itemModel.group, subArray.at(i) as FormGroup, root);\n }\n continue;\n }\n if (subModel instanceof DynamicFormGroupModel) {\n this.notifyChanges(subModel.group, subControl as FormGroup, root);\n continue;\n }\n this.updateSelectOptions(subModel, subControl as FormControl, root);\n }\n }\n\n protected patchValues(value: any, formModel: DynamicFormModel, formGroup: FormGroup): void {\n if (!value) return;\n formModel?.forEach(subModel => {\n const key = subModel.id;\n const subValue = value[key];\n const subControl = this.findControlByModel(subModel, formGroup);\n if ((subModel instanceof DynamicSelectModel || subModel instanceof DynamicRadioGroupModel) && ObjectUtils.isObject(subValue)) {\n value[key] = subValue.id || subValue._id || subValue;\n return;\n }\n if (subModel instanceof DynamicDatePickerModel) {\n value[key] = this.convertToDate(subValue);\n return;\n }\n if (subModel instanceof DynamicFormArrayModel) {\n const length = Array.isArray(subValue) ? subValue.length : 0;\n const subArray = subControl as FormArray;\n while (subModel.size > length) {\n this.removeFormArrayGroup(0, subArray, subModel);\n }\n while (subModel.size < length) {\n this.insertFormArrayGroup(subModel.size, subArray, subModel as DynamicFormArrayModel);\n }\n for (let i = 0; i < length; i++) {\n const itemModel = subModel.get(i);\n this.patchValues(subValue[i], itemModel.group, subArray.at(i) as FormGroup);\n }\n return;\n }\n if (subModel instanceof DynamicFormGroupModel) {\n this.patchValues(subValue, subModel.group, subControl as FormGroup);\n }\n });\n }\n\n protected updateSelectOptions(formControlModel: DynamicFormControlModel, formControl: FormControl, root: DynamicFormModel): void {\n if (formControlModel instanceof DynamicSelectModel) {\n let options = formControlModel.options$;\n if (options instanceof FormSubject) {\n options.notify(formControlModel, formControl, root);\n return;\n }\n while (options instanceof Subject && options.source) {\n options = options.source;\n if (options instanceof FormSubject) {\n options.notify(formControlModel, formControl, root);\n }\n }\n }\n }\n\n protected showErrorsForGroup(formGroup: FormGroup): void {\n if (!formGroup) return;\n formGroup.markAsTouched({onlySelf: true});\n const controls = Object.keys(formGroup.controls).map(id => formGroup.controls[id]);\n this.showErrorsForControls(controls);\n }\n\n protected showErrorsForControls(controls: AbstractControl[]): void {\n controls.forEach(control => {\n if (control instanceof FormGroup) {\n this.showErrorsForGroup(control);\n return;\n }\n control.markAsTouched({onlySelf: true});\n if (control instanceof FormArray) {\n this.showErrorsForControls(control.controls);\n }\n });\n }\n\n protected convertToDate(value: any): Date {\n if (ObjectUtils.isNullOrUndefined(value)) return null;\n const date = ObjectUtils.isDate(value)\n ? value\n : new Date(value);\n return isNaN(date as any) ? new Date() : date;\n }\n\n async getFormGroupModelForSchema(name: string, customizeOrOptions?: FormModelCustomizer | ModelForSchemaOptions): Promise<DynamicFormGroupModel> {\n this.api.cache = {};\n this.schemas = await this.openApi.getSchemas();\n const fieldSets: DynamicFormFieldSet<string>[] = [];\n const schemaOptions = ObjectUtils.isObject(customizeOrOptions) ? customizeOrOptions as ModelForSchemaOptions : {};\n const customizeModel = ObjectUtils.isFunction(customizeOrOptions) ? customizeOrOptions : schemaOptions.customizer;\n const schema = this.schemas[name];\n const wrapOptions = {\n ...schemaOptions,\n schema,\n customizer: async (property, options, modelType, config, path: string) => {\n const pathPrefix = !path ? `` : `${path}.`;\n config.label = !config.label || !options.labelPrefix\n ? config.label || \"\"\n : await this.language.getTranslation(`${options.labelPrefix}.${pathPrefix}${config.label}`);\n const model = new modelType(config);\n if (model instanceof DynamicFormValueControlModel) {\n model.value = (model instanceof DynamicDatePickerModel)\n ? this.convertToDate(property.default) : property.default;\n }\n const modelPath = `${pathPrefix}${model.id}`;\n const layout = modelPath.toLowerCase().replace(/\\./g, \"-\");\n model.layout = {\n grid: {\n host: `${layout} control-${model.id}`,\n container: `${layout}-container`\n }\n };\n if (!ObjectUtils.isFunction(customizeModel)) return [model];\n let res = customizeModel(property, schema, model, config, modelPath, this.injector);\n if (!res) return [model];\n if (res instanceof Promise) {\n res = await res;\n }\n return Array.isArray(res) ? res : [res];\n }\n } as ModelForSchemaWrapOptions;\n const controls = await this.getFormModelForSchemaDef(schema, fieldSets, wrapOptions, \"\");\n const group = [...controls];\n // Add id fields if necessary\n if (controls.length > 0) {\n const idFields = [\n createFormInput(\"id\", {hidden: true}),\n createFormInput(\"_id\", {hidden: true})\n ].filter(t => !controls.some(c => c.id == t.id));\n group.unshift(...idFields);\n }\n const config = {\n id: \"root\",\n group,\n fieldSets\n } as DynamicFormGroupModelConfig;\n const root = await wrapOptions.customizer({\n id: \"root\",\n type: \"object\",\n properties: schema?.properties || {}\n }, wrapOptions, DynamicFormGroupModel, config, \"\");\n // Check if the customized root wrapper returned an array\n controls.length = 0;\n for (const model of root) {\n if (model instanceof DynamicFormGroupModel && model.id === \"root\") {\n return model;\n } else {\n controls.push(model);\n }\n }\n return new DynamicFormGroupModel({\n ...config,\n group: controls\n });\n }\n\n protected async getFormModelForSchemaDef(schema: IOpenApiSchema, fieldSets: DynamicFormFieldSet<string>[], options: ModelForSchemaWrapOptions, path: string): Promise<DynamicFormModel> {\n if (!schema)\n return [];\n const keys = Object.keys(schema.properties || {});\n const controls: DynamicFormModel = [];\n for (const p of keys) {\n const property = schema.properties[p];\n const fsName = property.hidden ? null : String(property.fieldSet || \"\");\n if (fsName) {\n const fs = fieldSets.find(t => t.id === fsName);\n if (fs) {\n fs.fields.push(p);\n } else {\n fieldSets.push({id: fsName, legend: `legend.${fsName}`, fields: [p]});\n }\n }\n const models = await this.getFormControlModels(property, options, path);\n controls.push(...models);\n }\n return controls.filter(t => null !== t);\n }\n\n protected checkIsEditorProperty(property: IOpenApiSchemaProperty): boolean {\n if (!property.format) return false;\n return EDITOR_FORMATS.indexOf(property.format) >= 0 || property.format.endsWith(\"script\");\n }\n\n protected async getFormControlModels(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions, path: string): Promise<DynamicFormControlModel[]> {\n const $enum = property.items?.enum || property.enum;\n if (Array.isArray($enum) || isStringWithVal(property.optionsPath) || isStringWithVal(property.endpoint)) {\n if (property.format == \"radio\") {\n return options.customizer(property, options, DynamicRadioGroupModel, this.getFormRadioConfig(property, options), path);\n }\n return options.customizer(property, options, DynamicSelectModel, this.getFormSelectConfig(property, options), path);\n }\n switch (property.type) {\n case \"string\":\n case \"number\":\n case \"integer\":\n case \"textarea\":\n if (this.checkIsEditorProperty(property)) {\n return options.customizer(property, options, DynamicEditorModel, this.getFormEditorConfig(property, options), path);\n }\n if (property.format == \"textarea\") {\n return options.customizer(property, options, DynamicTextAreaModel, this.getFormTextareaConfig(property, options), path);\n }\n if (property.format == \"date\" || property.format == \"date-time\") {\n return options.customizer(property, options, DynamicDatePickerModel, this.getFormDatepickerConfig(property, options), path);\n }\n return options.customizer(property, options, DynamicInputModel, this.getFormInputConfig(property, options), path);\n case \"object\":\n return options.customizer(property, options, DynamicEditorModel, this.getFormEditorConfig(property, options), path);\n case \"boolean\":\n return options.customizer(property, options, DynamicCheckboxModel, this.getFormCheckboxConfig(property, options), path);\n case \"array\":\n if (findRefs(property).length > 0) {\n return options.customizer(property, options, DynamicFormArrayModel, await this.getFormArrayConfig(property, options, path), path);\n } else {\n return options.customizer(property, options, DynamicInputModel, this.getFormInputConfig(property, options), path);\n }\n case \"file\":\n return options.customizer(property, options, DynamicFileUploadModel, this.getFormUploadConfig(property, options), path);\n }\n if (findRefs(property).length > 0) {\n return options.customizer(\n property, options, DynamicFormGroupModel,\n await this.getFormGroupConfig(property, options, !path ? property.id : `${path}.${property.id}`),\n path\n );\n }\n return [];\n }\n\n findModelByPath(parent: DynamicPathable | DynamicFormModel, path: string[]): DynamicPathable {\n if (path.length == 0) return parent as DynamicPathable;\n const next = path.shift() as any;\n if (Array.isArray(parent)) {\n return this.findModelByPath(parent.find(t => t.id == next), path);\n }\n if (parent instanceof DynamicFormGroupModel || parent instanceof DynamicFormArrayGroupModel) {\n return this.findModelByPath(parent.group.find(t => t.id == next), path);\n }\n if (parent instanceof DynamicFormArrayModel) {\n return this.findModelByPath(parent.groups.find(t => t.index == next), path);\n }\n return parent;\n }\n\n getFormControlConfig(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions): DynamicFormValueControlModelConfig<any> {\n const validators = this.getValidators(property, options);\n const errorMessages = Object.keys(validators).reduce((res, key) => {\n res[key] = options.labelPrefix\n ? this.language.getTranslationSync(`${options.labelPrefix}.error.${key}`) : `error.${key}`;\n return res;\n }, {});\n return {\n id: property.id,\n label: ObjectUtils.isString(property.label) ? property.label : property.id,\n hidden: property.hidden,\n disabled: property.disabled,\n validators,\n errorMessages,\n additional: Object.assign({\n // For material components\n appearance: \"fill\"\n }, property)\n };\n }\n\n async getFormArrayConfig(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions, path: string): Promise<DynamicFormArrayModelConfig> {\n const fieldSets: DynamicFormFieldSet<string>[] = [];\n const subSchemas = findRefs(property).map(ref => this.schemas[ref]);\n const subModels = await Promise.all(\n subSchemas.map(s => this.getFormModelForSchemaDef(s, fieldSets, options, path))\n );\n return Object.assign(\n this.getFormControlConfig(property, options),\n {\n groupFactory: () => mergeFormModels(ObjectUtils.copy(subModels)),\n initialCount: property.initialCount || 0,\n sortable: property.sortable || false,\n useTabs: property.useTabs || false,\n addItem: property.addItem !== false,\n insertItem: property.insertItem !== false,\n cloneItem: property.cloneItem !== false,\n moveItem: property.moveItem !== false,\n removeItem: property.removeItem !== false,\n clearItems: property.clearItems !== false\n }\n );\n }\n\n async getFormGroupConfig(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions, path: string): Promise<DynamicFormGroupModelConfig> {\n const fieldSets: DynamicFormFieldSet<string>[] = [];\n const subSchemas = findRefs(property).map(ref => this.schemas[ref]);\n const subModels = await Promise.all(\n subSchemas.map(s => this.getFormModelForSchemaDef(s, fieldSets, options, path))\n );\n return Object.assign(\n this.getFormControlConfig(property, options),\n {\n fieldSets,\n group: mergeFormModels(subModels)\n }\n );\n }\n\n getFormInputConfig(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions): DynamicInputModelConfig {\n let inputType = StringUtils.has(property.id, \"password\", \"Password\") ? \"password\" : (property.format || property.items?.type || property.type);\n switch (inputType) {\n case \"string\":\n inputType = \"text\";\n break;\n case \"boolean\":\n inputType = \"checkbox\";\n break;\n case \"textarea\":\n inputType = \"textarea\";\n break;\n case \"integer\":\n inputType = \"number\";\n break;\n }\n const sub = property.type == \"array\" ? property.items || property : property;\n return Object.assign(\n this.getFormControlConfig(property, options),\n {\n inputType,\n autoComplete: property.autoComplete || \"off\",\n multiple: property.type == \"array\",\n accept: ObjectUtils.isString(property.accept) ? property.accept : null,\n mask: ObjectUtils.isString(property.mask) ? property.mask : null,\n pattern: ObjectUtils.isString(property.pattern) ? property.pattern : null,\n step: isNaN(sub.step) ? (isNaN(property.step) ? 1 : property.step) : sub.step,\n min: isNaN(sub.minimum) ? MIN_INPUT_NUM : sub.minimum,\n max: isNaN(sub.maximum) ? MAX_INPUT_NUM : sub.maximum,\n minLength: isNaN(sub.minLength) ? 0 : sub.minLength,\n maxLength: isNaN(sub.maxLength) ? MAX_INPUT_NUM : sub.maxLength,\n placeholder: property.placeholder || \"\"\n }\n );\n }\n\n getFormEditorConfig(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions): DynamicEditorModelConfig {\n const sub = property.type == \"array\" ? property.items || property : property;\n return Object.assign(\n this.getFormControlConfig(property, options),\n {\n inputType: property.format || \"json\",\n convertObject: property.type !== \"string\",\n autoComplete: property.autoComplete || \"off\",\n multiple: property.type == \"array\",\n accept: ObjectUtils.isString(property.accept) ? property.accept : null,\n mask: ObjectUtils.isString(property.mask) ? property.mask : null,\n pattern: ObjectUtils.isString(property.pattern) ? property.pattern : null,\n step: isNaN(sub.step) ? (isNaN(property.step) ? 1 : property.step) : sub.step,\n minLength: isNaN(sub.minLength) ? 0 : sub.minLength,\n maxLength: isNaN(sub.maxLength) ? MAX_INPUT_NUM : sub.maxLength,\n placeholder: property.placeholder || \"\"\n }\n );\n }\n\n getFormTextareaConfig(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions): DynamicTextAreaModelConfig {\n return Object.assign(\n this.getFormControlConfig(property, options),\n {\n cols: property.cols || null,\n rows: property.rows || 10,\n wrap: property.wrap || false,\n autoComplete: property.autoComplete || \"off\",\n multiple: property.type == \"array\",\n minLength: isNaN(property.minLength) ? 0 : property.minLength,\n maxLength: isNaN(property.maxLength) ? MAX_INPUT_NUM : property.maxLength,\n placeholder: property.placeholder || \"\"\n }\n );\n }\n\n getFormDatepickerConfig(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions): DynamicDatePickerModelConfig {\n return Object.assign(\n this.getFormControlConfig(property, options),\n {\n format: property.dateFormat || \"dd.MM.yyyy\",\n min: this.convertToDate(property.min),\n max: this.convertToDate(property.max),\n }\n );\n }\n\n getFormSelectOptions(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions) {\n const $enum = property.items?.enum || property.enum;\n if (Array.isArray($enum)) {\n return new FormSelectSubject((selectModel, formControl) => {\n const selectOptions = $enum.map(value => {\n const label = options.labelPrefix\n ? this.language.getTranslationSync(`${options.labelPrefix}.${property.id}.${value}`)\n : `${property.id}.${value}`;\n return {value, label};\n });\n return this.fixSelectOptions(selectModel, formControl, selectOptions);\n });\n }\n if (isStringWithVal(property.optionsPath)) {\n return new FormSelectSubject(async (selectModel, control, root, indexes) => {\n let path = property.optionsPath as string;\n let target = control as AbstractControl;\n let model: DynamicPathable | DynamicFormModel = selectModel;\n if (path.startsWith(\"$root\")) {\n path = path.substring(5);\n while (target.parent) {\n target = target.parent;\n }\n model = root;\n }\n while (path.startsWith(\".\")) {\n path = path.substring(1);\n if (target.parent) {\n target = target.parent;\n }\n model = (model as DynamicPathable).parent || root;\n }\n Object.keys(indexes).forEach(key => {\n path = path.replace(key, indexes[key]);\n });\n model = this.findModelByPath(model, path.split(\".\"));\n const modelOptions = model instanceof DynamicSelectModel\n ? await firstValueFrom(model.options$) :\n [];\n const value = ObjectUtils.getValue(target.value, path);\n const options = (!ObjectUtils.isArray(value) ? [] : value).map(value => {\n const modelOption = modelOptions.find(t => t.value == value);\n return {value, label: modelOption?.label || value};\n });\n return this.fixSelectOptions(selectModel, control, options);\n });\n }\n return new FormSelectSubject(async (selectModel, control) => {\n const entries = Object.entries((control.root as FormGroup)?.controls || {});\n const endpoint = entries.reduce((res, [key, control]) => {\n return this.replaceOptionsEndpoint(res, key, control?.value);\n }, `${property.endpoint}`);\n this.api.cache[endpoint] = this.api.cache[endpoint] || this.api.list(endpoint, this.api.makeListParams(1, -1)).then(result => {\n const items = ObjectUtils.isArray(result)\n ? result\n : (ObjectUtils.isArray(result.items) ? result.items : []);\n return items.map(i => {\n const item = ObjectUtils.isObject(i) ? i : {id: i};\n return {\n ...item,\n value: item.id || item._id,\n label: item[property.labelField] || item.label || item.id || item._id\n };\n });\n });\n const options = (await this.api.cache[endpoint]).map(t => Object.assign({}, t));\n return this.fixSelectOptions(selectModel, control, options);\n });\n }\n\n getFormRadioConfig(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions): DynamicRadioGroupModelConfig<any> {\n return Object.assign(\n this.getFormControlConfig(property, options),\n {\n options: this.getFormSelectOptions(property, options),\n }\n );\n }\n\n getFormSelectConfig(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions): DynamicSelectModelConfig<any> {\n return Object.assign(\n this.getFormControlConfig(property, options),\n {\n options: this.getFormSelectOptions(property, options),\n multiple: property.type == \"array\",\n groupBy: property.groupBy,\n inline: property.inline,\n allowEmpty: property.allowEmpty,\n }\n );\n }\n\n getFormUploadConfig(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions): DynamicFileUploadModelConfig {\n const url = this.api.url(property.url || \"assets\");\n const {accept, autoUpload, maxSize, minSize, removeUrl, showFileList} = property;\n return Object.assign(this.getFormControlConfig(property, options), {\n url,\n accept,\n autoUpload,\n maxSize,\n minSize,\n removeUrl,\n showFileList\n });\n }\n\n getFormCheckboxConfig(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions): DynamicCheckboxModelConfig {\n return Object.assign(\n this.getFormControlConfig(property, options),\n {\n indeterminate: property.indeterminate || false\n }\n );\n }\n\n cloneFormArrayGroup(index: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel) {\n this.insertFormArrayGroup(index, formArray, formArrayModel);\n this.patchGroup(formArray.at(index + 1).value, formArrayModel.groups[index].group, formArray.at(index) as FormGroup);\n formArrayModel.filterGroups();\n }\n\n protected replaceOptionsEndpoint(endpoint: string, key: string, value: any): string {\n if (ObjectUtils.isObject(value)) {\n return Object.entries(value).reduce((res, [k, v]) => {\n return this.replaceOptionsEndpoint(res, `${key}.${k}`, v);\n }, endpoint)\n }\n if (ObjectUtils.isArray(value)) {\n return value.reduce((res, v, i) => {\n return this.replaceOptionsEndpoint(res, `${key}.${i}`, v);\n }, endpoint)\n }\n return endpoint.replace(new RegExp(`\\\\$${key}`, \"gi\"), `${value ?? \"\"}`);\n }\n\n protected async fixSelectOptions(model: DynamicSelectModel<any>, control: FormControl, options: DynamicFormOptionConfig<any>[]): Promise<DynamicFormOptionConfig<any>[]> {\n if (!options) return [];\n for (const option of options) {\n option.classes = [option.classes, model.getClasses(option, model, control, this.injector)].filter(isStringWithVal).join(\" \");\n option.label = await this.language.getTranslation(option.label);\n }\n return options;\n }\n\n protected getValidators(property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions): DynamicValidatorsConfig {\n const validators: DynamicValidatorsConfig = {};\n const schema = options.schema;\n if (ObjectUtils.isArray(schema.required) && schema.required.indexOf(property.id) >= 0) {\n validators.required = null;\n }\n this.addPropertyValidators(validators, property);\n this.addItemsValidators(validators, property.items);\n return validators;\n }\n\n protected addPropertyValidators(validators: DynamicValidatorsConfig, property: IOpenApiSchemaProperty): void {\n if (!property) return;\n if (!isNaN(property.minLength)) {\n validators.minLength = property.minLength;\n }\n if (!isNaN(property.maxLength)) {\n validators.maxLength = property.maxLength;\n }\n if (!isNaN(property.minimum)) {\n validators.min = property.minimum;\n }\n if (!isNaN(property.maximum)) {\n validators.max = property.maximum;\n }\n if (isString(property.pattern) && property.pattern.length) {\n validators.pattern = property.pattern;\n }\n switch (property.format) {\n case \"email\":\n validators.email = null;\n break;\n }\n }\n\n protected addItemsValidators(validators: DynamicValidatorsConfig, items: IOpenApiSchemaProperty): void {\n if (!items) return;\n if (!isNaN(items.minLength)) {\n validators.itemsMinLength = items.minLength;\n }\n if (!isNaN(items.maxLength)) {\n validators.itemsMaxLength = items.maxLength;\n }\n if (!isNaN(items.minimum)) {\n validators.itemsMinValue = items.minimum;\n }\n if (!isNaN(items.maximum)) {\n validators.itemsMaxValue = items.maximum;\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges\n} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {debounceTime} from \"rxjs/operators\";\nimport {IAsyncMessage, IToasterService, ObservableUtils, TOASTER_SERVICE} from \"@stemy/ngx-utils\";\nimport {AsyncSubmitMethod, IDynamicForm} from \"../common-types\";\n\n@Directive({\n standalone: false,\n selector: \"[async-submit]\",\n exportAs: \"async-submit\"\n})\nexport class AsyncSubmitDirective implements OnChanges, OnDestroy {\n\n @Input(\"async-submit\") method: AsyncSubmitMethod;\n @Input() form: IDynamicForm;\n @Input() context: any;\n\n @Output() onSuccess: EventEmitter<IAsyncMessage>;\n @Output() onError: EventEmitter<IAsyncMessage>;\n\n protected loading: boolean;\n protected disabled: boolean;\n protected callback: Function;\n protected subscription: Subscription;\n\n @HostBinding(\"class.disabled\")\n get isDisabled(): boolean {\n return this.disabled;\n }\n\n set isDisabled(value: boolean) {\n this.disabled = value;\n if (value) {\n this.renderer.setAttribute(this.elem.nativeElement, \"disabled\", \"disabled\");\n return;\n }\n this.renderer.removeAttribute(this.elem.nativeElement, \"disabled\");\n }\n\n @HostBinding(\"class.loading\")\n get isLoading(): boolean {\n return this.loading;\n }\n\n constructor(@Inject(TOASTER_SERVICE) private toaster: IToasterService,\n readonly cdr: ChangeDetectorRef,\n readonly zone: NgZone,\n readonly elem: ElementRef<HTMLElement>,\n readonly renderer: Renderer2) {\n this.onSuccess = new EventEmitter<IAsyncMessage>();\n this.onError = new EventEmitter<IAsyncMessage>();\n if (elem.nativeElement.tagName !== \"BUTTON\") return;\n renderer.setAttribute(elem.nativeElement, \"type\", \"button\");\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Clear old subscription\n this.subscription?.unsubscribe();\n // Check if form changed\n if (changes.form) {\n const form = changes.form.currentValue as IDynamicForm;\n if (!form) return;\n // Force form for checking changes after fields get autofilled by the browser\n // setTimeout(() => {\n // console.log(\n // this.elem.nativeElement,\n // this.elem.nativeElement.focus\n // );\n // this.elem.nativeElement.focus?.();\n // }, 1500);\n }\n // Handle other things if we have a form instance\n if (!this.form) return;\n this.isDisabled = this.form.group?.status !== \"VALID\";\n this.cdr.detectChanges();\n this.subscription = ObservableUtils.multiSubscription(\n this.form.group?.statusChanges.subscribe(() => {\n const status = this.form.group?.status;\n this.isDisabled = status !== \"VALID\";\n this.cdr.detectChanges();\n if (!this.callback || status == \"PENDING\") return;\n if (!this.disabled) {\n this.callback();\n }\n this.callback = null;\n }),\n this.form.onSubmit?.pipe(debounceTime(200)).subscribe(() => this.callMethod())\n )\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n\n @HostListener(\"click\")\n click(): void {\n this.callback = () => this.callMethod();\n const status = this.form.group?.status;\n if (status !== \"VALID\" && status !== \"INVALID\") return;\n this.callback();\n this.callback = null;\n }\n\n callMethod(): void {\n if (this.loading) return;\n this.loading = true;\n this.method(this.form, this.context).then(result => {\n this.loading = false;\n if (result) {\n this.onSuccess.emit(result);\n this.toaster.success(result.message, result.context);\n }\n }, reason => {\n if (!reason || !reason.message)\n throw new Error(\"Reason must implement IAsyncMessage interface\");\n this.loading = false;\n this.onError.emit(reason);\n this.toaster.error(reason.message, reason.context);\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren\n} from \"@angular/core\";\nimport {FormArray, FormGroup} from \"@angular/forms\";\nimport {Subscription} from \"rxjs\";\nimport {debounceTime, groupBy, mergeMap} from \"rxjs/operators\";\nimport {\n DynamicFormComponent,\n DynamicFormComponentService,\n DynamicFormControlEvent,\n DynamicFormControlModel,\n DynamicFormLayout,\n DynamicFormModel,\n DynamicTemplateDirective\n} from \"@ng-dynamic-forms/core\";\nimport {EventsService, ObservableUtils} from \"@stemy/ngx-utils\";\nimport {DynamicFormState, GetFormControlComponentType, IDynamicForm, IDynamicFormEvent} from \"../../common-types\";\nimport {collectPathAble} from \"../../utils/misc\";\nimport {DynamicFormGroupModel} from \"../../utils/dynamic-form-group.model\";\nimport {DynamicFormArrayModel} from \"../../utils/dynamic-form-array.model\";\nimport {DynamicFormService} from \"../../services/dynamic-form.service\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-base-form\",\n template: \"\",\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class DynamicBaseFormComponent extends DynamicFormComponent implements OnChanges, AfterViewInit, IDynamicForm {\n\n @Input() group: FormGroup = null;\n @Input() model: DynamicFormModel = null;\n @Input() layout: DynamicFormLayout = null;\n\n @Output() blur: EventEmitter<DynamicFormControlEvent> = new EventEmitter();\n @Output() change: EventEmitter<DynamicFormControlEvent> = new EventEmitter();\n @Output() focus: EventEmitter<DynamicFormControlEvent> = new EventEmitter();\n\n @Input() groupModel: DynamicFormGroupModel;\n @Input() labelPrefix: string;\n @Input() getComponentType: GetFormControlComponentType;\n\n @ContentChildren(DynamicTemplateDirective) contentTemplates: QueryList<DynamicTemplateDirective>;\n @ViewChildren(DynamicTemplateDirective) viewTemplates: QueryList<DynamicTemplateDirective>;\n\n get status(): DynamicFormState {\n return !this.group ? null : this.group.status as DynamicFormState;\n }\n\n @Output() readonly onValueChange: EventEmitter<IDynamicFormEvent>;\n @Output() readonly onStatusChange: EventEmitter<IDynamicForm>;\n @Output() readonly onSubmit: EventEmitter<IDynamicForm>;\n @Output() readonly onDetectChanges: EventEmitter<IDynamicForm>;\n\n protected subscription: Subscription = new Subscription();\n protected groupSubscription: Subscription = new Subscription();\n\n constructor(@Inject(DynamicFormService) readonly formService: DynamicFormService,\n @Inject(EventsService) readonly events: EventsService,\n changeDetectorRef: ChangeDetectorRef,\n componentService: DynamicFormComponentService) {\n super(changeDetectorRef, componentService);\n this.groupModel = undefined\n this.labelPrefix = \"\";\n this.getComponentType = () => null;\n this.templates = new QueryList<DynamicTemplateDirective>();\n this.onValueChange = new EventEmitter();\n this.onStatusChange = new EventEmitter();\n this.onSubmit = new EventEmitter();\n this.onDetectChanges = new EventEmitter();\n }\n\n submit(): void {\n this.onSubmit.emit(this);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.groupSubscription.unsubscribe();\n if (this.group) {\n this.groupSubscription = ObservableUtils.multiSubscription(\n this.group.statusChanges.subscribe(() => {\n this.onStatusChange.emit(this);\n }),\n this.change.pipe(groupBy(ev => ev.model))\n .pipe(mergeMap(t => t.pipe(debounceTime(500))))\n .subscribe(ev => {\n this.onValueChange.emit({...ev, form: this});\n })\n );\n }\n if (changes.groupModel) {\n this.model = this.groupModel?.group;\n }\n if (changes.model) {\n this.groupModel = new DynamicFormGroupModel({id: \"root\", group: this.model || []});\n }\n }\n\n ngAfterViewInit(): void {\n this.subscription = ObservableUtils.multiSubscription(\n ObservableUtils.subscribe(\n {\n subjects: [this.contentTemplates.changes, this.viewTemplates.changes],\n cb: () => {\n const templates = this.contentTemplates.toArray().concat(this.viewTemplates.toArray());\n this.templates.reset(templates);\n }\n }\n ),\n this.events.languageChanged.subscribe(() => {\n this.formService.notifyChanges(this.model, this.group, this.model);\n this.formService.detectChanges(this);\n })\n );\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.subscription.unsubscribe();\n this.groupSubscription.unsubscribe();\n }\n\n detectChanges(): void {\n super.detectChanges();\n this.onDetectChanges.emit(this);\n }\n\n insertFormArrayGroup(index: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel): void {\n this.formService.insertFormArrayGroup(index, formArray, formArrayModel);\n this.detectChanges();\n }\n\n cloneFormArrayGroup(index: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel): void {\n this.formService.cloneFormArrayGroup(index, formArray, formArrayModel);\n this.detectChanges();\n }\n\n removeFormArrayGroup(index: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel): void {\n this.formService.removeFormArrayGroup(index, formArray, formArrayModel);\n this.detectChanges();\n }\n\n moveFormArrayGroup(index: number, step: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel): void {\n this.formService.moveFormArrayGroup(index, step, formArray, formArrayModel);\n this.detectChanges();\n }\n\n clearFormArray(formArray: FormArray, formArrayModel: DynamicFormArrayModel): void {\n this.formService.clearFormArray(formArray, formArrayModel);\n this.detectChanges();\n }\n\n getClass(model?: DynamicFormControlModel): string {\n const parts = collectPathAble(model, p => p.id);\n if (parts.length == 0) return \"\";\n if (model instanceof DynamicFormGroupModel) {\n return `form-group-${parts.join(\"-\")}`;\n }\n return `form-control-${parts.join(\"-\")}`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Injector,\n Input,\n Output,\n QueryList,\n Type,\n ViewChild,\n ViewContainerRef\n} from \"@angular/core\";\nimport {FormGroup} from \"@angular/forms\";\nimport {Subscription} from \"rxjs\";\nimport {\n DYNAMIC_FORM_CONTROL_TYPE_ARRAY,\n DynamicFormComponentService,\n DynamicFormControl,\n DynamicFormControlContainerComponent,\n DynamicFormControlEvent,\n DynamicFormControlModel,\n DynamicFormLayout,\n DynamicFormLayoutService,\n DynamicFormRelationService,\n DynamicFormValidationService,\n DynamicTemplateDirective\n} from \"@ng-dynamic-forms/core\";\nimport {ObjectUtils} from \"@stemy/ngx-utils\";\n\nimport {DynamicFormInitControl} from \"../../common-types\";\nimport {collectPathAble} from \"../../utils/misc\";\nimport {DynamicFormArrayGroupModel} from \"../../utils/dynamic-form-array.model\";\nimport {DynamicFormService} from \"../../services/dynamic-form.service\";\nimport {DynamicBaseFormComponent} from \"./dynamic-base-form.component\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-base-form-control\",\n template: \"\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {provide: DynamicFormControlContainerComponent, useExisting: DynamicBaseFormControlContainerComponent}\n ]\n})\nexport class DynamicBaseFormControlContainerComponent extends DynamicFormControlContainerComponent {\n\n @ContentChildren(DynamicTemplateDirective) contentTemplateList: QueryList<DynamicTemplateDirective> = null;\n\n @HostBinding(\"class\") klass = null;\n\n @Input() context: DynamicFormArrayGroupModel | null = null;\n @Input() group: FormGroup = null;\n @Input() hostClass: string[] = null;\n @Input(\"templates\") inputTemplateList: QueryList<DynamicTemplateDirective> = null;\n @Input() layout: DynamicFormLayout = null;\n @Input() model: DynamicFormControlModel = null;\n\n @Output() blur: EventEmitter<DynamicFormControlEvent> = new EventEmitter<DynamicFormControlEvent>();\n @Output() change: EventEmitter<DynamicFormControlEvent> = new EventEmitter<DynamicFormControlEvent>();\n @Output() focus: EventEmitter<DynamicFormControlEvent> = new EventEmitter<DynamicFormControlEvent>();\n\n @ViewChild(\"componentViewContainer\", {\n read: ViewContainerRef,\n static: true\n }) componentViewContainerRef: ViewContainerRef = null;\n\n get componentType(): Type<DynamicFormControl> | null {\n return this.form.getComponentType?.(this.model, this.injector)\n ?? this.componentService.getCustomComponentType(this.model);\n }\n\n get startTemplate(): DynamicTemplateDirective {\n return (this.model.type == DYNAMIC_FORM_CONTROL_TYPE_ARRAY)\n ? this.layoutService.getAlignedTemplate(this.model, this.templates, \"ARRAY_START\" as any)\n : this.layoutService.getStartTemplate(this.model, this.templates);\n }\n\n get endTemplate(): DynamicTemplateDirective {\n return (this.model.type == DYNAMIC_FORM_CONTROL_TYPE_ARRAY)\n ? this.layoutService.getAlignedTemplate(this.model, this.templates, \"ARRAY_END\" as any)\n : this.layoutService.getEndTemplate(this.model, this.templates);\n }\n\n get formService(): DynamicFormService {\n return this.form.formService;\n }\n\n protected onDetectChanges: Subscription;\n\n constructor(readonly form: DynamicBaseFormComponent,\n readonly cdr: ChangeDetectorRef,\n readonly injector: Injector,\n cfr: ComponentFactoryResolver,\n layoutService: DynamicFormLayoutService,\n validationService: DynamicFormValidationService,\n componentService: DynamicFormComponentService,\n relationService: DynamicFormRelationService) {\n super(cdr, cfr, layoutService, validationService, componentService, relationService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.onDetectChanges = this.form.onDetectChanges.subscribe(() => {\n this.changeDetectorRef.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.onDetectChanges.unsubscribe();\n }\n\n getLabel(): string {\n if (this.form?.labelPrefix) {\n const label = collectPathAble(this.model, p => p.id);\n if (label.length == 0) {\n return this.model.label;\n }\n label.unshift(this.form.labelPrefix);\n return label.join(\".\");\n }\n return this.model.label;\n }\n\n getLabelIcon(): string {\n if (this.context instanceof DynamicFormArrayGroupModel) {\n const arrayModel = this.context.context;\n if (arrayModel && arrayModel.sortBy == this.model.id) {\n return arrayModel.sortOrder;\n }\n }\n return null;\n }\n\n clickLabel(): void {\n if (this.context instanceof DynamicFormArrayGroupModel) {\n const arrayModel = this.context.context;\n if (arrayModel) {\n arrayModel.sortBy = this.model.id;\n }\n }\n }\n\n protected createFormControlComponent() {\n super.createFormControlComponent();\n const component = this.componentRef?.instance as DynamicFormInitControl;\n if (!component || !ObjectUtils.isFunction(component.initialize)) return;\n component.initialize(this.changeDetectorRef);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n Injector,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChildren\n} from \"@angular/core\";\nimport {FormGroup} from \"@angular/forms\";\nimport {Subscription} from \"rxjs\";\nimport {\n DynamicFormArrayComponent,\n DynamicFormControlCustomEvent,\n DynamicFormControlLayout,\n DynamicFormControlLayoutContext,\n DynamicFormControlLayoutPlace,\n DynamicFormControlModel,\n DynamicFormGroupModel,\n DynamicFormLayout,\n DynamicFormLayoutService,\n DynamicFormValidationService,\n DynamicFormValueControlModel,\n DynamicTemplateDirective\n} from \"@ng-dynamic-forms/core\";\nimport {DynamicFormArrayGroupModel, DynamicFormArrayModel} from \"../../utils/dynamic-form-array.model\";\nimport {collectPathAble} from \"../../utils/misc\";\nimport {DynamicFormInitControl} from \"../../common-types\";\nimport {DynamicBaseFormComponent} from \"./dynamic-base-form.component\";\nimport {DynamicBaseFormControlContainerComponent} from \"./dynamic-base-form-control-container.component\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-base-form-array\",\n template: \"\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DynamicBaseFormArrayComponent extends DynamicFormArrayComponent implements DynamicFormInitControl, OnDestroy {\n\n @Input() formLayout: DynamicFormLayout = null;\n @Input() group: FormGroup = null;\n @Input() layout: DynamicFormControlLayout = null;\n @Input() model: DynamicFormArrayModel = null;\n @Input() templates: QueryList<DynamicTemplateDirective> | undefined = null;\n\n @Output() blur: EventEmitter<any> = new EventEmitter();\n @Output() change: EventEmitter<any> = new EventEmitter();\n @Output() customEvent: EventEmitter<DynamicFormControlCustomEvent> = new EventEmitter();\n @Output() focus: EventEmitter<any> = new EventEmitter();\n\n @ViewChildren(forwardRef(() => DynamicBaseFormControlContainerComponent))\n components: QueryList<DynamicBaseFormControlContainerComponent> = null;\n\n get useTabs(): boolean {\n return this.model?.useTabs;\n }\n\n protected subscription: Subscription;\n\n constructor(layoutService: DynamicFormLayoutService, validationService: DynamicFormValidationService,\n readonly form: DynamicBaseFormComponent, readonly injector: Injector, readonly cdr: ChangeDetectorRef) {\n super(layoutService, validationService);\n }\n\n initialize(cdr: ChangeDetectorRef): void {\n this.subscription = this.model.filteredGroups.subscribe(filteredGroups => {\n this.updateGroups(filteredGroups);\n });\n this.model.initialize(this.array);\n }\n\n ngOnDestroy(): void {\n if (this.subscription)\n this.subscription.unsubscribe();\n }\n\n saveTab(index: number): void {\n this.model.saveTab(index, this.model.getFiltered(index), this.model, this.injector);\n }\n\n restoreTab(): number {\n return this.model.restoreTab(this.model, this.injector);\n }\n\n getTabLabel(index: number, model: DynamicFormArrayGroupModel): string {\n return this.model.getTabLabel(index, model, this.model, this.array, this.injector);\n }\n\n getClass(context: DynamicFormControlLayoutContext, place: DynamicFormControlLayoutPlace, model?: DynamicFormControlModel): string {\n return [\n context == \"element\" ? this.getModelClass(model) : null,\n context == \"element\" ? this.getAdditionalClass(model) : null,\n super.getClass(context, place, model),\n model instanceof DynamicFormValueControlModel ? model.additional?.classes : null\n ].filter(cls => !!cls).join(\" \");\n }\n\n protected getModelClass(model?: DynamicFormControlModel): string {\n const parts = collectPathAble(model, p => p.id);\n if (parts.length == 0) return \"\";\n if (model instanceof DynamicFormGroupModel) {\n return `form-group-${parts.join(\"-\")}`;\n }\n return `form-control-${parts.join(\"-\")}`;\n }\n\n protected getAdditionalClass(model?: DynamicFormControlModel): string {\n if (model instanceof DynamicFormArrayModel) {\n return model.additional?.classes;\n }\n if (model instanceof DynamicFormValueControlModel) {\n return model.additional?.classes;\n }\n return null;\n }\n\n protected updateGroups(filteredGroups: ReadonlyArray<DynamicFormArrayGroupModel>): void {\n this.cdr.detectChanges();\n this.components.forEach(t => t.cdr.detectChanges());\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n OnDestroy, Optional,\n Output\n} from \"@angular/core\";\nimport {FormGroup} from \"@angular/forms\";\nimport {Subscription} from \"rxjs\";\nimport {debounceTime} from \"rxjs/operators\";\nimport {\n DynamicFormControlComponent,\n DynamicFormControlLayout,\n DynamicFormControlModel,\n DynamicFormLayout,\n DynamicFormLayoutService,\n DynamicFormValidationService\n} from \"@ng-dynamic-forms/core\";\nimport {DynamicBaseFormComponent} from \"./dynamic-base-form.component\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-base-form-control\",\n template: \"\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DynamicBaseFormControlComponent<T extends DynamicFormControlModel> extends DynamicFormControlComponent implements AfterViewInit, OnDestroy {\n\n @Input() formLayout: DynamicFormLayout = null;\n @Input() group: FormGroup = null;\n @Input() layout: DynamicFormControlLayout = null;\n @Input() model: T = null;\n\n @Output() blur: EventEmitter<any> = new EventEmitter<any>();\n @Output() change: EventEmitter<any> = new EventEmitter<any>();\n @Output() focus: EventEmitter<any> = new EventEmitter<any>();\n\n protected subscription: Subscription;\n\n constructor(layoutService: DynamicFormLayoutService, validationService: DynamicFormValidationService,\n @Optional() readonly form: DynamicBaseFormComponent,\n readonly injector: Injector,\n readonly cdr: ChangeDetectorRef) {\n super(layoutService, validationService);\n }\n\n ngAfterViewInit(): void {\n this.subscription = this.control.valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.onValueChanged(value);\n });\n }\n\n ngOnDestroy(): void {\n if (!this.subscription) return;\n this.subscription.unsubscribe();\n }\n\n submit(): void {\n this.form?.submit();\n }\n\n protected onValueChanged(value: any): void {\n\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n QueryList,\n ViewChildren\n} from \"@angular/core\";\nimport {FormGroup} from \"@angular/forms\";\nimport {\n DynamicFormControlContainerComponent,\n DynamicFormControlCustomEvent,\n DynamicFormControlLayout,\n DynamicFormControlLayoutContext,\n DynamicFormControlLayoutPlace,\n DynamicFormControlModel,\n DynamicFormGroupComponent,\n DynamicFormLayout,\n DynamicFormLayoutService,\n DynamicFormValidationService,\n DynamicFormValueControlModel,\n DynamicTemplateDirective\n} from \"@ng-dynamic-forms/core\";\nimport {collectPathAble} from \"../../utils/misc\";\nimport {DynamicFormArrayModel} from \"../../utils/dynamic-form-array.model\";\nimport {DynamicFormGroupModel} from \"../../utils/dynamic-form-group.model\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-base-form-group\",\n template: \"\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DynamicBaseFormGroupComponent extends DynamicFormGroupComponent {\n\n @Input() formLayout: DynamicFormLayout = null;\n @Input() group: FormGroup = null;\n @Input() layout: DynamicFormControlLayout = null;\n @Input() model: DynamicFormGroupModel = null;\n @Input() templates: QueryList<DynamicTemplateDirective> | DynamicTemplateDirective[] | undefined = [];\n\n @Output() blur: EventEmitter<any> = new EventEmitter();\n @Output() change: EventEmitter<any> = new EventEmitter();\n @Output() customEvent: EventEmitter<DynamicFormControlCustomEvent> = new EventEmitter();\n @Output() focus: EventEmitter<any> = new EventEmitter();\n\n @ViewChildren(forwardRef(() => DynamicFormControlContainerComponent))\n components: QueryList<DynamicFormControlContainerComponent> = null;\n\n constructor(protected layoutService: DynamicFormLayoutService,\n protected validationService: DynamicFormValidationService) {\n super(layoutService, validationService);\n }\n\n getClass(context: DynamicFormControlLayoutContext, place: DynamicFormControlLayoutPlace, model?: DynamicFormControlModel): string {\n return [\n context == \"element\" ? this.getModelClass(model) : null,\n context == \"element\" ? this.getAdditionalClass(model) : null,\n super.getClass(context, place, model)\n ].filter(cls => !!cls).join(\" \");\n }\n\n protected getModelClass(model?: DynamicFormControlModel): string {\n const parts = collectPathAble(model, p => p.id);\n if (parts.length == 0) return \"\";\n if (model instanceof DynamicFormGroupModel) {\n return `form-group-${parts.join(\"-\")}`;\n }\n return `form-control-${parts.join(\"-\")}`;\n }\n\n protected getAdditionalClass(model?: DynamicFormControlModel): string {\n if (model instanceof DynamicFormArrayModel) {\n return model.additional?.classes;\n }\n if (model instanceof DynamicFormValueControlModel) {\n return model.additional?.classes;\n }\n return null;\n }\n}\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from \"@angular/core\";\nimport {BehaviorSubject, Subscription} from \"rxjs\";\nimport {DynamicBaseFormControlComponent} from \"./dynamic-base-form-control.component\";\nimport {DynamicFormOption, DynamicFormOptionGroup, DynamicSelectModel} from \"../../utils/dynamic-select.model\";\nimport {replaceSpecialChars} from \"../../utils/misc\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-base-select\",\n template: \"\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DynamicBaseSelectComponent extends DynamicBaseFormControlComponent<DynamicSelectModel<any>> implements OnInit, OnDestroy {\n\n groups$: BehaviorSubject<DynamicFormOptionGroup<any>[]>;\n hasOptions: boolean;\n\n ngOnInit(): void {\n this.groups$ = new BehaviorSubject<DynamicFormOptionGroup<any>[]>([]);\n this.subscription = this.model.options$.subscribe(options => {\n const groupBy = this.model.inline || !this.model.multiple ? this.model.groupBy : null;\n const grouped = options.reduce((res, option) => {\n const key = replaceSpecialChars(groupBy ? option.props[this.model.groupBy] || \"default\" : \"default\", \"-\");\n res[key] = res[key] || [];\n res[key].push(option);\n return res;\n }, {});\n const groups = Object.keys(grouped).map(group => {\n return {\n group,\n options: grouped[group]\n };\n });\n this.hasOptions = groups.length > 0;\n this.groups$.next(groups);\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n if (this.subscription)\n this.subscription.unsubscribe();\n }\n\n isSelected(option: DynamicFormOption<any>): boolean {\n if (this.model.multiple) {\n return this.control.value?.indexOf(option.value) >= 0;\n }\n return this.control.value == option.value;\n }\n\n selectToggle(option: DynamicFormOption<any>, state: boolean): void {\n if (this.model.multiple) {\n const value = Array.from(this.control.value || []);\n const index = value.indexOf(option.value);\n if (index >= 0) {\n value.splice(index, 1);\n }\n if (state) {\n value.push(option.value);\n }\n this.control.setValue(value);\n this.onChange(value);\n return;\n }\n this.control.setValue(option.value);\n this.onChange(option.value);\n }\n}\n","import {DynamicFormControlMapFn} from \"@ng-dynamic-forms/core\";\n\nimport {AsyncSubmitDirective} from \"./directives/async-submit.directive\";\n\nimport {DynamicBaseFormComponent} from \"./components/base/dynamic-base-form.component\";\nimport {DynamicBaseFormArrayComponent} from \"./components/base/dynamic-base-form-array.component\";\nimport {DynamicBaseFormControlComponent} from \"./components/base/dynamic-base-form-control.component\";\nimport {\n DynamicBaseFormControlContainerComponent\n} from \"./components/base/dynamic-base-form-control-container.component\";\nimport {DynamicBaseFormGroupComponent} from \"./components/base/dynamic-base-form-group.component\";\nimport {DynamicBaseSelectComponent} from \"./components/base/dynamic-base-select.component\";\n\n// --- Components ---\nexport const components = [\n DynamicBaseFormComponent,\n DynamicBaseFormArrayComponent,\n DynamicBaseFormControlComponent,\n DynamicBaseFormControlContainerComponent,\n DynamicBaseFormGroupComponent,\n DynamicBaseSelectComponent\n];\n\n// --- Directives ---\nexport const directives = [\n AsyncSubmitDirective,\n];\n\n// --- Pipes ---\nexport const pipes = [];\n\nexport function defaultFormControlProvider(): DynamicFormControlMapFn {\n return () => null;\n}\n","import {\n EnvironmentProviders,\n Injector,\n makeEnvironmentProviders,\n ModuleWithProviders,\n NgModule,\n Provider\n} from \"@angular/core\";\nimport {CommonModule} from \"@angular/common\";\nimport {FormsModule, NG_VALIDATORS, ReactiveFormsModule} from \"@angular/forms\";\nimport {\n DYNAMIC_FORM_CONTROL_MAP_FN,\n DYNAMIC_VALIDATORS,\n DynamicFormService as BaseDynamicFormService,\n Validator,\n ValidatorFactory\n} from \"@ng-dynamic-forms/core\";\nimport {NgxUtilsModule} from \"@stemy/ngx-utils\";\n\nimport {\n validateItemsMaxLength,\n validateItemsMaxValue,\n validateItemsMinLength,\n validateItemsMinValue,\n validateJSON,\n validatePhone,\n validateRequiredTranslation\n} from \"./utils/validators\";\nimport {DynamicFormService} from \"./services/dynamic-form.service\";\nimport {components, defaultFormControlProvider, directives, pipes} from \"./ngx-dynamic-form.imports\";\nimport {IDynamicFormModuleConfig} from \"./common-types\";\n\n@NgModule({\n declarations: [\n ...components,\n ...directives,\n ...pipes\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgxUtilsModule\n ],\n exports: [\n ...components,\n ...directives,\n ...pipes,\n FormsModule,\n ReactiveFormsModule,\n NgxUtilsModule\n ],\n providers: [\n ...pipes,\n {provide: NG_VALIDATORS, useValue: validateJSON, multi: true},\n {provide: NG_VALIDATORS, useValue: validateRequiredTranslation, multi: true},\n {provide: NG_VALIDATORS, useValue: validateItemsMinLength, multi: true},\n {provide: NG_VALIDATORS, useValue: validateItemsMaxLength, multi: true},\n {provide: NG_VALIDATORS, useValue: validateItemsMinValue, multi: true},\n {provide: NG_VALIDATORS, useValue: validateItemsMaxValue, multi: true},\n {\n provide: DYNAMIC_VALIDATORS,\n useValue: new Map<string, Validator | ValidatorFactory>([\n [\"json\", validateJSON],\n [\"requiredTranslation\", validateRequiredTranslation],\n [\"phone\", validatePhone],\n [\"itemsMinLength\", validateItemsMinLength],\n [\"itemsMaxLength\", validateItemsMaxLength],\n [\"itemsMinValue\", validateItemsMinValue],\n [\"itemsMaxValue\", validateItemsMaxValue],\n ])\n }\n ]\n})\nexport class NgxDynamicFormModule {\n\n private static getProviders(config?: IDynamicFormModuleConfig): Provider[] {\n return [\n DynamicFormService,\n {\n provide: BaseDynamicFormService,\n useExisting: DynamicFormService\n },\n {\n provide: DYNAMIC_FORM_CONTROL_MAP_FN,\n useFactory: (config?.controlProvider || defaultFormControlProvider),\n deps: [Injector]\n }\n ];\n }\n\n static forRoot(config?: IDynamicFormModuleConfig): ModuleWithProviders<NgxDynamicFormModule> {\n return {\n ngModule: NgxDynamicFormModule,\n providers: NgxDynamicFormModule.getProviders(config)\n }\n }\n\n static provideForms(config?: IDynamicFormModuleConfig): EnvironmentProviders {\n return makeEnvironmentProviders(NgxDynamicFormModule.getProviders(config));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["GroupBase","Base","BaseOption","i1.DynamicBaseFormComponent","i2","DynamicFormGroupModel","i2.DynamicBaseFormComponent","BaseDynamicFormService"],"mappings":"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"}
1
+ {"version":3,"file":"stemy-ngx-dynamic-form.mjs","sources":["../../src/ngx-dynamic-form/common-types.ts","../../src/ngx-dynamic-form/utils/customizer.ts","../../src/ngx-dynamic-form/utils/decorators.ts","../../src/ngx-dynamic-form/utils/validation.ts","../../src/ngx-dynamic-form/utils/misc.ts","../../src/ngx-dynamic-form/services/dynamic-form-builder.service.ts","../../src/ngx-dynamic-form/utils/validation-errors.ts","../../src/ngx-dynamic-form/services/dynamic-form.service.ts","../../src/ngx-dynamic-form/directives/async-submit.directive.ts","../../src/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.ts","../../src/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.html","../../src/ngx-dynamic-form/components/dynamic-form-array/dynamic-form-array.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-array/dynamic-form-array.component.html","../../src/ngx-dynamic-form/components/dynamic-form-chips/dynamic-form-chips.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-chips/dynamic-form-chips.component.html","../../src/ngx-dynamic-form/components/dynamic-form-field/dynamic-form-field.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-field/dynamic-form-field.component.html","../../src/ngx-dynamic-form/components/dynamic-form-fieldset/dynamic-form-fieldset.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-fieldset/dynamic-form-fieldset.component.html","../../src/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.html","../../src/ngx-dynamic-form/components/dynamic-form-upload/dynamic-form-upload.component.ts","../../src/ngx-dynamic-form/components/dynamic-form-upload/dynamic-form-upload.component.html","../../src/ngx-dynamic-form/ngx-dynamic-form.imports.ts","../../src/ngx-dynamic-form/ngx-dynamic-form.module.ts","../../src/stemy-ngx-dynamic-form.ts"],"sourcesContent":["import {Injector, OutputRef, Signal} from \"@angular/core\";\nimport {AbstractControl, FormGroup} from \"@angular/forms\";\nimport {Observable} from \"rxjs\";\nimport {FieldTypeConfig, FormlyFieldConfig, FormlyFieldProps} from \"@ngx-formly/core\";\nimport {FormlySelectOption} from \"@ngx-formly/core/select\";\nimport {IAsyncMessage, IOpenApiSchema, IOpenApiSchemaProperty, IRequestOptions} from \"@stemy/ngx-utils\";\n\nexport type PromiseOrNot<T> = Promise<T> | T;\n\n// --- Basic frm constants ---\nexport const FORM_ROOT_KEY = \"__root\";\n\n// --- Basic form types ---\n\nexport type DynamicFormState = \"VALID\" | \"INVALID\" | \"PENDING\" | \"DISABLED\" | \"LOADING\";\nexport type DynamicFormUpdateOn = \"change\" | \"blur\" | \"submit\";\nexport type UploadData = Record<string, any> | ArrayBuffer | FormData;\n\n// --- Basic form field interfaces ---\n\nexport interface FormBuilderOptions {\n labelPrefix?: string;\n}\n\nexport interface FormFieldProps extends FormlyFieldProps {\n // --- Input props ---\n autocomplete?: string;\n // --- Checkbox props ---\n formCheck?: string;\n indeterminate?: boolean;\n // --- Select props ---\n multiple?: boolean;\n inline?: boolean;\n allowEmpty?: boolean;\n groupBy?: string;\n // --- Array props ---\n useTabs?: boolean;\n tabsLabel?: string;\n addItem?: boolean;\n insertItem?: boolean;\n cloneItem?: boolean;\n moveItem?: boolean;\n removeItem?: boolean;\n clearItems?: boolean;\n // --- Upload props ---\n accept?: string | string[];\n url?: string;\n maxSize?: number;\n uploadOptions?: IRequestOptions;\n createUploadData?: (file: File) => UploadData | Promise<UploadData>;\n // --- Old upload props\n multi?: boolean;\n asFile?: boolean;\n uploadUrl?: string;\n}\n\nexport interface FormBaseFieldConfig<T = FormFieldProps> extends FormlyFieldConfig<T> {\n\n}\n\nexport type FormFieldSerializer = (field: FormBaseFieldConfig, injector: Injector) => PromiseOrNot<any>;\n\nexport declare type FormHookFn = (field: FormBaseFieldConfig) => void;\n\nexport interface FormHookConfig {\n onInit?: FormHookFn | ((field: FormBaseFieldConfig) => Observable<any>);\n onChanges?: FormHookFn;\n afterContentInit?: FormHookFn;\n afterViewInit?: FormHookFn;\n onDestroy?: FormHookFn;\n}\n\nexport interface FormFieldConfig<T = FormFieldProps> extends FormBaseFieldConfig<T> {\n serializer?: FormFieldSerializer;\n serialize?: boolean;\n fieldSet?: string;\n hooks?: FormHookConfig;\n}\n\nexport interface FormFieldType<T = FormFieldProps> extends FieldTypeConfig<T> {\n\n}\n\nexport interface FormSerializeResult {\n [key: string]: any;\n}\n\nexport interface FormSelectOption extends FormlySelectOption {\n className?: string;\n classes?: string[] | string;\n id?: any;\n}\n\nexport type FormSelectOptions = FormSelectOption[] | Observable<FormSelectOption[]>;\n\nexport interface IDynamicForm {\n\n readonly config: Signal<FormFieldConfig[]>;\n readonly group: Signal<FormGroup>;\n readonly status: Signal<DynamicFormState>;\n readonly onSubmit: OutputRef<IDynamicForm>;\n\n}\n\n// --- Validation types ---\n\ntype FormFieldValidatorFn<T> = ((control: AbstractControl, field?: FormlyFieldConfig) => T) & {validatorName?: string};\n\nexport type ValidationMessageFn = (error: any, field: FormFieldConfig) => string | Observable<string>;\n\ninterface FormFieldValidatorExpression<T> {\n expression: FormFieldValidatorFn<T>;\n message: ValidationMessageFn;\n}\n\ntype FormFieldValidation<T, R> = {\n validation?: (string | T)[];\n} & {\n [key: string]: FormFieldValidatorFn<R> | FormFieldValidatorExpression<R>;\n}\n\nexport type ValidatorFn = FormFieldValidatorFn<boolean>;\n\nexport type ValidatorExpression = FormFieldValidatorExpression<boolean>;\n\nexport type Validators = FormFieldValidation<ValidatorFn, boolean>;\n\nexport type AsyncBoolean = Promise<boolean> | Observable<boolean>;\n\nexport type AsyncValidatorFn = FormFieldValidatorFn<AsyncBoolean>;\n\nexport type AsyncValidatorExpression = FormFieldValidatorExpression<AsyncBoolean>;\n\nexport type AsyncValidators = FormFieldValidation<AsyncValidatorFn, AsyncBoolean>;\n\n// --- Form field data types ---\n\nexport type FormFieldCustom = Pick<FormFieldConfig, \"wrappers\" | \"hooks\" | \"fieldGroup\" | \"fieldArray\">;\n\nexport type FormFieldData = Pick<FormFieldProps, \"label\" | \"readonly\" | \"hidden\">\n & {\n validators?: Validators | ValidatorFn[];\n serializer?: FormFieldSerializer;\n fieldSet?: string;\n classes?: string[] | string;\n};\n\nexport type FormInputData = FormFieldData\n & Pick<FormFieldProps, \"type\" | \"pattern\" | \"placeholder\" | \"step\" | \"min\" | \"max\" | \"minLength\" | \"maxLength\" | \"autocomplete\" | \"indeterminate\" | \"cols\" | \"rows\">;\n\nexport type FormSelectData = FormFieldData\n & Pick<FormFieldProps, \"multiple\" | \"type\" | \"inline\" | \"allowEmpty\" | \"groupBy\"> & {\n options: (field: FormFieldConfig) => FormSelectOptions | Promise<FormSelectOption[]>;\n};\n\nexport type FormUploadData = FormFieldData\n & Pick<FormFieldProps, \"inline\" | \"multiple\" | \"accept\" | \"url\" | \"maxSize\" | \"uploadOptions\" | \"createUploadData\" | \"multi\" | \"asFile\" | \"uploadUrl\">;\n\nexport type FormGroupData = FormFieldData;\n\nexport type FormArrayData = FormFieldData\n & Pick<FormFieldProps, \"useTabs\" | \"tabsLabel\" | \"addItem\" | \"insertItem\" | \"cloneItem\" | \"moveItem\" | \"removeItem\" | \"clearItems\">;\n\n// --- JSON schema interfaces ---\n\nexport type FormFieldCustomizer = (\n property: IOpenApiSchemaProperty, schema: IOpenApiSchema, field: FormlyFieldConfig,\n parent: FormFieldConfig, options: FormBuilderOptions, injector: Injector\n) => PromiseOrNot<FormlyFieldConfig | FormlyFieldConfig[]>;\n\nexport interface ConfigForSchemaOptions extends FormBuilderOptions {\n customizer?: FormFieldCustomizer;\n}\n\nexport interface ConfigForSchemaWrapOptions extends Omit<ConfigForSchemaOptions, \"customizer\"> {\n schema: IOpenApiSchema;\n injector?: Injector;\n customizer?: (\n property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions,\n field: FormFieldConfig, parent: FormFieldConfig\n ) => Promise<FormFieldConfig[]>;\n}\n\n\nexport declare type AsyncSubmitMethod = (form: IDynamicForm, context?: any) => Promise<IAsyncMessage>;\n\nexport interface IDynamicFormModuleConfig {\n // controlProvider?: (injector: Injector) => DynamicFormControlMapFn;\n}\n","import {cachedFactory, CachedProvider, IOpenApiSchema, IOpenApiSchemaProperty} from \"@stemy/ngx-utils\";\n\nimport {FormBuilderOptions, FormFieldConfig, FormFieldCustomizer, PromiseOrNot} from \"../common-types\";\n\nexport interface IFormFieldCustomizer {\n acceptField(config: FormFieldConfig, parent: FormFieldConfig): boolean;\n customizeField(\n config: FormFieldConfig,\n property: IOpenApiSchemaProperty,\n schema: IOpenApiSchema,\n parent: FormFieldConfig,\n options: FormBuilderOptions\n ): PromiseOrNot<FormFieldConfig | FormFieldConfig[]>;\n}\n\nexport function customizeFormField(...providers: CachedProvider<IFormFieldCustomizer>[]): FormFieldCustomizer {\n const factory = cachedFactory(providers);\n return async (property, schema, config, parent, options, injector) => {\n const customizers = factory(injector);\n const configs = [config];\n for (const customizer of customizers) {\n const index = configs.findIndex(m => customizer.acceptField(m, parent));\n if (index >= 0) {\n const custom = await customizer.customizeField(\n configs[index], property, schema, parent, options\n );\n const result = Array.isArray(custom) ? custom : [custom];\n configs.splice(index, 1, ...result);\n }\n }\n return configs;\n }\n}\n","import {ObjectUtils, ReflectUtils} from \"@stemy/ngx-utils\";\nimport {\n FormArrayData,\n FormFieldSerializer,\n FormGroupData,\n FormInputData,\n FormSelectData,\n FormUploadData\n} from \"../common-types\";\nimport {FormFieldBuilder} from \"../services/dynamic-form-builder.service\";\nimport {Type} from \"@angular/core\";\n\nfunction defineFormControl(target: any, propertyKey: string, cb: FormFieldBuilder): void {\n const fields: Set<string> = ReflectUtils.getMetadata(\"dynamicFormFields\", target) || new Set();\n const existing: FormFieldBuilder = ReflectUtils.getMetadata(\"dynamicFormField\", target, propertyKey);\n const builder: FormFieldBuilder = !ObjectUtils.isFunction(existing) ? cb : ((fb, opts, path) => {\n const data = existing(fb, opts, path);\n return ObjectUtils.assign(data || {}, cb(fb, opts, path) || {});\n });\n fields.add(propertyKey);\n ReflectUtils.defineMetadata(\"dynamicFormField\", builder, target, propertyKey);\n ReflectUtils.defineMetadata(\"dynamicFormFields\", fields, target);\n}\n\nexport function FormSerializable(serializer?: FormFieldSerializer): PropertyDecorator {\n return (target: any, key: string): void => {\n defineFormControl(target, key, () => ({key, serializer, serialize: true}));\n };\n}\n\nexport function FormInput(data?: FormInputData): PropertyDecorator {\n return (target: any, key: string): void => {\n const meta = ReflectUtils.getOwnMetadata(\"design:type\", target, key);\n const type = meta ? meta.name : \"\";\n let inputType = key.indexOf(\"password\") < 0 ? \"text\" : \"password\";\n switch (type) {\n case \"Number\":\n inputType = \"number\";\n break;\n case \"Boolean\":\n inputType = \"checkbox\";\n break;\n }\n data.type = data.type || inputType;\n defineFormControl(\n target, key,\n (fb, path, options) =>\n fb.createFormInput(key, data, path, options)\n );\n };\n}\n\nexport function FormSelect(data?: FormSelectData): PropertyDecorator {\n return (target: any, key: string): void => {\n defineFormControl(\n target, key,\n (fb, path, options) =>\n fb.createFormSelect(key, data, path, options)\n );\n };\n}\n\nexport function FormUpload(data?: FormUploadData): PropertyDecorator {\n return (target: any, key: string): void => {\n defineFormControl(\n target, key,\n (fb, path, options) =>\n fb.createFormUpload(key, data, path, options)\n );\n };\n}\n\nexport function FormFile(data?: FormUploadData): PropertyDecorator {\n console.warn(`@FormFile decorator is deprecated, use @FormUpload instead`);\n return FormUpload(data);\n}\n\nexport function FormGroup(data?: FormGroupData): PropertyDecorator {\n return (target: any, key: string): void => {\n defineFormControl(\n target, key,\n (fb, path, options) => {\n const targetType = ReflectUtils.getOwnMetadata(\"design:type\", target, key);\n return fb.resolveFormGroup(key, targetType, data, path, options);\n }\n );\n };\n}\n\nexport function FormArray(itemType: string | FormInputData | Type<any>, data?: FormArrayData): PropertyDecorator {\n return (target: any, key: string): void => {\n defineFormControl(\n target, key,\n (fb, path, options) => {\n return fb.resolveFormArray(key, itemType, data, path, options);\n }\n );\n };\n}\n\nexport function FormModel(data?: FormGroupData): PropertyDecorator {\n console.warn(`@FormModel decorator is deprecated, use @FormGroup instead`);\n return FormGroup(data);\n}\n","import {Injector} from \"@angular/core\";\nimport {LANGUAGE_SERVICE, ObjectUtils} from \"@stemy/ngx-utils\";\nimport {ValidationMessageFn, ValidatorFn} from \"../common-types\";\n\nexport function validationMessage(injector: Injector, key: string, labelPrefix?: string): ValidationMessageFn {\n const language = injector.get(LANGUAGE_SERVICE);\n return (_, field) => {\n return language.getTranslationSync(labelPrefix ? `${labelPrefix}.error.${key}` : `error.${key}`, field);\n }\n}\n\nexport function withName(fn: ValidatorFn, name: string): ValidatorFn {\n fn.validatorName = name;\n return fn;\n}\n\nfunction validateEach(each: boolean, cb: (value: any) => boolean, name: string): ValidatorFn {\n return withName((control) => {\n const value = control.value;\n return each ? Array.isArray(value) && value.every(cb) : cb(value);\n }, name);\n}\n\nexport function jsonValidation(): ValidatorFn {\n return withName((control) => {\n const value = control.value;\n if (!value) return false;\n try {\n JSON.parse(value);\n return true;\n } catch (e) {\n return false;\n }\n }, \"json\");\n}\n\nexport function requiredValidation(): ValidatorFn {\n return withName((control) =>\n ObjectUtils.isString(control.value) ? control.value.length > 0 : ObjectUtils.isDefined(control.value),\n \"required\"\n )\n}\n\nexport function translationValidation(langs: string[] = [\"de\", \"en\"]): ValidatorFn {\n return withName((control) => {\n const value: any[] = control.value;\n if (!value || value.length == 0) return false;\n return value.findIndex(t => langs.includes(t.lang) && !t.translation) < 0;\n }, \"translation\");\n}\n\nexport function phoneValidation(): ValidatorFn {\n return withName((control) => {\n const value = control.value;\n if (!value) return true;\n const phoneRegexp = /^\\d{10,12}$/;\n return phoneRegexp.test(value);\n }, \"phone\");\n}\n\nexport function emailValidation(): ValidatorFn {\n return withName((control) => {\n const value = control.value;\n if (!value) return true;\n const emailRegexp = /^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g;\n return emailRegexp.test(value);\n }, \"email\");\n}\n\nexport function minLengthValidation(minLength: number, each?: boolean): ValidatorFn {\n return validateEach(each, v => typeof v == \"string\" && v.length >= minLength, \"minLength\");\n}\n\nexport function maxLengthValidation(maxLength: number, each?: boolean): ValidatorFn {\n return validateEach(each, v => typeof v == \"string\" && v.length <= maxLength, \"maxLength\");\n}\n\nexport function minValueValidation(min: number, each?: boolean): ValidatorFn {\n return validateEach(each, v => typeof v == \"number\" && v >= min, \"minValue\");\n}\n\nexport function maxValueValidation(max: number, each?: boolean): ValidatorFn {\n return validateEach(each, v => typeof v == \"number\" && v <= max, \"maxValue\");\n}\n","import {IOpenApiSchemaProperty} from \"@stemy/ngx-utils\";\nimport {FormlyFieldConfig} from \"@ngx-formly/core\";\n\nexport function isStringWithVal(val: any): boolean {\n return typeof val == \"string\" && val.length > 0;\n}\n\nexport function findRefs(property: IOpenApiSchemaProperty): string[] {\n const refs = Array.isArray(property.allOf)\n ? property.allOf.map(o => o.$ref).filter(isStringWithVal)\n : [property.items?.$ref, property.$ref].filter(isStringWithVal);\n return refs.map(t => t.split(\"/\").pop());\n}\n\nexport function replaceSpecialChars(str: string, to: string = \"-\"): string {\n return `${str}`.replace(/[&\\/\\\\#, +()$~%.@'\":*?<>{}]/g, to);\n}\n\nexport function mergeFormFields(formFields: FormlyFieldConfig[][]): FormlyFieldConfig[] {\n const res: FormlyFieldConfig[] = [];\n for (const formModel of formFields) {\n for (const subModel of formModel) {\n const index = res.findIndex(t => t.key == subModel.key);\n if (index >= 0) {\n res[index] = subModel;\n continue;\n }\n res.push(subModel);\n }\n }\n return res;\n}\n\nexport const MIN_INPUT_NUM = -999999999;\n\nexport const MAX_INPUT_NUM = 999999999;\n\nexport const EDITOR_FORMATS = [\"php\", \"json\", \"html\", \"css\", \"scss\"];\n","import {Inject, Injectable, Injector, Type} from \"@angular/core\";\nimport {distinctUntilChanged, startWith, switchMap} from \"rxjs\";\nimport {\n API_SERVICE,\n IApiService,\n ILanguageService,\n LANGUAGE_SERVICE,\n ObjectUtils,\n ReflectUtils\n} from \"@stemy/ngx-utils\";\n\nimport {\n FormArrayData,\n FormBuilderOptions,\n FormFieldConfig,\n FormFieldData,\n FormFieldProps,\n FormGroupData,\n FormInputData,\n FormSelectData,\n FormSelectOption,\n FormUploadData,\n PromiseOrNot,\n Validators\n} from \"../common-types\";\nimport {validationMessage} from \"../utils/validation\";\nimport {isStringWithVal, MAX_INPUT_NUM, MIN_INPUT_NUM} from \"../utils/misc\";\n\nexport type FormFieldBuilder = (fb: DynamicFormBuilderService, parent: FormFieldConfig, options: FormBuilderOptions) => FormFieldConfig;\n\n@Injectable()\nexport class DynamicFormBuilderService {\n\n constructor(readonly injector: Injector,\n @Inject(API_SERVICE) readonly api: IApiService,\n @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService) {\n }\n\n protected getLabel(key: string, label: string, parent: FormFieldConfig, options: FormBuilderOptions): string {\n const labelPrefix = !ObjectUtils.isString(options.labelPrefix) ? `` : options.labelPrefix;\n const pathPrefix = `${parent?.props?.label || labelPrefix}`;\n const labelItems = ObjectUtils.isString(label)\n ? (!label ? [] : [labelPrefix, label])\n : [pathPrefix, `${key || \"\"}`]\n return labelItems.filter(l => l.length > 0).join(\".\");\n }\n\n protected createFormField(key: string, type: string, data: FormFieldData, props: FormFieldProps, parent: FormFieldConfig, options: FormBuilderOptions): FormFieldConfig {\n const validators = Array.isArray(data.validators)\n ? data.validators.reduce((res, validator, ix) => {\n res[validator.validatorName || `validator_${ix}`] = validator;\n return res;\n }, {} as Validators)\n : data.validators || {};\n return {\n key,\n type,\n validators,\n parent,\n className: Array.isArray(data.classes) ? data.classes.join(\" \") : data.classes || \"\",\n hide: data.hidden === true,\n fieldSet: String(data.fieldSet || \"\"),\n validation: {\n messages: Object.keys(validators).reduce((res, key) => {\n res[key] = validationMessage(this.injector, key, options.labelPrefix);\n return res;\n }, {})\n },\n props: {\n ...props,\n formCheck: \"nolabel\",\n required: !!validators.required,\n label: this.getLabel(key, data.label, parent, options),\n }\n }\n }\n\n resolveFormFields(target: Type<any>, parent: FormFieldConfig, options: FormBuilderOptions): FormFieldConfig[] {\n const prototype = target?.prototype || {};\n const fields: Set<string> = ReflectUtils.getMetadata(\"dynamicFormFields\", target?.prototype || {}) || new Set();\n const result: FormFieldConfig[] = [];\n for (const key of fields) {\n const builder: FormFieldBuilder = ReflectUtils.getMetadata(\"dynamicFormField\", prototype, key);\n const field = builder(this, parent, options);\n if (field) {\n result.push(field);\n }\n }\n return this.createFieldSets(result, parent, options);\n }\n\n resolveFormGroup(key: string, target: Type<any>, data: FormGroupData, parent: FormFieldConfig = null, options: FormBuilderOptions = {}): FormFieldConfig {\n return this.createFormGroup(key, sp => this.resolveFormFields(\n target, sp, options\n ), data, parent, options);\n }\n\n resolveFormArray(key: string, itemType: string | FormInputData | Type<any>, data: FormArrayData, parent: FormFieldConfig = null, options: FormBuilderOptions = {}): FormFieldConfig {\n return this.createFormArray(key, sp => {\n return typeof itemType === \"function\" ? this.resolveFormFields(\n itemType, sp, options\n ) : this.createFormInput(\"\", typeof itemType === \"string\" ? {type: `${itemType}`} : itemType, null, options);\n }, data, parent, options);\n }\n\n createFieldSets(fields: FormFieldConfig[], parent: FormFieldConfig, options: FormBuilderOptions): FormFieldConfig[] {\n const others: FormFieldConfig[] = [];\n const groups: { [fs: string]: FormFieldConfig[] } = {};\n\n for (const field of fields) {\n const fsName = field.hide ? null : String(field.fieldSet || \"\");\n // If we have a fieldset name defined and have actual fields for it\n // then push the property fields into a group\n if (fsName) {\n const group = groups[fsName] || [];\n groups[fsName] = group;\n group.push(field);\n continue;\n }\n // Otherwise just push the fields to the others\n others.push(field);\n }\n\n // Create a field-set wrapper for each group and concat the other fields to the end\n return Object.keys(groups).map(group => {\n return {\n fieldGroup: groups[group],\n wrappers: [\"form-fieldset\"],\n id: !parent ? group : `${parent.props?.label}.${group}`,\n props: {\n label: this.getLabel(group, group, parent, options),\n hidden: false\n }\n } as FormFieldConfig;\n }).concat(others);\n }\n\n createFormInput(key: string, data: FormInputData, parent: FormFieldConfig, options: FormBuilderOptions): FormFieldConfig {\n data = data || {};\n return this.createFormField(key, data.type === \"checkbox\" ? \"checkbox\" : \"input\", data, {\n type: `${data.type || \"text\"}`,\n pattern: ObjectUtils.isString(data.pattern) ? data.pattern : \"\",\n step: data.step,\n cols: data.cols || null,\n rows: data.rows || 10,\n min: isNaN(data.min) ? MIN_INPUT_NUM : data.min,\n max: isNaN(data.max) ? MAX_INPUT_NUM : data.max,\n minLength: isNaN(data.minLength) ? 0 : data.minLength,\n maxLength: isNaN(data.maxLength) ? MAX_INPUT_NUM : data.maxLength,\n placeholder: data.placeholder || \"\",\n attributes: {\n autocomplete: data.autocomplete || \"off\"\n },\n }, parent, options);\n }\n\n createFormSelect(key: string, data: FormSelectData, parent: FormFieldConfig, options: FormBuilderOptions): FormFieldConfig {\n data = data || {options: () => []};\n const select = this.createFormField(key, data.type === \"radio\" ? \"radio\" : \"select\", data, {\n multiple: data.multiple,\n type: data.type,\n groupBy: data.groupBy,\n inline: data.inline,\n allowEmpty: data.allowEmpty\n }, parent, options);\n select.hooks = {\n onInit: field => {\n const options = data.options(field);\n const control = field.formControl.root;\n field.props.options = options instanceof Promise ? control.valueChanges.pipe(\n startWith(control.value),\n distinctUntilChanged(),\n switchMap(async () => {\n const results: FormSelectOption[] = await data.options(field) as any;\n return this.fixSelectOptions(field, results);\n })\n ) : options;\n }\n };\n return select;\n }\n\n createFormUpload(key: string, data: FormUploadData, parent: FormFieldConfig, options: FormBuilderOptions): FormFieldConfig {\n data = data || {};\n\n if (data.asFile) {\n data.inline = true;\n console.warn(`File upload property \"asFile\" is deprecated. Use \"inline\" instead.`);\n }\n\n if (data.multi) {\n data.multiple = true;\n console.warn(`File upload property \"multi\" is deprecated. Use \"multiple\" instead.`);\n }\n\n return this.createFormField(key, \"upload\", data, {\n inline: data.inline === true,\n multiple: data.multiple === true,\n accept: data.accept || [\".png\", \".jpg\"],\n url: data.url?.startsWith(\"http\") ? data.url : this.api.url(data.url || \"assets\"),\n maxSize: isNaN(data.maxSize) ? MAX_INPUT_NUM : data.maxSize,\n uploadOptions: data.uploadOptions || {},\n createUploadData: data.createUploadData\n }, parent, options);\n }\n\n createFormGroup(key: string, fields: (parent: FormFieldConfig) => FormFieldConfig[], data: FormGroupData, parent: FormFieldConfig, options: FormBuilderOptions): FormFieldConfig\n createFormGroup(key: string, fields: (parent: FormFieldConfig) => Promise<FormFieldConfig[]>, data: FormGroupData, parent: FormFieldConfig, options: FormBuilderOptions): Promise<FormFieldConfig>\n createFormGroup(key: string, fields: (parent: FormFieldConfig) => any, data: FormGroupData, parent: FormFieldConfig, options: FormBuilderOptions): PromiseOrNot<FormFieldConfig> {\n data = data || {};\n const group = this.createFormField(key, undefined, data, {\n\n }, parent, options);\n group.wrappers = [\"form-group\"];\n const result = fields(group);\n const handleGroup = (fieldGroup: FormFieldConfig[]) => {\n group.fieldGroup = fieldGroup;\n return group;\n };\n return result instanceof Promise\n ? result.then(handleGroup)\n : handleGroup(result);\n }\n\n createFormArray(key: string, fields: (parent: FormFieldConfig) => FormFieldConfig | FormFieldConfig[], data: FormArrayData, parent: FormFieldConfig, options: FormBuilderOptions): FormFieldConfig\n createFormArray(key: string, fields: (parent: FormFieldConfig) => Promise<FormFieldConfig | FormFieldConfig[]>, data: FormArrayData, parent: FormFieldConfig, options: FormBuilderOptions): Promise<FormFieldConfig>\n createFormArray(key: string, fields: (parent: FormFieldConfig) => any, data: FormArrayData, parent: FormFieldConfig, options: FormBuilderOptions): PromiseOrNot<FormFieldConfig> {\n data = data || {};\n const array = this.createFormField(key, \"array\", data, {\n // initialCount: data.initialCount || 0,\n // sortable: data.sortable || false,\n useTabs: data.useTabs === true,\n tabsLabel: `${data.tabsLabel || \"label\"}`,\n addItem: data.addItem !== false,\n insertItem: data.insertItem !== false,\n cloneItem: data.cloneItem !== false,\n moveItem: data.moveItem !== false,\n removeItem: data.removeItem !== false,\n clearItems: data.clearItems !== false\n }, parent, options);\n const result = fields(array);\n const handleItems = (items: FormFieldConfig | FormFieldConfig[]) => {\n if (Array.isArray(items)) {\n array.fieldArray = {\n wrappers: [\"form-group\"],\n fieldGroup: items,\n };\n return array;\n }\n const props = items.props || {};\n if (props.type === \"text\" || props.type === \"number\") {\n array.type = \"chips\";\n array.wrappers = [\"form-field\"];\n array.props = {\n ...props,\n ...array.props,\n multiple: true\n };\n return array;\n }\n array.fieldArray = {\n ...items,\n props: {\n ...items.props,\n label: \"\"\n }\n };\n return array;\n };\n return result instanceof Promise\n ? result.then(handleItems)\n : handleItems(result);\n }\n\n async fixSelectOptions(field: FormFieldConfig, options: FormSelectOption[]): Promise<FormSelectOption[]> {\n if (!options) return [];\n for (const option of options) {\n const classes = Array.isArray(option.classes) ? option.classes : [`${option.classes}`];\n option.className = classes.filter(isStringWithVal).join(\" \");\n option.label = await this.language.getTranslation(option.label);\n option.value = option.value ?? option.id;\n option.id = option.id ?? option.value;\n }\n const control = field.formControl;\n if (field.props.multiple || options.length === 0 || options.findIndex(o => o.value === control.value) >= 0) return options;\n control.setValue(options[0].value);\n return options;\n }\n}\n","import {AbstractControl, FormArray, FormGroup} from \"@angular/forms\";\n\nexport interface AllValidationErrors {\n control: AbstractControl;\n path: string;\n errorKey: string;\n errorValue: any;\n}\n\nexport interface FormGroupControls {\n [key: string]: AbstractControl;\n}\n\nexport function getFormValidationErrors(controls: FormGroupControls, parentPath: string = \"\"): AllValidationErrors[] {\n const errors: AllValidationErrors[] = [];\n Object.entries(controls).forEach(([name, control], ix) => {\n const path = !parentPath ? name : `${parentPath}.${name}`;\n if (control instanceof FormGroup) {\n getFormValidationErrors(control.controls, path).forEach(error => errors.push(error));\n return;\n }\n if (control instanceof FormArray) {\n control.controls.forEach((control: FormGroup, ix) => {\n getFormValidationErrors(control.controls, `${path}.${ix}`).forEach(error => errors.push(error));\n });\n return;\n }\n Object.entries(control.errors || {}).forEach(([errorKey, errorValue]) => {\n errors.push({control, path, errorKey, errorValue});\n });\n });\n return errors;\n}\n","import {Injectable, Injector} from \"@angular/core\";\nimport {AbstractControl, FormArray, FormGroup} from \"@angular/forms\";\nimport {distinctUntilChanged, first, firstValueFrom, from, isObservable, startWith, switchMap} from \"rxjs\";\nimport {FormlyFieldConfig} from \"@ngx-formly/core\";\nimport {\n IApiService,\n ILanguageService,\n IOpenApiSchema,\n IOpenApiSchemaProperty,\n IOpenApiSchemas,\n ObjectUtils,\n OpenApiService,\n StringUtils\n} from \"@stemy/ngx-utils\";\n\nimport {\n ConfigForSchemaOptions,\n ConfigForSchemaWrapOptions,\n FORM_ROOT_KEY,\n FormFieldConfig,\n FormFieldCustomizer,\n FormFieldData,\n FormSelectOption,\n FormSelectOptions,\n FormSerializeResult,\n IDynamicForm,\n Validators\n} from \"../common-types\";\n\nimport {findRefs, isStringWithVal, mergeFormFields} from \"../utils/misc\";\nimport {\n emailValidation,\n maxLengthValidation,\n maxValueValidation,\n minLengthValidation,\n minValueValidation,\n requiredValidation\n} from \"../utils/validation\";\n\nimport {DynamicFormBuilderService} from \"./dynamic-form-builder.service\";\nimport {getFormValidationErrors} from \"../utils/validation-errors\";\n\n@Injectable()\nexport class DynamicFormService {\n\n get api(): IApiService {\n return this.openApi.api;\n }\n\n get language(): ILanguageService {\n return this.api.language;\n }\n\n protected schemas: IOpenApiSchemas;\n\n constructor(readonly openApi: OpenApiService,\n readonly injector: Injector,\n readonly builder: DynamicFormBuilderService) {\n }\n\n async getFormFieldsForSchema(name: string, customizeOrOptions?: FormFieldCustomizer | ConfigForSchemaOptions): Promise<FormlyFieldConfig[]> {\n const group = await this.getFormFieldGroupForSchema(name, customizeOrOptions);\n return group.fieldGroup;\n }\n\n async serializeForm(form: IDynamicForm, validate: boolean = true): Promise<FormSerializeResult> {\n const fields = form.config();\n if (!fields) return null;\n if (validate) {\n await this.validateForm(form);\n }\n return this.serialize(fields);\n }\n\n async validateForm(form: IDynamicForm, showErrors: boolean = true): Promise<any> {\n const group = form.group();\n if (!group) return Promise.resolve();\n return new Promise<any>((resolve, reject) => {\n group.statusChanges\n .pipe(first(status => status == \"VALID\" || status == \"INVALID\"))\n .subscribe(status => {\n if (showErrors) {\n this.showErrorsForGroup(group);\n }\n if (status == \"VALID\") {\n resolve(null);\n return;\n }\n reject(getFormValidationErrors(group.controls));\n });\n group.updateValueAndValidity();\n });\n }\n\n async serialize(fields: FormFieldConfig[]): Promise<FormSerializeResult> {\n const result = {};\n if (!fields) return result;\n for (const field of fields) {\n const serializer = field.serializer;\n const key = `${field.key}`;\n const props = field.props || {};\n if (ObjectUtils.isFunction(serializer)) {\n result[key] = await serializer(field, this.injector);\n continue;\n }\n if (field.hide && !field.serialize) {\n continue;\n }\n const control = field.formControl;\n if (field.fieldGroup) {\n const group = await this.serialize(field.fieldGroup);\n if (field.key) {\n result[key] = !field.fieldArray ? group : Object.values(group);\n continue;\n }\n Object.assign(result, group);\n continue;\n }\n result[key] = control.value;\n }\n return result;\n }\n\n protected showErrorsForGroup(formGroup: FormGroup): void {\n if (!formGroup) return;\n formGroup.markAsTouched({onlySelf: true});\n const controls = Object.keys(formGroup.controls).map(id => formGroup.controls[id]);\n this.showErrorsForControls(controls);\n }\n\n protected showErrorsForControls(controls: AbstractControl[]): void {\n controls.forEach(control => {\n if (control instanceof FormGroup) {\n this.showErrorsForGroup(control);\n return;\n }\n control.markAsTouched({onlySelf: true});\n if (control instanceof FormArray) {\n this.showErrorsForControls(control.controls);\n }\n });\n }\n\n protected convertToDate(value: any): any {\n if (ObjectUtils.isNullOrUndefined(value)) return null;\n const date = ObjectUtils.isDate(value)\n ? value\n : new Date(value);\n return isNaN(date as any) ? new Date() : date;\n }\n\n async getFormFieldGroupForSchema(name: string, customizeOrOptions?: FormFieldCustomizer | ConfigForSchemaOptions): Promise<FormlyFieldConfig> {\n this.schemas = await this.openApi.getSchemas();\n const schemaOptions = ObjectUtils.isObject(customizeOrOptions) ? customizeOrOptions as ConfigForSchemaOptions : {};\n const customizeConfig = ObjectUtils.isFunction(customizeOrOptions) ? customizeOrOptions : schemaOptions.customizer;\n const schema = this.schemas[name];\n const wrapOptions = {\n ...schemaOptions,\n schema,\n injector: this.injector,\n customizer: async (property, options, config, parent: FormFieldConfig) => {\n config.defaultValue = `${config.type}`.startsWith(\"date\")\n ? this.convertToDate(property.default) : property.default;\n if (!ObjectUtils.isFunction(customizeConfig)) return [config];\n let res = customizeConfig(\n property, schema, config,\n parent,\n options,\n this.injector\n );\n if (!res) return [config];\n if (res instanceof Promise) {\n res = await res;\n }\n return Array.isArray(res) ? res : [res];\n }\n } as ConfigForSchemaWrapOptions;\n const config = {\n key: FORM_ROOT_KEY,\n wrappers: [\"form-group\"]\n } as FormFieldConfig;\n\n const fields = await this.getFormFieldsForSchemaDef(schema, config, wrapOptions);\n const fieldGroup = [...fields];\n\n // Add id fields if necessary\n if (fields.length > 0) {\n const idFields: FormFieldConfig[] = [\n {key: \"id\", props: {hidden: true}},\n {key: \"_id\", props: {hidden: true}},\n ];\n fieldGroup.unshift(...idFields\n .filter(t => !fields.some(c => c.key == t.key))\n );\n }\n config.fieldGroup = fieldGroup;\n\n const root = await wrapOptions.customizer({\n id: FORM_ROOT_KEY,\n type: \"object\",\n properties: schema?.properties || {}\n }, wrapOptions, config, null);\n // Check if the customized root wrapper returned an array\n fields.length = 0;\n\n for (const model of root) {\n if (model.key === FORM_ROOT_KEY) {\n return model;\n } else {\n fields.push(model);\n }\n }\n\n return {\n ...config,\n fieldGroup: fields\n };\n }\n\n protected async getFormFieldsForSchemaDef(schema: IOpenApiSchema, parent: FormFieldConfig, options: ConfigForSchemaWrapOptions): Promise<FormFieldConfig[]> {\n if (!schema)\n return [];\n const keys = Object.keys(schema.properties || {});\n const fields: FormFieldConfig[] = [];\n // Collect all properties of this schema def\n for (const key of keys) {\n const property = schema.properties[key];\n const propFields = await this.getFormFieldsForProp(property, options, parent);\n fields.push(...propFields);\n }\n return this.builder.createFieldSets(\n fields.filter(f => null !== f),\n parent, options\n );\n }\n\n protected async getFormFieldsForProp(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, parent: FormFieldConfig): Promise<FormFieldConfig[]> {\n const field = await this.getFormFieldForProp(property, options, parent);\n return !field ? [] : options.customizer(property, options, field, parent);\n }\n\n protected async getFormFieldForProp(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, parent: FormFieldConfig): Promise<FormFieldConfig> {\n const $enum = property.items?.enum || property.enum;\n if (Array.isArray($enum) || isStringWithVal(property.optionsPath) || isStringWithVal(property.endpoint)) {\n if (property.format == \"radio\") {\n return this.getFormRadioConfig(property, options, parent);\n }\n return this.getFormSelectConfig(property, options, parent);\n }\n switch (property.type) {\n case \"string\":\n case \"number\":\n case \"integer\":\n case \"textarea\":\n // if (this.checkIsEditorProperty(property)) {\n // return this.getFormEditorConfig(property, options, parent);\n // }\n if (property.format == \"textarea\") {\n return this.getFormTextareaConfig(property, options, parent);\n }\n if (property.format == \"date\" || property.format == \"date-time\") {\n return this.getFormDatepickerConfig(property, options, parent);\n }\n return this.getFormInputConfig(property, options, parent);\n // case \"object\":\n // return this.getFormEditorConfig(property, options, parent);\n case \"boolean\":\n return this.getFormCheckboxConfig(property, options, parent);\n case \"array\":\n return this.getFormArrayConfig(property, options, parent);\n case \"file\":\n case \"upload\":\n return this.getFormUploadConfig(property, options, parent);\n }\n if (findRefs(property).length > 0) {\n return this.getFormGroupConfig(property, options, parent);\n }\n return null;\n }\n\n protected getFormFieldData(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions): FormFieldData {\n const validators: Validators = {};\n const schema = options.schema;\n if (ObjectUtils.isArray(schema.required) && schema.required.indexOf(property.id) >= 0) {\n validators.required = requiredValidation();\n }\n this.addPropertyValidators(validators, property);\n this.addItemsValidators(validators, property.items);\n return {\n hidden: property.hidden === true,\n fieldSet: property.fieldSet,\n validators\n };\n }\n\n protected async getFormArrayConfig(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, parent: FormFieldConfig): Promise<FormlyFieldConfig> {\n return this.builder.createFormArray(property.id, async sp => {\n const subSchemas = findRefs(property).map(ref => this.schemas[ref]);\n if (subSchemas.length > 0) {\n const subModels = await Promise.all(\n subSchemas.map(s => this.getFormFieldsForSchemaDef(s, sp, options))\n );\n return mergeFormFields(ObjectUtils.copy(subModels));\n }\n return this.getFormFieldForProp(property.items, options, null);\n }, {\n ...this.getFormFieldData(property, options),\n // initialCount: property.initialCount || 0,\n // sortable: property.sortable || false,\n useTabs: property.useTabs,\n tabsLabel: property.tabsLabel,\n addItem: property.addItem,\n insertItem: property.insertItem,\n cloneItem: property.cloneItem,\n moveItem: property.moveItem,\n removeItem: property.removeItem,\n clearItems: property.clearItems\n }, parent, options);\n }\n\n protected async getFormGroupConfig(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, parent: FormFieldConfig): Promise<FormlyFieldConfig> {\n const subSchemas = findRefs(property).map(ref => this.schemas[ref]);\n return this.builder.createFormGroup(property.id, async sp => {\n const subModels = await Promise.all(\n subSchemas.map(s => this.getFormFieldsForSchemaDef(s, sp, options))\n );\n return mergeFormFields(subModels);\n }, {\n ...this.getFormFieldData(property, options),\n }, parent, options);\n }\n\n protected getFormInputConfig(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, parent: FormFieldConfig): FormFieldConfig {\n let type = StringUtils.has(property.id || \"\", \"password\", \"Password\") ? \"password\" : (property.format || property.type);\n switch (type) {\n case \"string\":\n type = \"text\";\n break;\n case \"boolean\":\n type = \"checkbox\";\n break;\n case \"textarea\":\n type = \"textarea\";\n break;\n case \"integer\":\n type = \"number\";\n break;\n }\n const sub = property.type == \"array\" ? property.items || property : property;\n return this.builder.createFormInput(property.id, {\n ...this.getFormFieldData(property, options),\n type,\n autocomplete: property.autocomplete,\n pattern: property.pattern,\n step: isNaN(sub.step) ? property.step : sub.step,\n min: sub.minimum,\n max: sub.maximum,\n minLength: sub.minLength,\n maxLength: sub.maxLength,\n placeholder: property.placeholder\n }, parent, options);\n }\n\n protected getFormTextareaConfig(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, parent: FormFieldConfig): FormFieldConfig {\n return this.builder.createFormInput(property.id, {\n ...this.getFormFieldData(property, options),\n type: \"textarea\",\n autocomplete: property.autoComplete,\n cols: property.cols || null,\n rows: property.rows || 10,\n minLength: property.minLength,\n maxLength: property.maxLength,\n placeholder: property.placeholder || \"\"\n }, parent, options);\n }\n\n // getFormEditorConfig(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions): DynamicEditorModelConfig {\n // const sub = property.type == \"array\" ? property.items || property : property;\n // return Object.assign(\n // this.getFormControlConfig(property, options),\n // {\n // inputType: property.format || \"json\",\n // convertObject: property.type !== \"string\",\n // autoComplete: property.autoComplete || \"off\",\n // multiple: property.type == \"array\",\n // accept: ObjectUtils.isString(property.accept) ? property.accept : null,\n // mask: ObjectUtils.isString(property.mask) ? property.mask : null,\n // pattern: ObjectUtils.isString(property.pattern) ? property.pattern : null,\n // step: isNaN(sub.step) ? (isNaN(property.step) ? 1 : property.step) : sub.step,\n // minLength: isNaN(sub.minLength) ? 0 : sub.minLength,\n // maxLength: isNaN(sub.maxLength) ? MAX_INPUT_NUM : sub.maxLength,\n // placeholder: property.placeholder || \"\"\n // }\n // );\n // }\n\n protected getFormDatepickerConfig(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, parent: FormFieldConfig): FormFieldConfig {\n return this.builder.createFormInput(property.id, {\n ...this.getFormFieldData(property, options),\n type: property.format == \"date-time\" ? \"datetime-local\" : \"date\",\n // format: property.dateFormat || \"dd.MM.yyyy\",\n min: this.convertToDate(property.min),\n max: this.convertToDate(property.max),\n }, parent, options);\n }\n\n protected getFormRadioConfig(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, parent: FormFieldConfig): FormFieldConfig {\n return this.builder.createFormSelect(property.id, {\n ...this.getFormFieldData(property, options),\n options: field => this.getFormSelectOptions(property, options, field),\n type: \"radio\",\n multiple: property.type == \"array\",\n groupBy: property.groupBy,\n inline: property.inline,\n allowEmpty: property.allowEmpty\n }, parent, options);\n }\n\n protected getFormSelectConfig(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, parent: FormFieldConfig): FormFieldConfig {\n return this.builder.createFormSelect(property.id, {\n ...this.getFormFieldData(property, options),\n options: field => this.getFormSelectOptions(property, options, field),\n type: \"select\",\n multiple: property.type == \"array\",\n groupBy: property.groupBy,\n inline: property.inline,\n allowEmpty: property.allowEmpty\n }, parent, options);\n }\n\n protected getFormUploadConfig(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, parent: FormFieldConfig): FormFieldConfig {\n return this.builder.createFormUpload(property.id, {\n ...this.getFormFieldData(property, options),\n multiple: property.type === \"array\",\n inline: property.inline,\n accept: property.accept,\n url: property.url,\n maxSize: property.maxSize,\n uploadOptions: property.uploadOptions\n }, parent, options);\n }\n\n protected getFormCheckboxConfig(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, parent: FormFieldConfig): FormFieldConfig {\n return this.builder.createFormInput(property.id, {\n ...this.getFormFieldData(property, options),\n type: \"checkbox\",\n indeterminate: property.indeterminate || false\n }, parent, options);\n }\n\n protected getFormSelectOptions(property: IOpenApiSchemaProperty, options: ConfigForSchemaWrapOptions, field: FormFieldConfig): FormSelectOptions {\n const $enum = property.items?.enum || property.enum;\n if (Array.isArray($enum)) {\n return from(this.builder.fixSelectOptions(field, $enum.map(value => {\n const label = options.labelPrefix\n ? this.language.getTranslationSync(`${options.labelPrefix}.${property.id}.${value}`)\n : `${property.id}.${value}`;\n return {value, label};\n })));\n }\n if (isStringWithVal(property.endpoint)) {\n const entries = Object.entries((field.formControl.root as FormGroup)?.controls || {});\n const endpoint = entries.reduce((res, [key, control]) => {\n return this.replaceOptionsEndpoint(res, key, control?.value);\n }, `${property.endpoint}`);\n this.api.cache[endpoint] = this.api.cache[endpoint] || this.api.list(endpoint, this.api.makeListParams(1, -1)).then(result => {\n const items = ObjectUtils.isArray(result)\n ? result\n : (ObjectUtils.isArray(result.items) ? result.items : []);\n return items.map(i => {\n const item = ObjectUtils.isObject(i) ? i : {id: i};\n return {\n ...item,\n value: item.id || item._id,\n label: item[property.labelField] || item.label || item.id || item._id\n };\n });\n });\n const options = this.api.cache[endpoint] as Promise<FormSelectOption[]>;\n return from(options.then(opts => {\n return this.builder.fixSelectOptions(field, opts.map(o => Object.assign({}, o)))\n }));\n }\n let path = property.optionsPath as string;\n let control = field.formControl;\n let current = field;\n if (path.startsWith(\"$root\")) {\n path = path.substring(5);\n control = control.root || control;\n while (current.parent) {\n current = current.parent;\n }\n }\n while (path.startsWith(\".\")) {\n path = path.substring(1);\n control = control.parent || control;\n current = current.parent || current;\n }\n control = !path ? control : control.get(path);\n return control.valueChanges.pipe(\n startWith(control.value),\n distinctUntilChanged(),\n switchMap(async (controlVal) => {\n const currentOpts = current.props.options;\n const finalOpts = isObservable(currentOpts)\n ? await firstValueFrom(currentOpts)\n : (Array.isArray(currentOpts) ? currentOpts : []);\n return this.builder.fixSelectOptions(field, (!Array.isArray(controlVal) ? [] : controlVal).map(value => {\n const modelOption = finalOpts.find(t => t.value == value);\n return {value, label: modelOption?.label || value};\n }));\n })\n );\n }\n\n protected replaceOptionsEndpoint(endpoint: string, key: string, value: any): string {\n if (ObjectUtils.isObject(value)) {\n return Object.entries(value).reduce((res, [k, v]) => {\n return this.replaceOptionsEndpoint(res, `${key}.${k}`, v);\n }, endpoint)\n }\n if (ObjectUtils.isArray(value)) {\n return value.reduce((res, v, i) => {\n return this.replaceOptionsEndpoint(res, `${key}.${i}`, v);\n }, endpoint)\n }\n return endpoint.replace(new RegExp(`\\\\$${key}`, \"gi\"), `${value ?? \"\"}`);\n }\n\n protected addPropertyValidators(validators: Validators, property: IOpenApiSchemaProperty): void {\n if (!property) return;\n if (!isNaN(property.minLength)) {\n validators.minLength = minLengthValidation(property.minLength);\n }\n if (!isNaN(property.maxLength)) {\n validators.maxLength = maxLengthValidation(property.maxLength);\n }\n if (!isNaN(property.minimum)) {\n validators.min = minValueValidation(property.minimum);\n }\n if (!isNaN(property.maximum)) {\n validators.max = maxValueValidation(property.maximum);\n }\n // if (isString(property.pattern) && property.pattern.length) {\n // validators.pattern = property.pattern;\n // }\n switch (property.format) {\n case \"email\":\n validators.email = emailValidation();\n break;\n }\n }\n\n protected addItemsValidators(validators: Validators, items: IOpenApiSchemaProperty): void {\n if (!items) return;\n if (!isNaN(items.minLength)) {\n validators.itemsMinLength = minLengthValidation(items.minLength, true);\n }\n if (!isNaN(items.maxLength)) {\n validators.itemsMaxLength = maxLengthValidation(items.maxLength, true);\n }\n if (!isNaN(items.minimum)) {\n validators.itemsMinValue = minValueValidation(items.minimum, true);\n }\n if (!isNaN(items.maximum)) {\n validators.itemsMaxValue = maxValueValidation(items.maximum, true);\n }\n }\n}\n","import {\n computed,\n Directive,\n effect,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n output,\n Renderer2,\n signal\n} from \"@angular/core\";\nimport {outputToObservable} from \"@angular/core/rxjs-interop\";\nimport {debounceTime} from \"rxjs/operators\";\nimport {IAsyncMessage, TOASTER_SERVICE} from \"@stemy/ngx-utils\";\n\nimport {AsyncSubmitMethod, IDynamicForm} from \"../common-types\";\n\n@Directive({\n standalone: false,\n selector: \"[async-submit]\",\n exportAs: \"async-submit\"\n})\nexport class AsyncSubmitDirective {\n\n method = input<AsyncSubmitMethod>(null, {alias: \"async-submit\"});\n form = input<IDynamicForm>();\n context = input<any>();\n\n onSuccess = output<IAsyncMessage>();\n onError = output<IAsyncMessage>();\n\n toaster = inject(TOASTER_SERVICE);\n renderer = inject(Renderer2);\n elem = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected status = computed(() => {\n const form = this.form();\n return form?.status() || null;\n });\n\n protected group = computed(() => {\n const form = this.form();\n return form?.group() || null;\n });\n\n protected loading = signal(false);\n protected callback = signal<() => void>(null);\n\n @HostBinding(\"class.disabled\")\n get isDisabled(): boolean {\n return this.status() !== \"VALID\";\n }\n\n @HostBinding(\"class.loading\")\n get isLoading(): boolean {\n return this.loading();\n }\n\n constructor() {\n effect(() => {\n if (this.elem.nativeElement.tagName === \"BUTTON\") {\n this.renderer.setAttribute(this.elem.nativeElement, \"type\", \"button\");\n }\n });\n effect(() => {\n const status = this.status();\n const cb = this.callback();\n if (!cb || status == \"PENDING\") return;\n if (status === \"VALID\") {\n cb();\n }\n this.callback.set(null);\n });\n effect(() => {\n const form = this.form();\n if (!form) return;\n const sub = outputToObservable(form.onSubmit)\n .pipe(debounceTime(200)).subscribe(() => this.callMethod());\n return () => sub.unsubscribe();\n });\n }\n\n @HostListener(\"click\")\n click(): void {\n const status = this.status();\n if (status !== \"VALID\" && status !== \"INVALID\") {\n this.callback.set(() => this.callMethod());\n return;\n }\n this.callMethod();\n }\n\n callMethod(): void {\n if (this.loading()) return;\n this.loading.set(true);\n this.method()(this.form(), this.context).then(result => {\n this.loading.set(false);\n if (result) {\n this.onSuccess.emit(result);\n this.toaster.success(result.message, result.context);\n }\n }, reason => {\n if (!reason || !reason.message)\n throw new Error(\"Reason must implement IAsyncMessage interface\");\n this.loading.set(false);\n this.onError.emit(reason);\n this.toaster.error(reason.message, reason.context);\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n Injector,\n input,\n output,\n resource,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {rxResource} from \"@angular/core/rxjs-interop\";\nimport {FormGroup} from \"@angular/forms\";\nimport {FormlyFormOptions} from \"@ngx-formly/core\";\nimport {FormFieldConfig, IDynamicForm} from \"../../common-types\";\nimport {DynamicFormBuilderService} from \"../../services/dynamic-form-builder.service\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-form\",\n templateUrl: \"./dynamic-form.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DynamicFormComponent implements IDynamicForm {\n\n protected readonly builder = inject(DynamicFormBuilderService);\n\n readonly labelPrefix = input<string>(\"label\");\n\n readonly model = input<any>({});\n\n readonly fields = input<FormFieldConfig[]>(null);\n\n protected readonly config$ = resource({\n request: () => ({\n fields: this.fields(),\n labelPrefix: this.labelPrefix()\n }),\n loader: async p => {\n const {fields, labelPrefix} = p.request;\n return fields || this.builder.resolveFormFields(this.model()?.constructor, null, {\n labelPrefix\n });\n }\n });\n\n readonly config = computed(() => this.config$.value());\n\n readonly group = computed(() => {\n this.config();\n return new FormGroup({});\n });\n\n protected readonly status$ = rxResource({\n request: () => this.group(),\n loader: p => p.request.statusChanges\n });\n\n readonly status = computed(() => this.status$.value());\n\n readonly onSubmit = output<IDynamicForm>();\n\n readonly options: FormlyFormOptions = {\n formState: {\n injector: inject(Injector)\n }\n };\n\n submit() {\n this.onSubmit.emit(this);\n }\n}\n","@if (config() && group()) {\n <form [formGroup]=\"group()\" (ngSubmit)=\"submit()\">\n <input type=\"submit\" [hidden]=\"true\" />\n <formly-form [model]=\"model()\"\n [fields]=\"config()\"\n [form]=\"group()\"\n [options]=\"options\"></formly-form>\n <ng-content></ng-content>\n </form>\n}\n","import {Component, signal, ViewEncapsulation} from \"@angular/core\";\nimport {FormArray} from \"@angular/forms\";\nimport {FieldArrayType} from \"@ngx-formly/core\";\nimport {FormFieldConfig} from \"../../common-types\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-form-array\",\n templateUrl: \"./dynamic-form-array.component.html\",\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicFormArrayComponent extends FieldArrayType<FormFieldConfig> {\n\n readonly currentTab = signal(0);\n\n clear(): void {\n const control = this.formControl as FormArray;\n while (control.length > 0) {\n this.remove(0);\n }\n }\n}\n","<div class=\"ngx-dynamic-form-array\">\n <label class=\"form-label\" *ngIf=\"props.label\">\n {{ props.label }}\n <p class=\"form-array-description\" *ngIf=\"props.description\">{{ props.description }}</p>\n </label>\n <div class=\"ngx-dynamic-form-container\">\n @if (props.useTabs) {\n <ul class=\"form-array-tabs\">\n @for (field of field.fieldGroup; track field.key; let ix = $index) {\n <li>\n <a class=\"btn\" [ngClass]=\"[currentTab() === ix ? 'btn-primary' : 'btn-secondary']\"\n (click)=\"currentTab.set(ix)\">\n {{ (field.formControl.value | getValue : props.tabsLabel) || ix + 1 }}\n </a>\n </li>\n }\n </ul>\n }\n @for (field of field.fieldGroup; track field.key; let ix = $index) {\n @if (!props.useTabs || ix === currentTab()) {\n <div class=\"form-array-item\">\n <div class=\"form-array-buttons\">\n @if (props.removeItem) {\n <button type=\"button\" class=\"btn btn-sm btn-primary\" (click)=\"remove(ix)\">\n <i icon=\"trash-outline\"></i>\n </button>\n }\n @if (props.insertItem) {\n <button type=\"button\" class=\"btn btn-sm btn-primary\" (click)=\"add(ix)\">\n <i icon=\"plus-outline\"></i>\n </button>\n }\n </div>\n <formly-field [field]=\"field\"></formly-field>\n </div>\n }\n }\n <div class=\"form-array-buttons\">\n @if (props.clearItems) {\n <button type=\"button\" class=\"btn btn-sm btn-primary\" (click)=\"clear()\">\n <i icon=\"trash-outline\"></i>\n {{ 'button.clear-items' | translate }}\n </button>\n }\n @if (props.addItem) {\n <button type=\"button\" class=\"btn btn-sm btn-primary\" (click)=\"add()\">\n <i icon=\"plus-outline\"></i>\n {{ 'button.insert-item' | translate }}\n </button>\n }\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from \"@angular/core\";\nimport {FieldType} from \"@ngx-formly/core\";\nimport {FormFieldType} from \"../../common-types\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-form-chips\",\n templateUrl: \"./dynamic-form-chips.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DynamicFormChipsComponent extends FieldType<FormFieldType> {\n\n}\n","<chips [formControl]=\"formControl\"\n [type]=\"props.type\"\n [step]=\"props.step\"\n [minLength]=\"props.minLength\"\n [maxLength]=\"props.maxLength\"\n [min]=\"props.min\"\n [max]=\"props.max\"\n [multiple]=\"props.multiple\"\n [formlyAttributes]=\"field\">\n</chips>\n","import {Component, ViewEncapsulation} from \"@angular/core\";\nimport {FieldWrapper} from \"@ngx-formly/core\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-form-field\",\n templateUrl: \"./dynamic-form-field.component.html\",\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicFormFieldComponent extends FieldWrapper {\n\n}\n","<div [ngClass]=\"['ngx-dynamic-form-field', 'ngx-dynamic-form-' + field.type]\">\n <label class=\"control-label ng-star-inserted\" *ngIf=\"props.label\">\n {{ props.label | translate }}\n <span class=\"form-field-required\" *ngIf=\"props.required && props.hideRequiredMarker !== true\" aria-hidden=\"true\">*</span>\n <p class=\"form-field-description\" *ngIf=\"props.description\">\n {{ props.description | translate }}\n </p>\n </label>\n <div class=\"ngx-dynamic-form-control\">\n <ng-container #fieldComponent></ng-container>\n <div *ngIf=\"showError\" class=\"invalid-feedback\">\n <formly-validation-message\n id=\"{{ id }}-formly-validation-error\"\n [field]=\"field\"\n role=\"alert\"\n ></formly-validation-message>\n </div>\n </div>\n</div>\n","import {Component, inject, ViewEncapsulation} from \"@angular/core\";\nimport {FieldWrapper} from \"@ngx-formly/core\";\nimport {DynamicFormGroupComponent} from \"../dynamic-form-group/dynamic-form-group.component\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-form-field\",\n templateUrl: \"./dynamic-form-fieldset.component.html\",\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicFormFieldsetComponent extends FieldWrapper {\n\n ngOnInit(): void {\n // console.log(this.field.id, this.field.props?.label, this.options);\n // console.log(this.field.parent);\n }\n}\n","<div class=\"ngx-dynamic-form-fieldset\">\n <legend class=\"form-label\" *ngIf=\"props.label\">\n {{ props.label }}\n <p class=\"form-group-description\" *ngIf=\"props.description\">{{ props.description }}</p>\n </legend>\n <div class=\"ngx-dynamic-form-container\">\n <ng-container #fieldComponent></ng-container>\n </div>\n</div>\n","import {Component, ViewEncapsulation} from \"@angular/core\";\nimport {FieldWrapper} from \"@ngx-formly/core\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-form-group\",\n templateUrl: \"./dynamic-form-group.component.html\",\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicFormGroupComponent extends FieldWrapper {\n\n}\n","<div class=\"ngx-dynamic-form-group\">\n <label class=\"form-group-label\" *ngIf=\"props.label\">\n {{ props.label }}\n <p class=\"form-group-description\" *ngIf=\"props.description\">{{ props.description }}</p>\n </label>\n <div class=\"ngx-dynamic-form-container\">\n <ng-container #fieldComponent></ng-container>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from \"@angular/core\";\nimport {FieldType} from \"@ngx-formly/core\";\nimport {FormFieldType} from \"../../common-types\";\n\n@Component({\n standalone: false,\n selector: \"dynamic-form-upload\",\n templateUrl: \"./dynamic-form-upload.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DynamicFormUploadComponent extends FieldType<FormFieldType> {\n\n}\n","<upload [formControl]=\"formControl\"\n [multiple]=\"props.multiple\"\n [inline]=\"props.inline\"\n [accept]=\"props.accept\"\n [baseUrl]=\"props.url\"\n [makeUpload]=\"props.createUploadData\"\n [formlyAttributes]=\"field\">\n</upload>\n","import {AsyncSubmitDirective} from \"./directives/async-submit.directive\";\n\nimport {DynamicFormComponent} from \"./components/dynamic-form/dynamic-form.component\";\nimport {DynamicFormArrayComponent} from \"./components/dynamic-form-array/dynamic-form-array.component\";\nimport {DynamicFormChipsComponent} from \"./components/dynamic-form-chips/dynamic-form-chips.component\";\nimport {DynamicFormFieldComponent} from \"./components/dynamic-form-field/dynamic-form-field.component\";\nimport {DynamicFormFieldsetComponent} from \"./components/dynamic-form-fieldset/dynamic-form-fieldset.component\";\nimport {DynamicFormGroupComponent} from \"./components/dynamic-form-group/dynamic-form-group.component\";\nimport {DynamicFormUploadComponent} from \"./components/dynamic-form-upload/dynamic-form-upload.component\";\n\n// --- Components ---\nexport const components = [\n DynamicFormComponent,\n DynamicFormArrayComponent,\n DynamicFormChipsComponent,\n DynamicFormFieldComponent,\n DynamicFormFieldsetComponent,\n DynamicFormGroupComponent,\n DynamicFormUploadComponent\n];\n\n// --- Directives ---\nexport const directives = [\n AsyncSubmitDirective,\n];\n\n// --- Pipes ---\nexport const pipes = [];\n","import {EnvironmentProviders, makeEnvironmentProviders, ModuleWithProviders, NgModule, Provider} from \"@angular/core\";\nimport {CommonModule} from \"@angular/common\";\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {FormlyModule} from \"@ngx-formly/core\";\nimport {NgxUtilsModule} from \"@stemy/ngx-utils\";\n\nimport {components, directives, pipes} from \"./ngx-dynamic-form.imports\";\n\nimport {IDynamicFormModuleConfig} from \"./common-types\";\n\nimport {DynamicFormService} from \"./services/dynamic-form.service\";\nimport {DynamicFormBuilderService} from \"./services/dynamic-form-builder.service\";\n\nimport {DynamicFormArrayComponent} from \"./components/dynamic-form-array/dynamic-form-array.component\";\nimport {DynamicFormChipsComponent} from \"./components/dynamic-form-chips/dynamic-form-chips.component\";\nimport {DynamicFormGroupComponent} from \"./components/dynamic-form-group/dynamic-form-group.component\";\nimport {DynamicFormFieldComponent} from \"./components/dynamic-form-field/dynamic-form-field.component\";\nimport {DynamicFormFieldsetComponent} from \"./components/dynamic-form-fieldset/dynamic-form-fieldset.component\";\nimport {DynamicFormUploadComponent} from \"./components/dynamic-form-upload/dynamic-form-upload.component\";\n\n@NgModule({\n declarations: [\n ...components,\n ...directives,\n ...pipes\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgxUtilsModule,\n FormlyModule\n ],\n exports: [\n ...components,\n ...directives,\n ...pipes,\n FormsModule,\n ReactiveFormsModule,\n NgxUtilsModule,\n FormlyModule\n ],\n providers: [\n ...pipes\n ]\n})\nexport class NgxDynamicFormModule {\n\n private static getProviders(config?: IDynamicFormModuleConfig): Provider[] {\n const {providers} = FormlyModule.forRoot({\n types: [\n {name: \"array\", component: DynamicFormArrayComponent},\n {name: \"chips\", component: DynamicFormChipsComponent},\n {name: \"upload\", component: DynamicFormUploadComponent, wrappers: [\"form-field\"]},\n {name: \"file\", extends: \"upload\"},\n {name: \"translation\", extends: \"array\"},\n ],\n wrappers: [\n { name: \"form-field\", component: DynamicFormFieldComponent },\n { name: \"form-fieldset\", component: DynamicFormFieldsetComponent },\n { name: \"form-group\", component: DynamicFormGroupComponent },\n ],\n extras: {\n renderFormlyFieldElement: false\n }\n });\n return [\n ...(providers as Provider[]),\n DynamicFormService,\n DynamicFormBuilderService\n ];\n }\n\n static forRoot(config?: IDynamicFormModuleConfig): ModuleWithProviders<NgxDynamicFormModule> {\n return {\n ngModule: NgxDynamicFormModule,\n providers: NgxDynamicFormModule.getProviders(config)\n }\n }\n\n static provideForms(config?: IDynamicFormModuleConfig): EnvironmentProviders {\n return makeEnvironmentProviders(NgxDynamicFormModule.getProviders(config));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["FormGroup","FormArray","i1","i2.DynamicFormBuilderService","i2","i3"],"mappings":"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"}