ngx-t-forms 2.0.31 → 2.0.32

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 (96) hide show
  1. package/fesm2022/{ngx-t-forms-auto-complete-input-element.component-DCKuXHAW.mjs → ngx-t-forms-auto-complete-input-element.component-CaXs4561.mjs} +2 -2
  2. package/fesm2022/{ngx-t-forms-auto-complete-input-element.component-DCKuXHAW.mjs.map → ngx-t-forms-auto-complete-input-element.component-CaXs4561.mjs.map} +1 -1
  3. package/fesm2022/{ngx-t-forms-basic-input-input-element.component-Ce4ipSUc.mjs → ngx-t-forms-basic-input-input-element.component-Dotyd-Qs.mjs} +3 -3
  4. package/fesm2022/{ngx-t-forms-basic-input-input-element.component-Ce4ipSUc.mjs.map → ngx-t-forms-basic-input-input-element.component-Dotyd-Qs.mjs.map} +1 -1
  5. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-C5TPddVe.mjs → ngx-t-forms-calculated-field-rules.component-BhxT6tRq.mjs} +4 -4
  6. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-C5TPddVe.mjs.map → ngx-t-forms-calculated-field-rules.component-BhxT6tRq.mjs.map} +1 -1
  7. package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-CICQaqz6.mjs → ngx-t-forms-chip-options-creator-editor.component-d4QeVhsp.mjs} +4 -4
  8. package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-CICQaqz6.mjs.map → ngx-t-forms-chip-options-creator-editor.component-d4QeVhsp.mjs.map} +1 -1
  9. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-CzisLSIP.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-Gn8exJ9a.mjs} +2 -2
  10. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-CzisLSIP.mjs.map → ngx-t-forms-config-mscoa-additional-inputs.component-Gn8exJ9a.mjs.map} +1 -1
  11. package/fesm2022/{ngx-t-forms-data-source-picker.component-Dzz_o6fJ.mjs → ngx-t-forms-data-source-picker.component-Ebf_if9j.mjs} +6 -6
  12. package/fesm2022/{ngx-t-forms-data-source-picker.component-Dzz_o6fJ.mjs.map → ngx-t-forms-data-source-picker.component-Ebf_if9j.mjs.map} +1 -1
  13. package/fesm2022/{ngx-t-forms-date-picker-input-element.component-CYUbVyzP.mjs → ngx-t-forms-date-picker-input-element.component-kdinBGRA.mjs} +2 -2
  14. package/fesm2022/{ngx-t-forms-date-picker-input-element.component-CYUbVyzP.mjs.map → ngx-t-forms-date-picker-input-element.component-kdinBGRA.mjs.map} +1 -1
  15. package/fesm2022/{ngx-t-forms-date-range-picker-input-element.component-CmoquQGV.mjs → ngx-t-forms-date-range-picker-input-element.component-4W6uvrDU.mjs} +2 -2
  16. package/fesm2022/{ngx-t-forms-date-range-picker-input-element.component-CmoquQGV.mjs.map → ngx-t-forms-date-range-picker-input-element.component-4W6uvrDU.mjs.map} +1 -1
  17. package/fesm2022/{ngx-t-forms-document-list-label-config-editor.component-CLUOXreG.mjs → ngx-t-forms-document-list-label-config-editor.component-CR6EvgJO.mjs} +3 -3
  18. package/fesm2022/{ngx-t-forms-document-list-label-config-editor.component-CLUOXreG.mjs.map → ngx-t-forms-document-list-label-config-editor.component-CR6EvgJO.mjs.map} +1 -1
  19. package/fesm2022/{ngx-t-forms-document-picker.component-qObjcqhE.mjs → ngx-t-forms-document-picker.component-BThdRFec.mjs} +2 -2
  20. package/fesm2022/{ngx-t-forms-document-picker.component-qObjcqhE.mjs.map → ngx-t-forms-document-picker.component-BThdRFec.mjs.map} +1 -1
  21. package/fesm2022/{ngx-t-forms-editor-input-element.component-BLXlfb6F.mjs → ngx-t-forms-editor-input-element.component-1X6uAPeZ.mjs} +3 -3
  22. package/fesm2022/{ngx-t-forms-editor-input-element.component-BLXlfb6F.mjs.map → ngx-t-forms-editor-input-element.component-1X6uAPeZ.mjs.map} +1 -1
  23. package/fesm2022/{ngx-t-forms-editor-js-input.component-BQL0AH7H.mjs → ngx-t-forms-editor-js-input.component-5MD8wRj0.mjs} +2 -2
  24. package/fesm2022/{ngx-t-forms-editor-js-input.component-BQL0AH7H.mjs.map → ngx-t-forms-editor-js-input.component-5MD8wRj0.mjs.map} +1 -1
  25. package/fesm2022/{ngx-t-forms-file-upload-input-element.component-C7mMeEjF.mjs → ngx-t-forms-file-upload-input-element.component-BAtuymMY.mjs} +2 -2
  26. package/fesm2022/{ngx-t-forms-file-upload-input-element.component-C7mMeEjF.mjs.map → ngx-t-forms-file-upload-input-element.component-BAtuymMY.mjs.map} +1 -1
  27. package/fesm2022/{ngx-t-forms-form-input-selector.component-C9u8zq9B.mjs → ngx-t-forms-form-input-selector.component-B42xP3jh.mjs} +2 -2
  28. package/fesm2022/{ngx-t-forms-form-input-selector.component-C9u8zq9B.mjs.map → ngx-t-forms-form-input-selector.component-B42xP3jh.mjs.map} +1 -1
  29. package/fesm2022/{ngx-t-forms-form-json-view.component-856Hx1Bg.mjs → ngx-t-forms-form-json-view.component-DnnLXqR0.mjs} +2 -2
  30. package/fesm2022/{ngx-t-forms-form-json-view.component-856Hx1Bg.mjs.map → ngx-t-forms-form-json-view.component-DnnLXqR0.mjs.map} +1 -1
  31. package/fesm2022/{ngx-t-forms-form-payload-projection.component-CDkTuX9S.mjs → ngx-t-forms-form-payload-projection.component-Ip9ewB18.mjs} +4 -4
  32. package/fesm2022/{ngx-t-forms-form-payload-projection.component-CDkTuX9S.mjs.map → ngx-t-forms-form-payload-projection.component-Ip9ewB18.mjs.map} +1 -1
  33. package/fesm2022/{ngx-t-forms-form-section-stepper.component-Bs50-nEB.mjs → ngx-t-forms-form-section-stepper.component-BPgPfZSy.mjs} +4 -4
  34. package/fesm2022/{ngx-t-forms-form-section-stepper.component-Bs50-nEB.mjs.map → ngx-t-forms-form-section-stepper.component-BPgPfZSy.mjs.map} +1 -1
  35. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-qrhM0jGL.mjs → ngx-t-forms-forms-builder-menu.component-Dv0Dfw79.mjs} +5 -5
  36. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-qrhM0jGL.mjs.map → ngx-t-forms-forms-builder-menu.component-Dv0Dfw79.mjs.map} +1 -1
  37. package/fesm2022/{ngx-t-forms-geo-location.component-Bosp1UzR.mjs → ngx-t-forms-geo-location.component-Bmd84Gcb.mjs} +2 -2
  38. package/fesm2022/{ngx-t-forms-geo-location.component-Bosp1UzR.mjs.map → ngx-t-forms-geo-location.component-Bmd84Gcb.mjs.map} +1 -1
  39. package/fesm2022/{ngx-t-forms-image-capture-input-element.component-C1g7Z0cK.mjs → ngx-t-forms-image-capture-input-element.component-CUd04Ghl.mjs} +2 -2
  40. package/fesm2022/{ngx-t-forms-image-capture-input-element.component-C1g7Z0cK.mjs.map → ngx-t-forms-image-capture-input-element.component-CUd04Ghl.mjs.map} +1 -1
  41. package/fesm2022/ngx-t-forms-index-BcrQ01DQ.mjs +2 -0
  42. package/fesm2022/ngx-t-forms-index-BcrQ01DQ.mjs.map +1 -0
  43. package/fesm2022/{ngx-t-forms-input-custom.component-BkbHFAyR.mjs → ngx-t-forms-input-custom.component-Cn-KH0Lb.mjs} +2 -2
  44. package/fesm2022/{ngx-t-forms-input-custom.component-BkbHFAyR.mjs.map → ngx-t-forms-input-custom.component-Cn-KH0Lb.mjs.map} +1 -1
  45. package/fesm2022/{ngx-t-forms-input-editor.component-BPUOM9kQ.mjs → ngx-t-forms-input-editor.component-DLru1Ezu.mjs} +17 -5
  46. package/fesm2022/ngx-t-forms-input-editor.component-DLru1Ezu.mjs.map +1 -0
  47. package/fesm2022/{ngx-t-forms-map-mat-options-keys-B6hJ7Io5.mjs → ngx-t-forms-map-mat-options-keys-CVlPdrCO.mjs} +2 -2
  48. package/fesm2022/{ngx-t-forms-map-mat-options-keys-B6hJ7Io5.mjs.map → ngx-t-forms-map-mat-options-keys-CVlPdrCO.mjs.map} +1 -1
  49. package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-c7uZT1sr.mjs → ngx-t-forms-mat-chip-list-editor.component-BWisS3Em.mjs} +4 -4
  50. package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-c7uZT1sr.mjs.map → ngx-t-forms-mat-chip-list-editor.component-BWisS3Em.mjs.map} +1 -1
  51. package/fesm2022/{ngx-t-forms-missing-form-configs.component-DrnH8qdG.mjs → ngx-t-forms-missing-form-configs.component-DxdynZY6.mjs} +2 -2
  52. package/fesm2022/{ngx-t-forms-missing-form-configs.component-DrnH8qdG.mjs.map → ngx-t-forms-missing-form-configs.component-DxdynZY6.mjs.map} +1 -1
  53. package/fesm2022/{ngx-t-forms-mscoa-chart-toolbar.component-C_abEBQ5.mjs → ngx-t-forms-mscoa-chart-toolbar.component-D4Xa_Yi0.mjs} +2 -2
  54. package/fesm2022/{ngx-t-forms-mscoa-chart-toolbar.component-C_abEBQ5.mjs.map → ngx-t-forms-mscoa-chart-toolbar.component-D4Xa_Yi0.mjs.map} +1 -1
  55. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-Bo0aDEMy.mjs +447 -0
  56. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-Bo0aDEMy.mjs.map +1 -0
  57. package/fesm2022/{ngx-t-forms-multiple-input-input-element.component-C7y1OGPx.mjs → ngx-t-forms-multiple-input-input-element.component-C8JP3D6r.mjs} +16 -16
  58. package/fesm2022/{ngx-t-forms-multiple-input-input-element.component-C7y1OGPx.mjs.map → ngx-t-forms-multiple-input-input-element.component-C8JP3D6r.mjs.map} +1 -1
  59. package/fesm2022/{ngx-t-forms-ngx-t-forms-u_kigDid.mjs → ngx-t-forms-ngx-t-forms-C2G8_WQk.mjs} +931 -82
  60. package/fesm2022/ngx-t-forms-ngx-t-forms-C2G8_WQk.mjs.map +1 -0
  61. package/fesm2022/{ngx-t-forms-paginated-selection-table-AQZSMmhr.mjs → ngx-t-forms-paginated-selection-table-0OI1ikWW.mjs} +2 -2
  62. package/fesm2022/{ngx-t-forms-paginated-selection-table-AQZSMmhr.mjs.map → ngx-t-forms-paginated-selection-table-0OI1ikWW.mjs.map} +1 -1
  63. package/fesm2022/{ngx-t-forms-pipeline-generator.component-DmNSc5aw.mjs → ngx-t-forms-pipeline-generator.component-CZ21sd77.mjs} +3 -3
  64. package/fesm2022/{ngx-t-forms-pipeline-generator.component-DmNSc5aw.mjs.map → ngx-t-forms-pipeline-generator.component-CZ21sd77.mjs.map} +1 -1
  65. package/fesm2022/{ngx-t-forms-record-list-manager.component-CUMMvMch.mjs → ngx-t-forms-record-list-manager.component-CykBq_nW.mjs} +2 -2
  66. package/fesm2022/{ngx-t-forms-record-list-manager.component-CUMMvMch.mjs.map → ngx-t-forms-record-list-manager.component-CykBq_nW.mjs.map} +1 -1
  67. package/fesm2022/{ngx-t-forms-required-inputs.component-Ch2yNcIS.mjs → ngx-t-forms-required-inputs.component-ONbhxVSH.mjs} +2 -2
  68. package/fesm2022/{ngx-t-forms-required-inputs.component-Ch2yNcIS.mjs.map → ngx-t-forms-required-inputs.component-ONbhxVSH.mjs.map} +1 -1
  69. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-C_aFtdvW.mjs → ngx-t-forms-rest-api-call-setup.component-WPUxtY7Q.mjs} +2 -2
  70. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-C_aFtdvW.mjs.map → ngx-t-forms-rest-api-call-setup.component-WPUxtY7Q.mjs.map} +1 -1
  71. package/fesm2022/{ngx-t-forms-section-report.component-BxOhR6C0.mjs → ngx-t-forms-section-report.component-C1w16LYm.mjs} +4 -4
  72. package/fesm2022/{ngx-t-forms-section-report.component-BxOhR6C0.mjs.map → ngx-t-forms-section-report.component-C1w16LYm.mjs.map} +1 -1
  73. package/fesm2022/{ngx-t-forms-select-input-element.component-DbgZdNoe.mjs → ngx-t-forms-select-input-element.component-CWcywuS6.mjs} +8 -8
  74. package/fesm2022/{ngx-t-forms-select-input-element.component-DbgZdNoe.mjs.map → ngx-t-forms-select-input-element.component-CWcywuS6.mjs.map} +1 -1
  75. package/fesm2022/{ngx-t-forms-selection-options-editor.component-Dhln81DL.mjs → ngx-t-forms-selection-options-editor.component-KjbZhc2u.mjs} +4 -4
  76. package/fesm2022/{ngx-t-forms-selection-options-editor.component-Dhln81DL.mjs.map → ngx-t-forms-selection-options-editor.component-KjbZhc2u.mjs.map} +1 -1
  77. package/fesm2022/{ngx-t-forms-t-workflow-picker.component-leBokXvM.mjs → ngx-t-forms-t-workflow-picker.component-CtavFAUq.mjs} +3 -3
  78. package/fesm2022/{ngx-t-forms-t-workflow-picker.component-leBokXvM.mjs.map → ngx-t-forms-t-workflow-picker.component-CtavFAUq.mjs.map} +1 -1
  79. package/fesm2022/{ngx-t-forms-textarea-input-element.component-BEbXJjFA.mjs → ngx-t-forms-textarea-input-element.component-DkJkBQif.mjs} +2 -2
  80. package/fesm2022/{ngx-t-forms-textarea-input-element.component-BEbXJjFA.mjs.map → ngx-t-forms-textarea-input-element.component-DkJkBQif.mjs.map} +1 -1
  81. package/fesm2022/{ngx-t-forms-toggle-input-element.component-DDErRUJd.mjs → ngx-t-forms-toggle-input-element.component-Dr7MNli8.mjs} +2 -2
  82. package/fesm2022/{ngx-t-forms-toggle-input-element.component-DDErRUJd.mjs.map → ngx-t-forms-toggle-input-element.component-Dr7MNli8.mjs.map} +1 -1
  83. package/fesm2022/{ngx-t-forms-validators-config.component-oGjQVGE2.mjs → ngx-t-forms-validators-config.component-BknyAmV_.mjs} +8 -167
  84. package/fesm2022/ngx-t-forms-validators-config.component-BknyAmV_.mjs.map +1 -0
  85. package/fesm2022/{ngx-t-forms-workflow-adjudication.component-CtU8dECN.mjs → ngx-t-forms-workflow-adjudication.component-CPvwm7f4.mjs} +3 -3
  86. package/fesm2022/{ngx-t-forms-workflow-adjudication.component-CtU8dECN.mjs.map → ngx-t-forms-workflow-adjudication.component-CPvwm7f4.mjs.map} +1 -1
  87. package/fesm2022/ngx-t-forms.mjs +1 -1
  88. package/package.json +2 -2
  89. package/types/ngx-t-forms.d.ts +191 -4
  90. package/fesm2022/ngx-t-forms-index-dDSobs6A.mjs +0 -2
  91. package/fesm2022/ngx-t-forms-index-dDSobs6A.mjs.map +0 -1
  92. package/fesm2022/ngx-t-forms-input-editor.component-BPUOM9kQ.mjs.map +0 -1
  93. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-C0qsMfsq.mjs +0 -336
  94. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-C0qsMfsq.mjs.map +0 -1
  95. package/fesm2022/ngx-t-forms-ngx-t-forms-u_kigDid.mjs.map +0 -1
  96. package/fesm2022/ngx-t-forms-validators-config.component-oGjQVGE2.mjs.map +0 -1
@@ -1,3 +1,3 @@
1
- export { o as DialogTemplateComponent, H as FORM_ACTIONS_TOKEN, I as FORM_CONFIG_TOKEN, K as FORM_INPUTS_TOKEN, L as FORM_ROUTE_SOURCE, O as FORM_SLIDES_TOKEN, p as FormBuilderComponent, Q as FormTowerControllerService, x as FormatDataPipe, q as FormsComponent, R as HttpPipelineRepository, W as IMPORT_TOWER_INSTANCE_ID, X as INPUT_SECRET_TOKEN, Y as MSCOA_TREE_PROVIDER, Z as MULTIPLE_FORM_INPUT_TOKEN, M as MscoaFormInputComponent, N as NGX_T_FORMS_CONFIG_TOKEN, $ as NgxTFormsComponent, a0 as NgxTFormsService, a1 as PIPELINE_REPOSITORY, a2 as PipelineRepository, a3 as PropertyAccessError, S as SignatureInputElementComponent, T as TDynamicDataEditComponent, b as TDynamicDataViewComponent, a4 as TFormImportController, r as TFormInputComponent, a5 as UTILS_OBJECT_TOKEN, U as UserFormStepperComponent, V as ValidationExpressioCreatorComponent, a as assignDeepPropertyToObject, a6 as createFileFromBase64, a7 as formGenerator, a8 as getPipedValueFromDataType, a9 as getSampleValueForInput, aa as getSectionElements, u as getSignatureImage, ab as getUrl, ac as getValueFromValueAccessor, ad as initFormConfigToV2, ae as provideNgxTForms, af as returnDeepProperty, w as returnMappedPathValue, s as safeReturnDeepProperty, ag as sheetConsolodation, t as testAgainstItem, ah as textIconsForUserHints, ai as validateExpressionSyntax, aj as validateObjectAgainstString, ak as withHttpPipeline, al as withInputSecret, am as withRouterFormId } from './ngx-t-forms-ngx-t-forms-u_kigDid.mjs';
1
+ export { v as DialogTemplateComponent, Q as FORM_ACTIONS_TOKEN, R as FORM_CONFIG_TOKEN, W as FORM_INPUTS_TOKEN, X as FORM_ROUTE_SOURCE, Y as FORM_SLIDES_TOKEN, w as FormBuilderComponent, Z as FormTowerControllerService, G as FormatDataPipe, x as FormsComponent, $ as HttpPipelineRepository, a0 as IMPORT_TOWER_INSTANCE_ID, a1 as INPUT_SECRET_TOKEN, a2 as MSCOA_TREE_PROVIDER, a3 as MULTIPLE_FORM_INPUT_TOKEN, M as MscoaFormInputComponent, N as NGX_T_FORMS_CONFIG_TOKEN, a4 as NgxTFormsComponent, a5 as NgxTFormsService, a6 as PIPELINE_REPOSITORY, a7 as PipelineRepository, a8 as PropertyAccessError, S as SignatureInputElementComponent, T as TDynamicDataEditComponent, b as TDynamicDataViewComponent, a9 as TFormImportController, y as TFormInputComponent, aa as UTILS_OBJECT_TOKEN, U as UserFormStepperComponent, V as ValidationExpressioCreatorComponent, a as assignDeepPropertyToObject, ab as createFileFromBase64, ac as formGenerator, ad as getPipedValueFromDataType, ae as getSampleValueForInput, af as getSectionElements, z as getSignatureImage, ag as getUrl, ah as getValueFromValueAccessor, ai as initFormConfigToV2, aj as provideNgxTForms, ak as returnDeepProperty, C as returnMappedPathValue, n as safeReturnDeepProperty, al as sheetConsolodation, t as testAgainstItem, am as textIconsForUserHints, an as validateExpressionSyntax, ao as validateObjectAgainstString, ap as withHttpPipeline, aq as withInputSecret, ar as withRouterFormId } from './ngx-t-forms-ngx-t-forms-C2G8_WQk.mjs';
2
2
  export { WorkflowFunctionTypes } from 'ngx-t-forms-types';
3
3
  //# sourceMappingURL=ngx-t-forms.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-t-forms",
3
- "version": "2.0.31",
3
+ "version": "2.0.32",
4
4
  "description": "Angular forms module for creating dynamic forms through configuration. Supports form validation, custom controls, and complex form structures.",
5
5
  "license": "UNLICENSED",
6
6
  "author": {
@@ -41,7 +41,7 @@
41
41
  "html5-qrcode": "^2.3.8",
42
42
  "katex": "^0.16.11",
43
43
  "mathjs": "^15.2.0",
44
- "ngx-t-forms-types": "^0.0.21",
44
+ "ngx-t-forms-types": "^0.0.22",
45
45
  "ngx-ui-tour-md-menu": "^16.0.0",
46
46
  "qrcode": "^1.5.4",
47
47
  "quill": "^2.0.3",
@@ -1,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Provider, EnvironmentProviders, InjectionToken, OnInit, OnDestroy, Signal, PipeTransform, Type, ElementRef } from '@angular/core';
3
3
  import * as ngx_t_forms_types from 'ngx-t-forms-types';
4
- import { NgxTFormsConfig, IFormActions, FormInterface, FormSlideInterface, InClassFormUtilsInterface, IWorkflowDocumentPicker, IBasicFormInput, IFileUploadInput, IDateRangePickerInput, ITextareaProperties, IToggleInput, IMatrixInput, IMultiple, IGetTreeResponse, IRunPipelineResponse, IPipelineGenerationResponse, LocalFormStateSelectorInterface, FormsStoreSelectorsInterface, FormListSection, WorkflowFunctionTypes, FileData, FormSubmissionStatus, IFormValidationOverride, FormColumnInputs, IFormChangeHistory, FormBuilderFunctions, ITowerFormSteps, ElementEditorTypes, ElementEditorInnerSectionElementInterface, IWorkflowOption, BlurHandleTypes, ITowerStepColumn, TreeNode, FlatNode, IArrayFunction, DocumentLitsLabelConfigInterfaceValueType, InputDataTypes, InputPipeTypes, ImportProgress, ImportRowState, ValidationError, FormInputBasicOptionInterface, ElementTypes, DialogConfig, PropertyPath, DeepPropertyValue, FileUploadInputValueInterface, FormInterfaceMigration, ConfigurationValidTestInterface, EncryptedData } from 'ngx-t-forms-types';
4
+ import { NgxTFormsConfig, IFormActions, FormInterface, FormSlideInterface, InClassFormUtilsInterface, IWorkflowDocumentPicker, IBasicFormInput, IFileUploadInput, IDateRangePickerInput, ITextareaProperties, IToggleInput, IMatrixInput, IMultiple, IGetTreeResponse, IRunPipelineResponse, IPipelineGenerationResponse, LocalFormStateSelectorInterface, FormsStoreSelectorsInterface, FormListSection, WorkflowFunctionTypes, FileData, FormSubmissionStatus, IFormValidationOverride, FormColumnInputs, IFormChangeHistory, FormBuilderFunctions, ITowerFormSteps, ElementEditorTypes, ElementEditorInnerSectionElementInterface, ScoaInnerInput, IWorkflowOption, BlurHandleTypes, ITowerStepColumn, TreeNode, FlatNode, IArrayFunction, DocumentLitsLabelConfigInterfaceValueType, InputDataTypes, InputPipeTypes, ImportProgress, ImportRowState, ValidationError, FormInputBasicOptionInterface, ElementTypes, DialogConfig, PropertyPath, DeepPropertyValue, FileUploadInputValueInterface, FormInterfaceMigration, ConfigurationValidTestInterface, EncryptedData } from 'ngx-t-forms-types';
5
5
  export { BlurHandleTypes, ConfigurationValidTestInterface, DeepPropertyValue, DialogConfig, DocumentLitsLabelConfigInterfaceValueType, ElementEditorInnerSectionElementInterface, ElementEditorTypes, EncryptedData, FileUploadInputValueInterface, FormBuilderFunctions, FormColumnInputs, FormInterface, FormInterfaceMigration, FormListSection, FormSubmissionStatus, IArrayFunction, IFormActions, IFormChangeHistory, IFormTour, IFormValidationOverride, IGetTreeResponse, IScoaAccount, ITowerStepColumn, IWorkflowOption, ImportProgress, ImportRowState, ImportRowStatus, InClassFormUtilsInterface, InputDataTypes, InputPipeTypes, LocalFormStateSelectorInterface, NgxTFormsConfig, OLD_FormInterface, PropertyPath, TreeNode, ValidationError, WorkflowFunctionTypes } from 'ngx-t-forms-types';
6
6
  import * as rxjs from 'rxjs';
7
7
  import { Observable, Subject } from 'rxjs';
@@ -848,6 +848,27 @@ declare abstract class FormTowerControllerService implements OnDestroy {
848
848
  * @param inputId - The MultipleInput whose sub-row bridge to drop.
849
849
  */
850
850
  unbindMultipleInputRowControls: (inputId: string) => void;
851
+ /**
852
+ * Bridges live edits of mSCOA inner inputs — the custom form inputs configured
853
+ * inside an `MscoaSelection` column (e.g. `budgetValue`, `department`) and
854
+ * rendered inline by the MSCOA chart via a `ComponentPortal` — into the signal
855
+ * graph.
856
+ *
857
+ * Each inner input is a `${mscoaColId}.${innerId}` control sitting in the mSCOA
858
+ * column's section group. The engine already lists it in `allFormInputs`, so
859
+ * its derived calc / value-API / options graph is built at init (the OUTPUT
860
+ * half). But a `ComponentPortal` forwards inputs only and never subscribes the
861
+ * host's `valueChange` output, so the user's typed value never reached `#model`
862
+ * — leaving dependent calculations / value-fetches / options blind to it. This
863
+ * subscribes each such control's `valueChanges` → `updateValue(controlName, …)`,
864
+ * restoring the INPUT half so an mSCOA custom input behaves exactly like a
865
+ * primary-form input. Direct mirror of
866
+ * {@link FormTowerControllerService.bindMultipleInputRowControls}.
867
+ *
868
+ * Idempotent (tears down the prior bridge first) and anchored to `_destroyed$`,
869
+ * so the re-init `clearFormState` drops every inner subscription.
870
+ */
871
+ bindScoaInnerInputControls: () => void;
851
872
  /**
852
873
  * Re-runs every refreshable function for inputs in `sectionId` (resource
853
874
  * `.reload()` + dependency order). Returns an Observable that completes when
@@ -1105,6 +1126,18 @@ declare class TDynamicDataEditComponent {
1105
1126
  readonly data: _angular_core.InputSignal<unknown>;
1106
1127
  /** Validation errors surfaced by the parent for display. */
1107
1128
  readonly validationErrors: _angular_core.InputSignal<IConfigElementError[] | null>;
1129
+ /**
1130
+ * Builder-only: creates or updates an account-level MSCOA custom input (a peer
1131
+ * of the segments) from the segment-config quick editor. Forwarded to that
1132
+ * editor; absent outside the form builder, which hides the related affordance.
1133
+ */
1134
+ readonly mscoaSaveCustomInput: _angular_core.InputSignal<((sectionId: string, scoaInputId: string, config: Pick<ScoaInnerInput, "element" | "label" | "formControlName" | "singleSelect" | "readonly"> & {
1135
+ id?: string;
1136
+ }) => void) | undefined>;
1137
+ /** Builder-only: opens an MSCOA custom input in the input editor for advanced configuration. */
1138
+ readonly mscoaEditInput: _angular_core.InputSignal<((input: FormColumnInputs) => void) | undefined>;
1139
+ /** Builder-only: removes an MSCOA custom input from the config. */
1140
+ readonly mscoaDeleteInput: _angular_core.InputSignal<((input: FormColumnInputs) => void) | undefined>;
1108
1141
  /** Fires when the edited value changes (debounced). */
1109
1142
  readonly valueChange: _angular_core.OutputEmitterRef<unknown>;
1110
1143
  /** Fires when an inner editor loses focus (used for expression-style editors). */
@@ -1141,7 +1174,7 @@ declare class TDynamicDataEditComponent {
1141
1174
  inputConfig: Partial<ITowerStepColumn>;
1142
1175
  }>;
1143
1176
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TDynamicDataEditComponent, never>;
1144
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TDynamicDataEditComponent, "lib-t-dynamic-data-edit", never, { "editorConfig": { "alias": "editorConfig"; "required": false; "isSignal": true; }; "formInputs": { "alias": "formInputs"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "validationErrors": { "alias": "validationErrors"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "blur": "blur"; }, never, never, true, never>;
1177
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TDynamicDataEditComponent, "lib-t-dynamic-data-edit", never, { "editorConfig": { "alias": "editorConfig"; "required": false; "isSignal": true; }; "formInputs": { "alias": "formInputs"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "validationErrors": { "alias": "validationErrors"; "required": false; "isSignal": true; }; "mscoaSaveCustomInput": { "alias": "mscoaSaveCustomInput"; "required": false; "isSignal": true; }; "mscoaEditInput": { "alias": "mscoaEditInput"; "required": false; "isSignal": true; }; "mscoaDeleteInput": { "alias": "mscoaDeleteInput"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "blur": "blur"; }, never, never, true, never>;
1145
1178
  }
1146
1179
 
1147
1180
  declare class TreeComponent {
@@ -1413,6 +1446,41 @@ declare class TFormImportController {
1413
1446
  * Errors are prefixed with the item index: "[0].subField.errorCode".
1414
1447
  */
1415
1448
  private _processMultipleFormInput;
1449
+ /**
1450
+ * Rewrites a MultipleInput sub-input's cross-field dependency references from
1451
+ * the live form's COMPOUND id scheme back to the SIMPLE id the per-row mock
1452
+ * form uses.
1453
+ *
1454
+ * In the real form, {@link allFormInputs} flattens a MultipleInput's children
1455
+ * and rewrites each child's id to `${multipleInputId}.${childId}`. Every
1456
+ * dependent field's `mapTo.inputId` (value/options-API `minimumInputRequired`)
1457
+ * is authored against that compound id — so `readDep(compoundId)` resolves and
1458
+ * the dependent fetch fires. The mock form built in
1459
+ * {@link TFormImportController._processMultipleFormInput} hoists those children
1460
+ * to top-level columns, so they keep their SIMPLE ids; the baked-in compound
1461
+ * `mapTo.inputId` references then resolve to nothing, `validateMinInput` fails,
1462
+ * the value-API `params` stay `undefined`, and the resource never fetches —
1463
+ * leaving every derived sub-field null (and dropped by `getFormValueNames`).
1464
+ *
1465
+ * Deep-clones `node` (never mutates the shared form definition) and strips the
1466
+ * `${parentId}.` prefix from any `inputId` that targets a sibling in THIS
1467
+ * MultipleInput, so the sub-tower's signal graph resolves dependencies exactly
1468
+ * as the live form does.
1469
+ *
1470
+ * @param node - The sub-input config (or any nested fragment) to rewrite.
1471
+ * @param parentId - The owning MultipleInput's id (the compound prefix).
1472
+ */
1473
+ private _localizeSubInputDeps;
1474
+ /**
1475
+ * Parses a string MultipleInput cell into an array of row objects.
1476
+ *
1477
+ * Spreadsheet cells are primitives, so a MultipleInput column arrives as a
1478
+ * JSON-stringified array. Returns the parsed array on success; returns the
1479
+ * raw value unchanged on failure (empty string, plain text, malformed JSON,
1480
+ * or a non-array JSON value) so the caller's `Array.isArray` check treats it
1481
+ * as "no rows" rather than throwing.
1482
+ */
1483
+ private _tryParseJsonArray;
1416
1484
  /**
1417
1485
  * Resolves a single account code to an IScoaAccount.
1418
1486
  * Routed through `_cachedGet` so identical codes across concurrent rows share
@@ -1478,6 +1546,29 @@ declare class TFormImportController {
1478
1546
  * Multiple error keys on one control are joined with '.'.
1479
1547
  */
1480
1548
  private _collectColErrors;
1549
+ /**
1550
+ * Collects the MultipleInput columns whose value is tower-derived — i.e. they
1551
+ * carry a value-API fetch (`matOptions.fetch.value.source === 'api'`) or a
1552
+ * value-producing calculation. These are the columns whose import rows are
1553
+ * overridden by the tower's own value graph and therefore need the
1554
+ * tower-favored deep merge applied in {@link TFormImportController._processRow}.
1555
+ */
1556
+ private _valueDerivedMultipleInputs;
1557
+ /** True iff the column derives its value from a value-API fetch or a calculation. */
1558
+ private _isValueDerivedColumn;
1559
+ /**
1560
+ * Deep-merges two values with the **override** (tower-derived) value favored
1561
+ * and the **base** (import) value filling every gap it leaves.
1562
+ *
1563
+ * Rules (mirrors the import-merge contract):
1564
+ * - `override` wins for scalars and for any key it defines.
1565
+ * - Keys present only on `base` are preserved (import fills gaps).
1566
+ * - Arrays merge **element-wise by index** (each element deep-merged), so a
1567
+ * tower row that omits an import-only field keeps that field.
1568
+ * - An **empty** `override` array (or `null`/`undefined`) falls back entirely
1569
+ * to `base` — a tower value that resolves empty never erases the import rows.
1570
+ */
1571
+ private _deepMergePreferTower;
1481
1572
  /**
1482
1573
  * Immutable row update — clones the rows array and the targeted row before
1483
1574
  * pushing through `_rows$` so subscribers downstream of `progress$` always
@@ -1722,6 +1813,63 @@ declare class SignatureInputElementComponent {
1722
1813
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SignatureInputElementComponent, "lib-signature-input-element", never, { "inputConfig": { "alias": "inputConfig"; "required": true; "isSignal": true; }; "formGroup": { "alias": "formGroup"; "required": true; "isSignal": true; }; }, { "reload": "reload"; }, never, never, true, never>;
1723
1814
  }
1724
1815
 
1816
+ /**
1817
+ * @file Round-trip bridge between the guided condition builder in
1818
+ * `lib-validators-config` and a custom validator's `expression` **string** plus
1819
+ * its `inputsObservedForChanges` dependency list — both part of the frozen
1820
+ * {@link FormControlCustomValidatorsInterface} contract.
1821
+ *
1822
+ * The validator engine evaluates `expression` with the shared predicate DSL
1823
+ * ({@link evaluatePredicate}) where **`true` means the field is INVALID**. The
1824
+ * scope it evaluates against is `{ [variable]: <whole value of inputId> }` for
1825
+ * every entry in `inputsObservedForChanges` (see `build-manual-validation.ts`).
1826
+ *
1827
+ * Because the grammar is identical to the array-access predicate builder, this
1828
+ * module reuses {@link PREDICATE_OPERATORS} so the operator labels stay in lock
1829
+ * step with `lib-data-tree`. The model differs in one validator-specific way:
1830
+ * the right-hand side of a comparison may be **another field** (e.g. an
1831
+ * "end date is before start date" rule), not only a typed literal — so the
1832
+ * serializer must emit a bare variable token rather than a quoted string in
1833
+ * that case.
1834
+ *
1835
+ * {@link parseConditions} best-effort parses an expression into the structured
1836
+ * model; when it cannot (parentheses, mixed `&&`/`||`, unary `!`, an unknown
1837
+ * operator), it returns `null` and the UI falls back to the raw editor — power
1838
+ * users and legacy expressions are never locked out.
1839
+ *
1840
+ * @internal
1841
+ */
1842
+
1843
+ /** A single guided comparison: `field operator (value | field)`. */
1844
+ interface ValidatorCondition {
1845
+ /** Left operand — always a referenced field's variable name. */
1846
+ field: string;
1847
+ /** One of the {@link PREDICATE_OPERATORS} values (`===`, `>`, `includes`, …). */
1848
+ operator: string;
1849
+ /** Whether the right operand is a typed literal or another field. */
1850
+ compareTo: 'value' | 'field';
1851
+ /** Literal text, or the variable name of the compared field. */
1852
+ value: string;
1853
+ }
1854
+ /** A flat list of conditions joined by a single connector. */
1855
+ interface ValidatorConditionGroup {
1856
+ connector: '&&' | '||';
1857
+ conditions: ValidatorCondition[];
1858
+ }
1859
+
1860
+ /** A field the guided builder can reference, with a friendly label. */
1861
+ interface ExpressionFieldOption {
1862
+ readonly variable: string;
1863
+ readonly label: string;
1864
+ /** The step the field belongs to, used to group the dropdown (`null` = ungrouped). */
1865
+ readonly stepName: string | null;
1866
+ }
1867
+ /** A set of field options sharing a step, rendered as one `<optgroup>`. */
1868
+ interface ExpressionFieldGroup {
1869
+ /** The `<optgroup>` label, or `null` to render the options without a group. */
1870
+ readonly label: string | null;
1871
+ readonly options: readonly ExpressionFieldOption[];
1872
+ }
1725
1873
  /**
1726
1874
  * Builder-side editor for authoring a boolean expression (used for guarded
1727
1875
  * navigation, conditional validation, and API path-selection rules). Validates
@@ -1767,17 +1915,40 @@ declare class ValidationExpressioCreatorComponent {
1767
1915
  expression: string | null;
1768
1916
  valueAccessRules: Record<string, TreeNode[]>;
1769
1917
  }>;
1770
- protected readonly textareaElementRef: _angular_core.Signal<ElementRef<HTMLTextAreaElement>>;
1918
+ protected readonly textareaElementRef: _angular_core.Signal<ElementRef<HTMLTextAreaElement> | undefined>;
1771
1919
  protected readonly expressionControl: FormControl<string | null>;
1772
1920
  protected readonly showSuggestions: _angular_core.WritableSignal<boolean>;
1773
1921
  protected readonly optionsSearch: _angular_core.WritableSignal<string | undefined>;
1774
1922
  protected readonly variableInEdit: _angular_core.WritableSignal<string | null>;
1923
+ /** Operator choices, shared with the validators builder for label parity. */
1924
+ protected readonly operators: readonly {
1925
+ value: string;
1926
+ label: string;
1927
+ }[];
1928
+ protected readonly mode: _angular_core.Signal<"guided" | "advanced">;
1929
+ protected readonly group: _angular_core.Signal<ValidatorConditionGroup>;
1930
+ protected readonly expressionText: _angular_core.Signal<string>;
1931
+ /** Fields the guided builder can reference, as friendly options. */
1932
+ protected readonly fieldOptions: _angular_core.Signal<readonly ExpressionFieldOption[]>;
1933
+ /**
1934
+ * Field options grouped by their `stepName` for the dropdowns, preserving
1935
+ * first-seen order. Fields without a step collapse into a single ungrouped
1936
+ * bucket (rendered without an `<optgroup>`), so forms that don't carry step
1937
+ * names degrade to a plain flat list.
1938
+ */
1939
+ protected readonly fieldOptionGroups: _angular_core.Signal<readonly ExpressionFieldGroup[]>;
1940
+ /** Whether the current expression can be represented by the guided builder. */
1941
+ protected readonly canUseGuided: _angular_core.Signal<boolean>;
1775
1942
  protected readonly methods: {
1776
1943
  label: string;
1777
1944
  hint: string;
1778
1945
  value: string;
1779
1946
  }[];
1780
- /** Bridge the `expression` input into the FormControl. */
1947
+ /**
1948
+ * Bridge the `expression` input into the FormControl and seed the guided
1949
+ * builder. Reparsing is `untracked` so this only re-runs when the `expression`
1950
+ * input changes — never when the user edits inside either mode.
1951
+ */
1781
1952
  protected readonly expressionBridge: _angular_core.EffectRef;
1782
1953
  /** Mirror the `valueAccessRules` input into the local mutable copy. */
1783
1954
  protected readonly valueAccessRulesBridge: _angular_core.EffectRef;
@@ -1795,6 +1966,22 @@ declare class ValidationExpressioCreatorComponent {
1795
1966
  protected cleanValueAccessRules(): void;
1796
1967
  protected selectSuggestionInput(suggestion: string): void;
1797
1968
  protected onFocus(): void;
1969
+ /** Read the value-event target as a string. */
1970
+ protected inputValue(event: Event): string;
1971
+ /** Switch the All/Any connector joining the conditions. */
1972
+ protected setConnector(connector: '&&' | '||'): void;
1973
+ /** Append a fresh condition defaulting its field to the first available one. */
1974
+ protected addCondition(): void;
1975
+ /** Apply a partial change to the condition at `index`. */
1976
+ protected updateCondition(index: number, patch: Partial<ValidatorCondition>): void;
1977
+ /** Flip a condition between comparing to a typed value and another field. */
1978
+ protected toggleCompareTo(index: number): void;
1979
+ /** Remove the condition at `index`. */
1980
+ protected removeCondition(index: number): void;
1981
+ /** Switch to the raw expression editor (the escape hatch for power users). */
1982
+ protected useAdvanced(): void;
1983
+ /** Switch back to the guided builder, reparsing the current expression. */
1984
+ protected useGuided(): void;
1798
1985
  protected toggleVariableInEdit(variable: string): void;
1799
1986
  protected activeVariableChanged(value: TreeNode[] | string | {
1800
1987
  [key: string]: TreeNode[] | string;
@@ -1,2 +0,0 @@
1
- export { o as DialogTemplateComponent, p as FormBuilderComponent, q as FormsComponent, M as MscoaFormInputComponent, S as SignatureInputElementComponent, T as TDynamicDataEditComponent, b as TDynamicDataViewComponent, r as TFormInputComponent, U as UserFormStepperComponent, V as ValidationExpressioCreatorComponent, u as getSignatureImage, t as testAgainstItem } from './ngx-t-forms-ngx-t-forms-u_kigDid.mjs';
2
- //# sourceMappingURL=ngx-t-forms-index-dDSobs6A.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-t-forms-index-dDSobs6A.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-t-forms-input-editor.component-BPUOM9kQ.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/form-builder/elements/default-element/default-element.component.ts","../../../projects/ngx-t-forms/src/lib/components/form-builder/elements/default-element/default-element.component.html","../../../projects/ngx-t-forms/src/lib/components/form-builder/elements/input-element-editor/input-element-editor.component.ts","../../../projects/ngx-t-forms/src/lib/components/form-builder/elements/input-element-editor/input-element-editor.component.html","../../../projects/ngx-t-forms/src/lib/components/form-builder/elements/input-editor/input-editor.component.ts","../../../projects/ngx-t-forms/src/lib/components/form-builder/elements/input-editor/input-editor.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, DestroyRef, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\n\r\nimport { FormsStoreService } from '../../../forms/store/forms-store.service';\r\nimport { DefaultInputConfig, ElementTypes } from 'ngx-t-forms-types';\r\nimport { take } from 'rxjs';\r\nimport { getInputIcon } from '../../../../shared/functions/getInputIcon';\r\n\r\n@Component({\r\n selector: 'lib-default-element',\r\n imports: [MatListModule, MatIconModule, MatDividerModule],\r\n templateUrl: './default-element.component.html',\r\n styleUrl: './default-element.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DefaultElementComponent {\r\n protected readonly inputs = DefaultInputConfig;\r\n readonly #store = inject(FormsStoreService);\r\n readonly #destroyRef = inject(DestroyRef);\r\n\r\n protected getDefaultInputs(): ElementTypes[] {\r\n const i = JSON.parse(JSON.stringify(DefaultInputConfig)) as Record<string, unknown>;\r\n return Object.keys(i) as ElementTypes[];\r\n }\r\n\r\n protected getInputIcon(element: ElementTypes): string {\r\n return getInputIcon(element);\r\n }\r\n\r\n protected selectInputTemplate(input: ElementTypes): void {\r\n this.#store.selectors.selectInputInEditId$\r\n .pipe(take(1), takeUntilDestroyed(this.#destroyRef))\r\n .subscribe((id) => {\r\n if (!id) return;\r\n this.#store.actionsFormBuilder.selectInputTemplate(id, input);\r\n });\r\n }\r\n}\r\n","<br>\r\n<mat-nav-list style=\"margin: 5px;\">\r\n\r\n\r\n @defer () {\r\n @for (input of getDefaultInputs(); track input) {\r\n @if (inputs[input]?.disabled === false) {\r\n <mat-list-item style=\"background: var(--mdc-elevated-card-container-color, var(--mat-app-surface-container-low));\"\r\n (click)=\"selectInputTemplate(input)\">\r\n <mat-icon matListItemAvatar>{{ getInputIcon(input) }}</mat-icon>\r\n <span matListItemTitle href=\"...\">{{ inputs[input]?.label}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n }\r\n }\r\n \r\n }\r\n\r\n\r\n</mat-nav-list>","import { ChangeDetectionStrategy, Component, DOCUMENT, PLATFORM_ID, computed, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { FormsStoreService } from '../../../forms/store/forms-store.service';\n\nimport { TDynamicDataEditComponent, TDynamicDataViewComponent } from '../../..';\n\nimport type { ElementEditorInnerSectionElementInterface, ElementTypes } from 'ngx-t-forms-types';\nimport { getInputIcon } from '../../../../shared/functions/getInputIcon';\n\n@Component({\n selector: 'lib-input-element-editor',\n imports: [\n MatToolbarModule,\n MatDividerModule,\n MatExpansionModule,\n MatIconModule,\n MatListModule,\n MatTooltipModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatCardModule,\n MatFormFieldModule,\n TDynamicDataEditComponent,\n TDynamicDataViewComponent,\n ],\n templateUrl: './input-element-editor.component.html',\n styleUrl: './input-element-editor.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputElementEditorComponent {\n readonly #store = inject(FormsStoreService);\n readonly #platformId = inject(PLATFORM_ID);\n readonly #document = inject(DOCUMENT);\n\n readonly #signals = this.#store.formBuilderSignalSelectors;\n\n protected readonly vm = computed(() => ({\n defaultInputInEdit: this.#signals.defaultInputInEdit(),\n inputInEdit: this.#signals.inputInEdit(),\n inputElementEditorConfigs: this.#signals.inputElementEditorConfigs(),\n inputInEditValidationErrors: this.#signals.inputInEditValidationErrors(),\n formInputs: this.#signals.getAllFormInputs(),\n }));\n\n protected readonly elementConfigurationChanged = (\n value: unknown,\n ele: ElementEditorInnerSectionElementInterface,\n ): void => {\n const inputVal = this.#signals.inputInEdit();\n if (!inputVal) return;\n this.#store.actionsFormBuilder.elementConfigurationChanged(inputVal.id, value, ele);\n };\n\n protected readonly clearInputInEdit = (): void => {\n const inputVal = this.#signals.inputInEdit();\n if (!inputVal) return;\n this.#store.actionsFormBuilder.clearInputInEdit(inputVal.id);\n };\n\n protected readonly elementBlur = (\n event: unknown,\n element: ElementEditorInnerSectionElementInterface,\n ): void => {\n const inputVal = this.#signals.inputInEdit();\n if (!inputVal) return;\n this.#store.actionsFormBuilder.elementBlur(inputVal.id, event, element);\n };\n\n protected getInputIcon(element: ElementTypes | undefined | null): string {\n return getInputIcon(element);\n }\n\n protected showDebugData(): void {\n if (!isPlatformBrowser(this.#platformId)) return;\n const win = this.#document.defaultView;\n if (!win) return;\n const jsonData = JSON.stringify(this.vm(), null, 2);\n const blob = new Blob([jsonData], { type: 'application/json' });\n const url = win.URL.createObjectURL(blob);\n const link = this.#document.createElement('a');\n link.href = url;\n link.download = 'debug-data.json';\n link.click();\n win.URL.revokeObjectURL(url);\n }\n}\n","<mat-toolbar class=\"section-header\">\r\n <span class=\"header\">Element configuration</span>\r\n <span class=\"spacer\"></span>\r\n</mat-toolbar>\r\n<mat-divider></mat-divider>\r\n@if (vm(); as vm) {\r\n @defer (on viewport) {\r\n\r\n <mat-accordion togglePosition=\"before\">\r\n @for(section of (vm.inputElementEditorConfigs.editorSections||[]); track section.id; let i = $index) {\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{section.label}}\r\n <span class=\"spacer\"></span>\r\n @if (section.hasErrors) {\r\n <mat-icon color=\"warn\">error</mat-icon>\r\n }\r\n @if (section.showItemValue && !!(vm.inputInEdit)) {\r\n <span class=\"showItemValue\">\r\n {{ vm.inputInEdit[section.showItemValue]}}\r\n </span>\r\n }\r\n <mat-divider style=\"position: absolute; left:0px; width:100%; bottom:0px;\"></mat-divider>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div style=\"margin-top: 16px;\"></div>\r\n\r\n <!-- Element type selector (only in first section) -->\r\n @if(i === 0) {\r\n <mat-nav-list>\r\n <mat-list-item [disabled]=\"vm.inputInEdit?.systemDefault\" matTooltip=\"Change input element\"\r\n (click)=\"vm.inputInEdit?.systemDefault? '':clearInputInEdit()\">\r\n <mat-icon matListItemAvatar [attr.aria-label]=\"(vm.defaultInputInEdit)?.label\">\r\n {{ getInputIcon(vm.inputInEdit?.element) }}\r\n </mat-icon>\r\n <span matListItemTitle>{{ (vm.defaultInputInEdit)?.label}}</span>\r\n <span matListItemMeta>\r\n <mat-icon>arrow_forward_ios</mat-icon>\r\n </span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n </mat-nav-list>\r\n }\r\n\r\n <!-- Section elements -->\r\n @for(element of section.elements; track element.id) {\r\n <p style=\"margin-bottom: 16px; margin-top: 8px;\">\r\n @defer (on viewport) {\r\n <lib-t-dynamic-data-edit\r\n [editorConfig]=\"element\"\r\n [data]=\"(vm.inputInEdit)\"\r\n [validationErrors]=\"element.computedErrors||[]\"\r\n (valueChange)=\"elementConfigurationChanged($event, element)\" [formInputs]=\"(vm.formInputs)||[]\"\r\n (blur)=\"elementBlur($event, element)\">\r\n </lib-t-dynamic-data-edit>\r\n } @placeholder {\r\n <div style=\"padding: 50px; display:flex; justify-content:center; align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"18\"></mat-spinner>\r\n </div>\r\n }\r\n </p>\r\n }\r\n </mat-expansion-panel>\r\n }\r\n </mat-accordion>\r\n } @placeholder {\r\n <div style=\"padding: 50px; display:flex; justify-content:center; align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"50\" />\r\n </div>\r\n } @error {\r\n <div style=\"padding: 16px;\">\r\n <mat-error>\r\n <h3>Error loading element editor</h3>\r\n <p>An error occurred while loading the element editor. Please try again later.</p>\r\n </mat-error>\r\n </div>\r\n\r\n }\r\n\r\n\r\n\r\n\r\n <!-- Diagnostic section -->\r\n <mat-toolbar class=\"section-header\">\r\n <span class=\"header\">Diagnostic data</span>\r\n <span class=\"spacer\"></span>\r\n </mat-toolbar>\r\n <mat-divider></mat-divider>\r\n\r\n <mat-accordion togglePosition=\"before\">\r\n\r\n @if(((vm.inputInEditValidationErrors)||[]).length > 0) {\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n Validation Errors\r\n <span class=\"spacer\"></span>\r\n <mat-error>\r\n {{(vm.inputInEditValidationErrors).length||''}}\r\n </mat-error>\r\n <mat-divider style=\"position: absolute; left:0px; width:100%; bottom:0px;\"></mat-divider>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div style=\"margin-top: 16px;\"></div>\r\n <mat-error style=\"border: solid 1px; border-radius: 8px; padding: 16px;\">\r\n <h1>All configuration errors:</h1>\r\n <p>\r\n {{(vm.inputInEditValidationErrors).length||''}} errors found. When an error is found, the input will\r\n not\r\n be saved.\r\n </p>\r\n <ul>\r\n @for(error of (vm.inputInEditValidationErrors); track error.key) {\r\n <li>\r\n <strong>{{error.key}}</strong> {{error.message}}\r\n </li>\r\n }\r\n </ul>\r\n </mat-error>\r\n </mat-expansion-panel>\r\n }\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header style=\" padding-right: 0px;\">\r\n <mat-panel-title>\r\n Complete Virtual Model\r\n <span class=\"spacer\"></span>\r\n <button mat-icon-button (click)=\"showDebugData()\">\r\n <mat-icon>\r\n troubleshoot\r\n </mat-icon>\r\n </button>\r\n <mat-divider style=\"position: absolute; left:0px; width:100%; bottom:0px;\"></mat-divider>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div style=\"margin-top: 16px;\"></div>\r\n <mat-card style=\"padding: 16px;\">\r\n\r\n <lib-t-dynamic-data-view [data]=\"({\r\n 'Default Input Template InEdit': vm.defaultInputInEdit,\r\n 'Input In Edit': vm.inputInEdit,\r\n 'Input Editor Sections': vm.inputElementEditorConfigs?.editorSections,\r\n })\"></lib-t-dynamic-data-view>\r\n\r\n </mat-card>\r\n </mat-expansion-panel>\r\n\r\n </mat-accordion>\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\nimport { DefaultElementComponent } from '../default-element/default-element.component';\r\nimport { InputElementEditorComponent } from '../input-element-editor/input-element-editor.component';\r\nimport { FormsStoreService } from '../../../forms/store/forms-store.service';\r\n\r\nimport { Observable, take, tap } from 'rxjs';\r\nimport { DefaultInputConfig } from 'ngx-t-forms-types';\r\n\r\n@Component({\r\n selector: 'lib-input-editor',\r\n imports: [\r\n AsyncPipe,\r\n MatCardModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatDividerModule,\r\n MatToolbarModule,\r\n DragDropModule,\r\n DefaultElementComponent,\r\n InputElementEditorComponent,\r\n ],\r\n templateUrl: './input-editor.component.html',\r\n styleUrl: './input-editor.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class InputEditorComponent {\r\n readonly #store = inject(FormsStoreService);\r\n\r\n protected readonly defaultInputs = DefaultInputConfig;\r\n protected readonly inputInEdit$ = this.#store.formBuilderSelectors.inputInEdit$;\r\n protected readonly defaultInputInEdit$ = this.#store.formBuilderSelectors.defaultInputInEdit$;\r\n\r\n protected readonly saveInput = (): void => {\r\n this.inputInEdit$\r\n .pipe(\r\n take(1),\r\n tap((inputVal) => {\r\n if (!inputVal) return;\r\n this.#store.actionsFormBuilder.saveInput(inputVal.id);\r\n }),\r\n )\r\n .subscribe();\r\n };\r\n\r\n protected readonly closeEditor = (): void => {\r\n this.#store.actions.setInputInEditId({ inputInEdit: null });\r\n };\r\n\r\n protected get validationErrors$(): Observable<{ key: string; message: string }[] | null> {\r\n return this.#store.formBuilderSelectors.inputInEditValidationErrors$;\r\n }\r\n}\r\n","<mat-card\r\n\r\nstyle=\"\r\n\r\nbackground: var(--mat-sys-surface-container, var(--mat-app-surface));\r\nmargin:0px;\r\nborder:solid 1px var(--mat-divider-color, var(--mat-app-outline))\">\r\n\r\n <mat-card-header >\r\n <mat-card-title>\r\n {{\r\n !!(inputInEdit$|async)?.element\r\n ? \"Edit \" + (inputInEdit$|async)?.label + \" element\"\r\n : \"Setup Form Element\"\r\n }}\r\n </mat-card-title>\r\n <mat-card-subtitle> {{\r\n !!(inputInEdit$|async)?.element? \"Configure the element below\": \"Form element are components making up a form section. Types of form elements are defined by their behaviour and use case, for example a date range picker is well suited to determine duration.\"\r\n }}</mat-card-subtitle>\r\n <button style=\"position: absolute;right:4px\" mat-icon-button cdkDragHandle >\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>\r\n </mat-card-header>\r\n\r\n\r\n\r\n @if(!!((inputInEdit$|async))?.element){\r\n <lib-input-element-editor\r\n style=\"background: var(--mat-sys-surface-container, var(--mat-app-surface))\">\r\n </lib-input-element-editor>\r\n }@else{\r\n <lib-default-element style=\"background: var(--mat-sys-surface-container, var(--mat-app-surface))\"></lib-default-element>\r\n }\r\n <br>\r\n\r\n <br>\r\n <mat-divider style=\"position: sticky;bottom: 53px;\"></mat-divider>\r\n <mat-toolbar style=\"position: sticky;bottom: 0;\">\r\n <span class=\"spacer\"></span>\r\n <button (click)=\"closeEditor()\" class=\"\" mat-button>close</button>\r\n\r\n @if (!((inputInEdit$|async))?.id) {\r\n <button mat-flat-button\r\n (click)=\"saveInput()\"\r\n [disabled]=\"((validationErrors$|async)||[]).length>0\"\r\n color=\"primary\">save new input</button>\r\n }\r\n </mat-toolbar>\r\n\r\n\r\n</mat-card>\r\n"],"names":["i1","i2","i3","i4","i5","i6","i7","i8","i9"],"mappings":"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"}