udp-stencil-component-library 1.0.2 → 1.0.3

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 (638) hide show
  1. package/dist/cjs/add-map-feature-popup_4.cjs.entry.js +11 -11
  2. package/dist/cjs/advanced-search_50.cjs.entry.js +109 -41
  3. package/dist/cjs/advanced-search_50.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ag-grid-base_2.cjs.entry.js +2 -2
  5. package/dist/cjs/api-method-grid.cjs.entry.js +1 -1
  6. package/dist/cjs/check-box.cjs.entry.js +2 -2
  7. package/dist/cjs/chip-section.cjs.entry.js +2 -2
  8. package/dist/cjs/client-side-grid.cjs.entry.js +1 -1
  9. package/dist/cjs/color-preview.cjs.entry.js +1 -1
  10. package/dist/cjs/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.cjs.js.map +1 -1
  11. package/dist/cjs/date-time-renderer_5.cjs.entry.js +17 -16
  12. package/dist/cjs/date-time-renderer_5.cjs.entry.js.map +1 -1
  13. package/dist/cjs/enums-CA1UjPVU.js +25 -0
  14. package/dist/cjs/enums-CA1UjPVU.js.map +1 -0
  15. package/dist/cjs/feature-details-card_2.cjs.entry.js +5 -5
  16. package/dist/cjs/file-upload.selectable-list.stencil-field.entry.cjs.js.map +1 -1
  17. package/dist/cjs/file-upload_3.cjs.entry.js +73 -29
  18. package/dist/cjs/file-upload_3.cjs.entry.js.map +1 -1
  19. package/dist/cjs/index-Bu1pSYrV.js +8 -8
  20. package/dist/cjs/inputs-example.cjs.entry.js +2 -2
  21. package/dist/cjs/inputs-example.cjs.entry.js.map +1 -1
  22. package/dist/cjs/inputs-example.entry.cjs.js.map +1 -1
  23. package/dist/cjs/loader.cjs.js +1 -1
  24. package/dist/cjs/map-component_2.cjs.entry.js +2 -2
  25. package/dist/cjs/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.cjs.js.map +1 -1
  26. package/dist/cjs/numeric-field_5.cjs.entry.js +194 -19
  27. package/dist/cjs/numeric-field_5.cjs.entry.js.map +1 -1
  28. package/dist/cjs/page-renderer.cjs.entry.js +1 -1
  29. package/dist/cjs/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.cjs.js.map +1 -1
  30. package/dist/cjs/question-configs-renderer_5.cjs.entry.js +17 -4
  31. package/dist/cjs/question-configs-renderer_5.cjs.entry.js.map +1 -1
  32. package/dist/cjs/resource-timeline-calendar.cjs.entry.js +1 -1
  33. package/dist/cjs/resource-timeline-primary-bar.cjs.entry.js +1 -1
  34. package/dist/cjs/server-side-grid.cjs.entry.js +1 -1
  35. package/dist/cjs/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.cjs.js.map +1 -0
  36. package/dist/cjs/{signature-input_4.cjs.entry.js → signature-input_6.cjs.entry.js} +359 -157
  37. package/dist/cjs/signature-input_6.cjs.entry.js.map +1 -0
  38. package/dist/cjs/stencil-library.cjs.js +1 -1
  39. package/dist/cjs/udp-container-query-grid-item.cjs.entry.js +1 -1
  40. package/dist/cjs/udp-container-query-grid.cjs.entry.js +1 -1
  41. package/dist/cjs/udp-container-query.cjs.entry.js +2 -2
  42. package/dist/cjs/udp-container.cjs.entry.js +2 -2
  43. package/dist/cjs/udp-drive-utils-BOyI3h7K.js +180 -0
  44. package/dist/cjs/udp-drive-utils-BOyI3h7K.js.map +1 -0
  45. package/dist/cjs/udp-forms-builder.cjs.entry.js +133 -152
  46. package/dist/cjs/udp-forms-builder.cjs.entry.js.map +1 -1
  47. package/dist/cjs/udp-forms-builder.entry.cjs.js.map +1 -1
  48. package/dist/cjs/udp-forms-list-card_2.cjs.entry.js +5 -5
  49. package/dist/cjs/udp-forms-list.cjs.entry.js +1 -1
  50. package/dist/cjs/udp-forms-renderer.cjs.entry.js +185 -175
  51. package/dist/cjs/udp-forms-renderer.cjs.entry.js.map +1 -1
  52. package/dist/cjs/udp-forms-renderer.entry.cjs.js.map +1 -1
  53. package/dist/cjs/udp-forms-ui.cjs.entry.js +113 -82
  54. package/dist/cjs/udp-forms-ui.cjs.entry.js.map +1 -1
  55. package/dist/cjs/udp-forms-ui.entry.cjs.js.map +1 -1
  56. package/dist/cjs/udp-map.cjs.entry.js +3 -3
  57. package/dist/cjs/udp-page.cjs.entry.js +1 -1
  58. package/dist/cjs/udp-split-screen.cjs.entry.js +1 -1
  59. package/dist/cjs/udp-stepper-demo.cjs.entry.js +1 -1
  60. package/dist/cjs/udp-vertical-spacer.cjs.entry.js +1 -1
  61. package/dist/cjs/utils-CdiEmuDf.js +34 -0
  62. package/dist/cjs/utils-CdiEmuDf.js.map +1 -0
  63. package/dist/collection/collection-manifest.json +2 -0
  64. package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js +22 -0
  65. package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js.map +1 -1
  66. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.css +269 -0
  67. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js +392 -0
  68. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js.map +1 -0
  69. package/dist/collection/components/my-component/UI/forms/form/stencil-field.js +38 -14
  70. package/dist/collection/components/my-component/UI/forms/form/stencil-field.js.map +1 -1
  71. package/dist/collection/components/my-component/UI/forms/form/stencil-form.js +81 -28
  72. package/dist/collection/components/my-component/UI/forms/form/stencil-form.js.map +1 -1
  73. package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js +1 -0
  74. package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js.map +1 -1
  75. package/dist/collection/components/my-component/UI/forms/udp-forms/types.js.map +1 -1
  76. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer.js +13 -17
  77. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer.js.map +1 -1
  78. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/date-time-renderer.js +4 -3
  79. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/date-time-renderer.js.map +1 -1
  80. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.css +0 -1
  81. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.js +16 -3
  82. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.js.map +1 -1
  83. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/text-input-renderer.js +2 -2
  84. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js +135 -159
  85. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js.map +1 -1
  86. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list-card.js +5 -5
  87. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list.js +1 -1
  88. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js +1 -5
  89. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js.map +1 -1
  90. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js +1 -0
  91. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js.map +1 -1
  92. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js +188 -172
  93. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js.map +1 -1
  94. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.css +175 -0
  95. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js +211 -88
  96. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js.map +1 -1
  97. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.css +166 -0
  98. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.js +215 -0
  99. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.js.map +1 -0
  100. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js +5 -5
  101. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js.map +1 -1
  102. package/dist/collection/components/my-component/UI/grid/ag-table/ag-table.js +1 -1
  103. package/dist/collection/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.js +15 -15
  104. package/dist/collection/components/my-component/UI/grid/grid-primary-bar/grid-primary-bar.js +2 -2
  105. package/dist/collection/components/my-component/UI/grid/hotlists/udp-hotlist-form/udp-hotlist-form.js +1 -1
  106. package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.js +1 -1
  107. package/dist/collection/components/my-component/UI/grid/new-grid/api-method-grid.js +1 -1
  108. package/dist/collection/components/my-component/UI/grid/new-grid/client-side-grid.js +1 -1
  109. package/dist/collection/components/my-component/UI/grid/new-grid/grid-header.js +1 -1
  110. package/dist/collection/components/my-component/UI/grid/new-grid/server-side-grid.js +1 -1
  111. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-calendar.js +1 -1
  112. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +1 -1
  113. package/dist/collection/components/my-component/UI/inputs/checkbox/check-box.js +2 -2
  114. package/dist/collection/components/my-component/UI/inputs/date-selector/udp-date-selector.js +3 -3
  115. package/dist/collection/components/my-component/UI/inputs/date-time-selector/udp-datetime-selector.js +3 -3
  116. package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js +35 -22
  117. package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js.map +1 -1
  118. package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js +202 -10
  119. package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js.map +1 -1
  120. package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js +6 -6
  121. package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js.map +1 -1
  122. package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js +52 -22
  123. package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js.map +1 -1
  124. package/dist/collection/components/my-component/UI/inputs/tally/tally.js +2 -2
  125. package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js +99 -3
  126. package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js.map +1 -1
  127. package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js +99 -3
  128. package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js.map +1 -1
  129. package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js +132 -6
  130. package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js.map +1 -1
  131. package/dist/collection/components/my-component/UI/inputs/toggle/stencil-toggle.js +4 -4
  132. package/dist/collection/components/my-component/UI/inputs/udp-selector/udp-selector.js +4 -4
  133. package/dist/collection/components/my-component/UI/layout/udp-container/udp-container.js +2 -2
  134. package/dist/collection/components/my-component/UI/layout/udp-container-query/udp-container-query.js +2 -2
  135. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid/udp-container-query-grid.js +1 -1
  136. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid-item/udp-container-query-grid-item.js +1 -1
  137. package/dist/collection/components/my-component/UI/layout/udp-page/udp-page.js +1 -1
  138. package/dist/collection/components/my-component/UI/layout/udp-split-screen/udp-split-screen.js +1 -1
  139. package/dist/collection/components/my-component/UI/layout/udp-vertical-spacer.js +1 -1
  140. package/dist/collection/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.js +2 -2
  141. package/dist/collection/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.js +1 -1
  142. package/dist/collection/components/my-component/UI/loaders/udp-skeleton-loading.js +1 -1
  143. package/dist/collection/components/my-component/UI/map/udp-map/map-component.js +1 -1
  144. package/dist/collection/components/my-component/UI/map/udp-map/popups/add-map-feature-popup.js +3 -3
  145. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-card/feature-details-card.js +4 -4
  146. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-popup.js +1 -1
  147. package/dist/collection/components/my-component/UI/map/udp-map/popups/select-layer-popup.js +1 -1
  148. package/dist/collection/components/my-component/UI/map/udp-map/popups/split-line-popup.js +1 -1
  149. package/dist/collection/components/my-component/UI/map/udp-map/toolbar/map-toolbar.js +6 -6
  150. package/dist/collection/components/my-component/UI/map/udp-map/udp-map-toolbar.js +1 -1
  151. package/dist/collection/components/my-component/UI/map/udp-map/udp-map.js +3 -3
  152. package/dist/collection/components/my-component/UI/menu/menu-item/udp-menu-item.js +2 -2
  153. package/dist/collection/components/my-component/UI/stepper/udp-stepper-demo.js +1 -1
  154. package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.js +1 -1
  155. package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.js +1 -1
  156. package/dist/collection/components/my-component/UI/toolbars/app-bar/app-bar.js +1 -1
  157. package/dist/collection/components/my-component/demo/ambient-demo-container.js +1 -1
  158. package/dist/collection/components/test-component/inputs-example/inputs-example.js +2 -2
  159. package/dist/collection/components/test-component/inputs-example/inputs-example.js.map +1 -1
  160. package/dist/collection/page-renderer/page-renderer.js +1 -1
  161. package/dist/collection/theme/color-preview/color-preview.js +1 -1
  162. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/chip-section/chip-section.js +2 -2
  163. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.js +1 -1
  164. package/dist/components/add-map-feature-popup.js +1 -1
  165. package/dist/components/advanced-search-grouped.js +1 -1
  166. package/dist/components/advanced-search.js +1 -1
  167. package/dist/components/ag-grid-base.js +1 -1
  168. package/dist/components/ag-table.js +1 -1
  169. package/dist/components/ambient-demo-container.js +1 -1
  170. package/dist/components/ambient-template-grid.js +1 -1
  171. package/dist/components/api-method-grid.js +4 -4
  172. package/dist/components/app-bar.js +1 -1
  173. package/dist/components/chart-container.js +1 -1
  174. package/dist/components/check-box-group.js +1 -1
  175. package/dist/components/check-box.js +1 -1
  176. package/dist/components/chip-section.js +3 -3
  177. package/dist/components/client-side-grid.js +3 -3
  178. package/dist/components/color-preview.js +1 -1
  179. package/dist/components/date-time-renderer.js +1 -1
  180. package/dist/components/edit-view-form-dialog.js +1 -1
  181. package/dist/components/feature-details-card.js +1 -1
  182. package/dist/components/feature-details-popup.js +1 -1
  183. package/dist/components/file-upload-renderer.js +1 -1
  184. package/dist/components/file-upload.js +1 -1
  185. package/dist/components/grid-header.js +1 -1
  186. package/dist/components/grid-primary-bar.js +1 -1
  187. package/dist/components/inputs-example.js +15 -15
  188. package/dist/components/inputs-example.js.map +1 -1
  189. package/dist/components/list-options-renderer.js +1 -1
  190. package/dist/components/map-component.js +1 -1
  191. package/dist/components/map-toolbar.js +1 -1
  192. package/dist/components/my-component.js +26 -26
  193. package/dist/components/numeric-field.js +1 -1
  194. package/dist/components/{p-CfZR5rek.js → p-0F2I6Qvn.js} +3 -3
  195. package/dist/components/{p-CfZR5rek.js.map → p-0F2I6Qvn.js.map} +1 -1
  196. package/dist/components/{p-BbC2Itep.js → p-1CPON0Xx.js} +5 -5
  197. package/dist/components/{p-BbC2Itep.js.map → p-1CPON0Xx.js.map} +1 -1
  198. package/dist/components/{p-IlXn87Ki.js → p-1Cv4cku0.js} +4 -14
  199. package/dist/components/p-1Cv4cku0.js.map +1 -0
  200. package/dist/components/{p-CTn3c76I.js → p-1uly65Sv.js} +3 -3
  201. package/dist/components/{p-CTn3c76I.js.map → p-1uly65Sv.js.map} +1 -1
  202. package/dist/components/{p-C8cWVxBF.js → p-26jyxB7s.js} +66 -27
  203. package/dist/components/p-26jyxB7s.js.map +1 -0
  204. package/dist/components/{p-GQEOUb0c.js → p-4hWvEEZf.js} +5 -5
  205. package/dist/components/{p-GQEOUb0c.js.map → p-4hWvEEZf.js.map} +1 -1
  206. package/dist/components/{p-HrsHnWeG.js → p-6EzLtNtq.js} +6 -6
  207. package/dist/components/{p-HrsHnWeG.js.map → p-6EzLtNtq.js.map} +1 -1
  208. package/dist/components/{p-syf9yo9-.js → p-8avkq8Fj.js} +4 -4
  209. package/dist/components/{p-syf9yo9-.js.map → p-8avkq8Fj.js.map} +1 -1
  210. package/dist/components/{p-B8k9GGZB.js → p-8paOuPay.js} +4 -4
  211. package/dist/components/{p-B8k9GGZB.js.map → p-8paOuPay.js.map} +1 -1
  212. package/dist/components/{p-DntePo7I.js → p-B2mj8zmp.js} +3 -3
  213. package/dist/components/{p-DntePo7I.js.map → p-B2mj8zmp.js.map} +1 -1
  214. package/dist/components/{p-Bv1MGbhE.js → p-B3gbGwCE.js} +50 -83
  215. package/dist/components/p-B3gbGwCE.js.map +1 -0
  216. package/dist/components/{p-ves_LtSN.js → p-B6A-djr0.js} +4 -4
  217. package/dist/components/{p-ves_LtSN.js.map → p-B6A-djr0.js.map} +1 -1
  218. package/dist/components/{p-D0T6NTw2.js → p-BANMRVyZ.js} +3 -3
  219. package/dist/components/{p-D0T6NTw2.js.map → p-BANMRVyZ.js.map} +1 -1
  220. package/dist/components/{p-D-JeGky8.js → p-BB2sALAW.js} +3 -3
  221. package/dist/components/{p-D-JeGky8.js.map → p-BB2sALAW.js.map} +1 -1
  222. package/dist/components/{p-DehJN46u.js → p-BLWvjl_b.js} +6 -6
  223. package/dist/components/{p-DehJN46u.js.map → p-BLWvjl_b.js.map} +1 -1
  224. package/dist/components/{p-y6ddPVSK.js → p-BO3Kzy6x.js} +6 -6
  225. package/dist/components/{p-y6ddPVSK.js.map → p-BO3Kzy6x.js.map} +1 -1
  226. package/dist/components/p-BY5RQ-T1.js +16 -0
  227. package/dist/components/p-BY5RQ-T1.js.map +1 -0
  228. package/dist/components/{p-ClToknIK.js → p-BbOHuqrJ.js} +5 -5
  229. package/dist/components/{p-ClToknIK.js.map → p-BbOHuqrJ.js.map} +1 -1
  230. package/dist/components/{p-CJsnV8uM.js → p-BfT3KUJC.js} +4 -4
  231. package/dist/components/{p-CJsnV8uM.js.map → p-BfT3KUJC.js.map} +1 -1
  232. package/dist/components/{p-BdWgc1UD.js → p-Bi8lqIP-.js} +8 -7
  233. package/dist/components/p-Bi8lqIP-.js.map +1 -0
  234. package/dist/components/{p-DNxY-i6k.js → p-BpD1NQKC.js} +5 -5
  235. package/dist/components/{p-DNxY-i6k.js.map → p-BpD1NQKC.js.map} +1 -1
  236. package/dist/components/p-BtOBW9_N.js +142 -0
  237. package/dist/components/p-BtOBW9_N.js.map +1 -0
  238. package/dist/components/{p-Akx0UDMW.js → p-BwPAbBUr.js} +4 -4
  239. package/dist/components/{p-Akx0UDMW.js.map → p-BwPAbBUr.js.map} +1 -1
  240. package/dist/components/p-BzH4NpB-.js +301 -0
  241. package/dist/components/p-BzH4NpB-.js.map +1 -0
  242. package/dist/components/{p-CSunqYw8.js → p-C-E6e6mL.js} +17 -17
  243. package/dist/components/{p-CSunqYw8.js.map → p-C-E6e6mL.js.map} +1 -1
  244. package/dist/components/{p-DWJbhjYR.js → p-C1K2NBql.js} +5 -5
  245. package/dist/components/{p-DWJbhjYR.js.map → p-C1K2NBql.js.map} +1 -1
  246. package/dist/components/{p-CNC3rtXm.js → p-C2j9tPIU.js} +4 -4
  247. package/dist/components/{p-CNC3rtXm.js.map → p-C2j9tPIU.js.map} +1 -1
  248. package/dist/components/p-C5aOw4Ij.js +168 -0
  249. package/dist/components/p-C5aOw4Ij.js.map +1 -0
  250. package/dist/components/{p-CJINZgmD.js → p-C6bm8Rs4.js} +17 -17
  251. package/dist/components/{p-CJINZgmD.js.map → p-C6bm8Rs4.js.map} +1 -1
  252. package/dist/components/{p-PqypuW_Q.js → p-CL4gkS6u.js} +22 -84
  253. package/dist/components/p-CL4gkS6u.js.map +1 -0
  254. package/dist/components/{p-DeS7YSzc.js → p-CMTLAuz8.js} +3 -3
  255. package/dist/components/{p-DeS7YSzc.js.map → p-CMTLAuz8.js.map} +1 -1
  256. package/dist/components/p-CWAWWTnd.js +47 -0
  257. package/dist/components/p-CWAWWTnd.js.map +1 -0
  258. package/dist/components/{p-B3-pcvgV.js → p-Cdz5sX_v.js} +38 -25
  259. package/dist/components/p-Cdz5sX_v.js.map +1 -0
  260. package/dist/components/{p-byKLubNE.js → p-Coa3kO6W.js} +3 -3
  261. package/dist/components/{p-byKLubNE.js.map → p-Coa3kO6W.js.map} +1 -1
  262. package/dist/components/{p-DzaN4l_Y.js → p-Cp1kbBGM.js} +5 -5
  263. package/dist/components/{p-DzaN4l_Y.js.map → p-Cp1kbBGM.js.map} +1 -1
  264. package/dist/components/{p-BYsLvu6g.js → p-CpMdhv3j.js} +69 -5
  265. package/dist/components/p-CpMdhv3j.js.map +1 -0
  266. package/dist/components/{p-BWI0GtPn.js → p-CpQin4NC.js} +7 -7
  267. package/dist/components/{p-BWI0GtPn.js.map → p-CpQin4NC.js.map} +1 -1
  268. package/dist/components/{p-DIPIddaO.js → p-CqiZ9SAU.js} +3 -3
  269. package/dist/components/{p-DIPIddaO.js.map → p-CqiZ9SAU.js.map} +1 -1
  270. package/dist/components/{p-DxJCXXmE.js → p-Cr_ifuX-.js} +27 -26
  271. package/dist/components/p-Cr_ifuX-.js.map +1 -0
  272. package/dist/components/{p-bLKTEsIH.js → p-CsMmUkoQ.js} +8 -8
  273. package/dist/components/{p-bLKTEsIH.js.map → p-CsMmUkoQ.js.map} +1 -1
  274. package/dist/components/{p-Cf-3pInV.js → p-Ct7EvUCI.js} +3 -3
  275. package/dist/components/{p-Cf-3pInV.js.map → p-Ct7EvUCI.js.map} +1 -1
  276. package/dist/components/{p-BbHv2Hzb.js → p-CvQ8X76F.js} +8 -8
  277. package/dist/components/{p-BbHv2Hzb.js.map → p-CvQ8X76F.js.map} +1 -1
  278. package/dist/components/{p-BEwTqpWE.js → p-CxOYMG-r.js} +4 -4
  279. package/dist/components/{p-BEwTqpWE.js.map → p-CxOYMG-r.js.map} +1 -1
  280. package/dist/components/{p-DOKGpXin.js → p-Cyigv-iT.js} +27 -8
  281. package/dist/components/p-Cyigv-iT.js.map +1 -0
  282. package/dist/components/{p-hRee3qYx.js → p-D6Wo7quX.js} +7 -2
  283. package/dist/components/p-D6Wo7quX.js.map +1 -0
  284. package/dist/components/{p-BUw3R0Ql.js → p-D9A5l8BE.js} +7 -7
  285. package/dist/components/{p-BUw3R0Ql.js.map → p-D9A5l8BE.js.map} +1 -1
  286. package/dist/components/{p-CDnOrzs3.js → p-DBtdo56U.js} +4 -4
  287. package/dist/components/{p-CDnOrzs3.js.map → p-DBtdo56U.js.map} +1 -1
  288. package/dist/components/{p-BIc3R4fE.js → p-DFKz-3Nr.js} +5 -5
  289. package/dist/components/{p-BIc3R4fE.js.map → p-DFKz-3Nr.js.map} +1 -1
  290. package/dist/components/{p-BJerffMg.js → p-DL9uHt-7.js} +5 -5
  291. package/dist/components/{p-BJerffMg.js.map → p-DL9uHt-7.js.map} +1 -1
  292. package/dist/components/{p-DIcPqQkn.js → p-DSIcWNUB.js} +5 -4
  293. package/dist/components/p-DSIcWNUB.js.map +1 -0
  294. package/dist/components/{p-CRiQA7Cy.js → p-DZaCCOXB.js} +69 -5
  295. package/dist/components/p-DZaCCOXB.js.map +1 -0
  296. package/dist/components/{p-BwHEv1Kb.js → p-DaMmzX_J.js} +13 -13
  297. package/dist/components/{p-BwHEv1Kb.js.map → p-DaMmzX_J.js.map} +1 -1
  298. package/dist/components/{p-CY0PAhIT.js → p-Dmmz74K2.js} +4 -4
  299. package/dist/components/{p-CY0PAhIT.js.map → p-Dmmz74K2.js.map} +1 -1
  300. package/dist/components/{p-DMcaGgHq.js → p-DnMRLbBX.js} +5 -5
  301. package/dist/components/{p-DMcaGgHq.js.map → p-DnMRLbBX.js.map} +1 -1
  302. package/dist/components/{p-ChdtzL8Z.js → p-Dpvhge5H.js} +10 -9
  303. package/dist/components/p-Dpvhge5H.js.map +1 -0
  304. package/dist/components/p-DtiAfg0X.js +25 -0
  305. package/dist/components/p-DtiAfg0X.js.map +1 -0
  306. package/dist/components/{p-XoXMxeuq.js → p-Dwnxv7WO.js} +3 -3
  307. package/dist/components/{p-XoXMxeuq.js.map → p-Dwnxv7WO.js.map} +1 -1
  308. package/dist/components/{p-BvSuY3tY.js → p-Dx5ehH3t.js} +7 -7
  309. package/dist/components/{p-BvSuY3tY.js.map → p-Dx5ehH3t.js.map} +1 -1
  310. package/dist/components/{p-DueJnVH4.js → p-DyC6jVV8.js} +10 -9
  311. package/dist/components/p-DyC6jVV8.js.map +1 -0
  312. package/dist/components/{p-Bdt-oOnd.js → p-Oil5iqFm.js} +120 -8
  313. package/dist/components/p-Oil5iqFm.js.map +1 -0
  314. package/dist/components/{p-C6aDnKNm.js → p-P3YTnOWe.js} +5 -5
  315. package/dist/components/{p-C6aDnKNm.js.map → p-P3YTnOWe.js.map} +1 -1
  316. package/dist/components/{p-CLvAjrtw.js → p-Qxi-zxd0.js} +8 -8
  317. package/dist/components/{p-CLvAjrtw.js.map → p-Qxi-zxd0.js.map} +1 -1
  318. package/dist/components/{p-DRO3I7Mm.js → p-Qxw1cxga.js} +8 -8
  319. package/dist/components/{p-DRO3I7Mm.js.map → p-Qxw1cxga.js.map} +1 -1
  320. package/dist/components/{p-DLWUrvpt.js → p-Tu9UB-v3.js} +5 -5
  321. package/dist/components/{p-DLWUrvpt.js.map → p-Tu9UB-v3.js.map} +1 -1
  322. package/dist/components/{p-DQIj9UI7.js → p-Ut5zP7nE.js} +5 -5
  323. package/dist/components/{p-DQIj9UI7.js.map → p-Ut5zP7nE.js.map} +1 -1
  324. package/dist/components/{p-Thx6k3Xp.js → p-WLd9SWLl.js} +4 -4
  325. package/dist/components/{p-Thx6k3Xp.js.map → p-WLd9SWLl.js.map} +1 -1
  326. package/dist/components/{p-BTIWOttf.js → p-W_kxEzVl.js} +6 -6
  327. package/dist/components/{p-BTIWOttf.js.map → p-W_kxEzVl.js.map} +1 -1
  328. package/dist/components/{p-BOW03S7b.js → p-XP8tp0pm.js} +5 -5
  329. package/dist/components/{p-BOW03S7b.js.map → p-XP8tp0pm.js.map} +1 -1
  330. package/dist/components/{p-w2FTnlQG.js → p-_HuUfybA.js} +3 -3
  331. package/dist/components/{p-w2FTnlQG.js.map → p-_HuUfybA.js.map} +1 -1
  332. package/dist/components/{p-BU706xtx.js → p-hWgAmNsF.js} +3 -3
  333. package/dist/components/{p-BU706xtx.js.map → p-hWgAmNsF.js.map} +1 -1
  334. package/dist/components/{p-Bykep8mm.js → p-ibwbE8nI.js} +4 -4
  335. package/dist/components/{p-Bykep8mm.js.map → p-ibwbE8nI.js.map} +1 -1
  336. package/dist/components/{p-CA-v1fbV.js → p-ill5r6eV.js} +40 -9
  337. package/dist/components/p-ill5r6eV.js.map +1 -0
  338. package/dist/components/{p-DqYsDDHy.js → p-jdqTpLxN.js} +4 -4
  339. package/dist/components/{p-DqYsDDHy.js.map → p-jdqTpLxN.js.map} +1 -1
  340. package/dist/components/{p-ByM88ZWk.js → p-jpt3zFdi.js} +3 -3
  341. package/dist/components/{p-ByM88ZWk.js.map → p-jpt3zFdi.js.map} +1 -1
  342. package/dist/components/{p-BEtm34A3.js → p-ncemY4Wx.js} +37 -36
  343. package/dist/components/p-ncemY4Wx.js.map +1 -0
  344. package/dist/components/{p-DqPGCQm2.js → p-s8qXxEgi.js} +3 -3
  345. package/dist/components/{p-DqPGCQm2.js.map → p-s8qXxEgi.js.map} +1 -1
  346. package/dist/components/p-vrP9HZiW.js +156 -0
  347. package/dist/components/p-vrP9HZiW.js.map +1 -0
  348. package/dist/components/{p-D32jPxWa.js → p-ycrk0Lr4.js} +5 -5
  349. package/dist/components/{p-D32jPxWa.js.map → p-ycrk0Lr4.js.map} +1 -1
  350. package/dist/components/page-renderer.js +21 -21
  351. package/dist/components/primary-action-header.js +1 -1
  352. package/dist/components/question-configs-renderer.js +1 -1
  353. package/dist/components/question-specific-configs-renderer.js +1 -1
  354. package/dist/components/resource-timeline-calendar.js +5 -5
  355. package/dist/components/resource-timeline-primary-bar.js +1 -1
  356. package/dist/components/save-view-form-dialog.js +1 -1
  357. package/dist/components/search-list-item.js +1 -1
  358. package/dist/components/section-configs-renderer.js +1 -1
  359. package/dist/components/select-layer-popup.js +1 -1
  360. package/dist/components/server-side-grid.js +1 -1
  361. package/dist/components/side-sheet.js +1 -1
  362. package/dist/components/signature-input.js +1 -1
  363. package/dist/components/split-line-popup.js +1 -1
  364. package/dist/components/stencil-field.js +1 -1
  365. package/dist/components/stencil-form.js +1 -1
  366. package/dist/components/stencil-icon-button.js +1 -1
  367. package/dist/components/stencil-toggle.js +1 -1
  368. package/dist/components/tally-display.js +1 -1
  369. package/dist/components/text-area.js +1 -1
  370. package/dist/components/text-field.js +1 -1
  371. package/dist/components/text-input-renderer.js +1 -1
  372. package/dist/components/udp-ambient-card.js +1 -1
  373. package/dist/components/udp-avatar.js +1 -1
  374. package/dist/components/udp-bar-chart.js +1 -1
  375. package/dist/components/udp-charts-example.js +7 -7
  376. package/dist/components/udp-container-query-grid-item.js +1 -1
  377. package/dist/components/udp-container-query-grid.js +2 -2
  378. package/dist/components/udp-container-query.js +1 -1
  379. package/dist/components/udp-container.js +1 -1
  380. package/dist/components/udp-date-selector.js +1 -1
  381. package/dist/components/udp-datetime-selector.js +1 -1
  382. package/dist/components/udp-distribution-chart.js +1 -1
  383. package/dist/components/udp-donut-chart.js +1 -1
  384. package/dist/components/udp-dynamic-container-with-menu.js +1 -1
  385. package/dist/components/udp-dynamic-form.js +4 -4
  386. package/dist/components/udp-forms-builder-menu.js +1 -1
  387. package/dist/components/udp-forms-builder-question-item.js +1 -1
  388. package/dist/components/udp-forms-builder-style-override.js +1 -1
  389. package/dist/components/udp-forms-builder.js +162 -183
  390. package/dist/components/udp-forms-builder.js.map +1 -1
  391. package/dist/components/udp-forms-list-card.js +1 -1
  392. package/dist/components/udp-forms-list.js +10 -10
  393. package/dist/components/udp-forms-renderer.js +244 -219
  394. package/dist/components/udp-forms-renderer.js.map +1 -1
  395. package/dist/components/udp-forms-ui.js +1 -1
  396. package/dist/components/udp-grid-loader.js +1 -1
  397. package/dist/components/udp-hotlist-form.js +1 -1
  398. package/dist/components/udp-icon-button.d.ts +11 -0
  399. package/dist/components/udp-icon-button.js +9 -0
  400. package/dist/components/udp-icon-button.js.map +1 -0
  401. package/dist/components/udp-icon.js +1 -1
  402. package/dist/components/udp-line-chart.js +1 -1
  403. package/dist/components/udp-linear-loader.js +1 -1
  404. package/dist/components/udp-list-item.js +2 -2
  405. package/dist/components/udp-map-toolbar.js +1 -1
  406. package/dist/components/udp-map.js +17 -17
  407. package/dist/components/udp-menu-item.js +1 -1
  408. package/dist/components/udp-page.js +1 -1
  409. package/dist/components/udp-question.js +1 -1
  410. package/dist/components/udp-save-draft-button.d.ts +11 -0
  411. package/dist/components/udp-save-draft-button.js +9 -0
  412. package/dist/components/udp-save-draft-button.js.map +1 -0
  413. package/dist/components/udp-selector.js +1 -1
  414. package/dist/components/udp-side-sheet.js +1 -1
  415. package/dist/components/udp-skeleton-loading.js +1 -1
  416. package/dist/components/udp-split-screen.js +1 -1
  417. package/dist/components/udp-stepper-demo.js +1 -1
  418. package/dist/components/udp-tab.js +1 -1
  419. package/dist/components/udp-tabs.js +1 -1
  420. package/dist/components/udp-time-selector.js +1 -1
  421. package/dist/components/udp-vertical-spacer.js +1 -1
  422. package/dist/esm/add-map-feature-popup_4.entry.js +11 -11
  423. package/dist/esm/advanced-search_50.entry.js +109 -41
  424. package/dist/esm/advanced-search_50.entry.js.map +1 -1
  425. package/dist/esm/ag-grid-base_2.entry.js +2 -2
  426. package/dist/esm/api-method-grid.entry.js +1 -1
  427. package/dist/esm/check-box.entry.js +2 -2
  428. package/dist/esm/chip-section.entry.js +2 -2
  429. package/dist/esm/client-side-grid.entry.js +1 -1
  430. package/dist/esm/color-preview.entry.js +1 -1
  431. package/dist/esm/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.js.map +1 -1
  432. package/dist/esm/date-time-renderer_5.entry.js +17 -16
  433. package/dist/esm/date-time-renderer_5.entry.js.map +1 -1
  434. package/dist/esm/enums-DtiAfg0X.js +25 -0
  435. package/dist/esm/enums-DtiAfg0X.js.map +1 -0
  436. package/dist/esm/feature-details-card_2.entry.js +5 -5
  437. package/dist/esm/file-upload.selectable-list.stencil-field.entry.js.map +1 -1
  438. package/dist/esm/file-upload_3.entry.js +73 -29
  439. package/dist/esm/file-upload_3.entry.js.map +1 -1
  440. package/dist/esm/index-CaIWDYyq.js +8 -8
  441. package/dist/esm/inputs-example.entry.js +2 -2
  442. package/dist/esm/inputs-example.entry.js.map +1 -1
  443. package/dist/esm/loader.js +1 -1
  444. package/dist/esm/map-component_2.entry.js +2 -2
  445. package/dist/esm/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.js.map +1 -1
  446. package/dist/esm/numeric-field_5.entry.js +195 -20
  447. package/dist/esm/numeric-field_5.entry.js.map +1 -1
  448. package/dist/esm/page-renderer.entry.js +1 -1
  449. package/dist/esm/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.js.map +1 -1
  450. package/dist/esm/question-configs-renderer_5.entry.js +17 -4
  451. package/dist/esm/question-configs-renderer_5.entry.js.map +1 -1
  452. package/dist/esm/resource-timeline-calendar.entry.js +1 -1
  453. package/dist/esm/resource-timeline-primary-bar.entry.js +1 -1
  454. package/dist/esm/server-side-grid.entry.js +1 -1
  455. package/dist/esm/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.js.map +1 -0
  456. package/dist/esm/{signature-input_4.entry.js → signature-input_6.entry.js} +315 -115
  457. package/dist/esm/signature-input_6.entry.js.map +1 -0
  458. package/dist/esm/stencil-library.js +1 -1
  459. package/dist/esm/udp-container-query-grid-item.entry.js +1 -1
  460. package/dist/esm/udp-container-query-grid.entry.js +1 -1
  461. package/dist/esm/udp-container-query.entry.js +2 -2
  462. package/dist/esm/udp-container.entry.js +2 -2
  463. package/dist/esm/udp-drive-utils-Cm3Sms8t.js +168 -0
  464. package/dist/esm/udp-drive-utils-Cm3Sms8t.js.map +1 -0
  465. package/dist/esm/udp-forms-builder.entry.js +133 -152
  466. package/dist/esm/udp-forms-builder.entry.js.map +1 -1
  467. package/dist/esm/udp-forms-list-card_2.entry.js +5 -5
  468. package/dist/esm/udp-forms-list.entry.js +1 -1
  469. package/dist/esm/udp-forms-renderer.entry.js +186 -176
  470. package/dist/esm/udp-forms-renderer.entry.js.map +1 -1
  471. package/dist/esm/udp-forms-ui.entry.js +113 -82
  472. package/dist/esm/udp-forms-ui.entry.js.map +1 -1
  473. package/dist/esm/udp-map.entry.js +3 -3
  474. package/dist/esm/udp-page.entry.js +1 -1
  475. package/dist/esm/udp-split-screen.entry.js +1 -1
  476. package/dist/esm/udp-stepper-demo.entry.js +1 -1
  477. package/dist/esm/udp-vertical-spacer.entry.js +1 -1
  478. package/dist/esm/utils-DZv4MqyU.js +31 -0
  479. package/dist/esm/utils-DZv4MqyU.js.map +1 -0
  480. package/dist/stencil-library/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.esm.js.map +1 -1
  481. package/dist/stencil-library/file-upload.selectable-list.stencil-field.entry.esm.js.map +1 -1
  482. package/dist/stencil-library/inputs-example.entry.esm.js.map +1 -1
  483. package/dist/stencil-library/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.esm.js.map +1 -1
  484. package/dist/stencil-library/p-09319660.entry.js +2 -0
  485. package/dist/stencil-library/p-09319660.entry.js.map +1 -0
  486. package/dist/stencil-library/p-146bc917.entry.js +2 -0
  487. package/dist/stencil-library/{p-b3b6310e.entry.js → p-147c4595.entry.js} +2 -2
  488. package/dist/stencil-library/{p-06ca29e0.entry.js → p-1b001f78.entry.js} +2 -2
  489. package/dist/stencil-library/{p-762591f6.entry.js → p-2635a6cc.entry.js} +2 -2
  490. package/dist/stencil-library/p-2f2fd111.entry.js +2 -0
  491. package/dist/stencil-library/{p-368be454.entry.js → p-2fc495ce.entry.js} +2 -2
  492. package/dist/stencil-library/{p-fdfa7087.entry.js → p-476c08df.entry.js} +2 -2
  493. package/dist/stencil-library/{p-ee1610d3.entry.js → p-4ab893a0.entry.js} +2 -2
  494. package/dist/stencil-library/p-4dac2b6d.entry.js +2 -0
  495. package/dist/stencil-library/p-4dac2b6d.entry.js.map +1 -0
  496. package/dist/stencil-library/p-556a182f.entry.js +2 -0
  497. package/dist/stencil-library/p-556a182f.entry.js.map +1 -0
  498. package/dist/stencil-library/p-5ac16f81.entry.js +2 -0
  499. package/dist/stencil-library/p-5ac16f81.entry.js.map +1 -0
  500. package/dist/stencil-library/p-609236fc.entry.js +2 -0
  501. package/dist/stencil-library/p-609236fc.entry.js.map +1 -0
  502. package/dist/stencil-library/{p-9b0b311b.entry.js → p-64330dbb.entry.js} +2 -2
  503. package/dist/stencil-library/p-65a5cce3.entry.js +2 -0
  504. package/dist/stencil-library/{p-5a946191.entry.js → p-70d8a0d8.entry.js} +2 -2
  505. package/dist/stencil-library/{p-79065768.entry.js → p-8119eb18.entry.js} +2 -2
  506. package/dist/stencil-library/{p-2f99476a.entry.js → p-86cd0134.entry.js} +2 -2
  507. package/dist/stencil-library/p-89aa56f1.entry.js +2 -0
  508. package/dist/stencil-library/p-89aa56f1.entry.js.map +1 -0
  509. package/dist/stencil-library/{p-767b7be7.entry.js → p-8a0b6bd4.entry.js} +2 -2
  510. package/dist/stencil-library/{p-40127f9f.entry.js → p-90fbca0f.entry.js} +2 -2
  511. package/dist/stencil-library/p-C5aOw4Ij.js +2 -0
  512. package/dist/stencil-library/p-C5aOw4Ij.js.map +1 -0
  513. package/dist/stencil-library/p-DZv4MqyU.js +2 -0
  514. package/dist/stencil-library/p-DZv4MqyU.js.map +1 -0
  515. package/dist/stencil-library/p-DtiAfg0X.js +2 -0
  516. package/dist/stencil-library/p-DtiAfg0X.js.map +1 -0
  517. package/dist/stencil-library/{p-f4f4ba61.entry.js → p-a98b033e.entry.js} +2 -2
  518. package/dist/stencil-library/p-a98b033e.entry.js.map +1 -0
  519. package/dist/stencil-library/{p-2a11c543.entry.js → p-ae167d4b.entry.js} +2 -2
  520. package/dist/stencil-library/{p-55459135.entry.js → p-b53e1b9a.entry.js} +2 -2
  521. package/dist/stencil-library/p-c1966f2c.entry.js +2 -0
  522. package/dist/stencil-library/p-c1966f2c.entry.js.map +1 -0
  523. package/dist/stencil-library/{p-0de6045a.entry.js → p-c9046d64.entry.js} +2 -2
  524. package/dist/stencil-library/{p-c1809ef3.entry.js → p-ca53be83.entry.js} +2 -2
  525. package/dist/stencil-library/p-d46dd16c.entry.js +2 -0
  526. package/dist/stencil-library/{p-09186dea.entry.js → p-d48b5599.entry.js} +2 -2
  527. package/dist/stencil-library/p-d4f31146.entry.js +2 -0
  528. package/dist/stencil-library/p-d4f31146.entry.js.map +1 -0
  529. package/dist/stencil-library/{p-b0b70c0b.entry.js → p-e7e8a8a3.entry.js} +2 -2
  530. package/dist/stencil-library/p-ea6e9a24.entry.js +2 -0
  531. package/dist/stencil-library/p-ea6e9a24.entry.js.map +1 -0
  532. package/dist/stencil-library/{p-79587009.entry.js → p-f4b5879d.entry.js} +2 -2
  533. package/dist/stencil-library/p-fbfbbcf1.entry.js +2 -0
  534. package/dist/stencil-library/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.esm.js.map +1 -1
  535. package/dist/stencil-library/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.esm.js.map +1 -0
  536. package/dist/stencil-library/stencil-library.esm.js +1 -1
  537. package/dist/stencil-library/udp-forms-builder.entry.esm.js.map +1 -1
  538. package/dist/stencil-library/udp-forms-renderer.entry.esm.js.map +1 -1
  539. package/dist/stencil-library/udp-forms-ui.entry.esm.js.map +1 -1
  540. package/dist/types/components/my-component/UI/buttons/icon-button/stencil-icon-button.d.ts +14 -0
  541. package/dist/types/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.d.ts +91 -0
  542. package/dist/types/components/my-component/UI/forms/form/stencil-field.d.ts +2 -1
  543. package/dist/types/components/my-component/UI/forms/form/stencil-form.d.ts +7 -5
  544. package/dist/types/components/my-component/UI/forms/udp-forms/types.d.ts +16 -0
  545. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.d.ts +1 -0
  546. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.d.ts +16 -19
  547. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.d.ts +14 -26
  548. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.d.ts +21 -7
  549. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.d.ts +20 -0
  550. package/dist/types/components/my-component/UI/inputs/file-upload/file-upload.d.ts +1 -1
  551. package/dist/types/components/my-component/UI/inputs/file-upload/udp-drive-utils.d.ts +68 -1
  552. package/dist/types/components/my-component/UI/inputs/numeric-field/numeric-field.d.ts +1 -1
  553. package/dist/types/components/my-component/UI/inputs/signature-input/signature-input.d.ts +1 -1
  554. package/dist/types/components/my-component/UI/inputs/text-area/text-area.d.ts +21 -0
  555. package/dist/types/components/my-component/UI/inputs/text-field/text-field.d.ts +21 -0
  556. package/dist/types/components/my-component/UI/inputs/time-selector/udp-time-selector.d.ts +33 -1
  557. package/dist/types/components.d.ts +384 -14
  558. package/package.json +1 -1
  559. package/dist/cjs/signature-input.stencil-form.tally-display.udp-question.entry.cjs.js.map +0 -1
  560. package/dist/cjs/signature-input_4.cjs.entry.js.map +0 -1
  561. package/dist/cjs/utils-DMhqs00g.js +0 -55
  562. package/dist/cjs/utils-DMhqs00g.js.map +0 -1
  563. package/dist/collection/components/my-component/UI/forms/form/stencil-field.css +0 -70
  564. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.css +0 -89
  565. package/dist/components/p-B3-pcvgV.js.map +0 -1
  566. package/dist/components/p-BEtm34A3.js.map +0 -1
  567. package/dist/components/p-BYsLvu6g.js.map +0 -1
  568. package/dist/components/p-BdWgc1UD.js.map +0 -1
  569. package/dist/components/p-Bdt-oOnd.js.map +0 -1
  570. package/dist/components/p-Bv1MGbhE.js.map +0 -1
  571. package/dist/components/p-C8cWVxBF.js.map +0 -1
  572. package/dist/components/p-C9cEH65u.js +0 -307
  573. package/dist/components/p-C9cEH65u.js.map +0 -1
  574. package/dist/components/p-CA-v1fbV.js.map +0 -1
  575. package/dist/components/p-CRiQA7Cy.js.map +0 -1
  576. package/dist/components/p-ChdtzL8Z.js.map +0 -1
  577. package/dist/components/p-DIcPqQkn.js.map +0 -1
  578. package/dist/components/p-DOKGpXin.js.map +0 -1
  579. package/dist/components/p-DueJnVH4.js.map +0 -1
  580. package/dist/components/p-DxJCXXmE.js.map +0 -1
  581. package/dist/components/p-IlXn87Ki.js.map +0 -1
  582. package/dist/components/p-PqypuW_Q.js.map +0 -1
  583. package/dist/components/p-hRee3qYx.js.map +0 -1
  584. package/dist/esm/signature-input.stencil-form.tally-display.udp-question.entry.js.map +0 -1
  585. package/dist/esm/signature-input_4.entry.js.map +0 -1
  586. package/dist/esm/utils-vXSpJxEK.js +0 -52
  587. package/dist/esm/utils-vXSpJxEK.js.map +0 -1
  588. package/dist/stencil-library/p-00c1ce44.entry.js +0 -2
  589. package/dist/stencil-library/p-00c1ce44.entry.js.map +0 -1
  590. package/dist/stencil-library/p-250a8400.entry.js +0 -2
  591. package/dist/stencil-library/p-2fda98ee.entry.js +0 -2
  592. package/dist/stencil-library/p-2fda98ee.entry.js.map +0 -1
  593. package/dist/stencil-library/p-50f67815.entry.js +0 -2
  594. package/dist/stencil-library/p-50f67815.entry.js.map +0 -1
  595. package/dist/stencil-library/p-584552e6.entry.js +0 -2
  596. package/dist/stencil-library/p-5e96c57a.entry.js +0 -2
  597. package/dist/stencil-library/p-5e96c57a.entry.js.map +0 -1
  598. package/dist/stencil-library/p-6a1febc9.entry.js +0 -2
  599. package/dist/stencil-library/p-6ed5258c.entry.js +0 -2
  600. package/dist/stencil-library/p-6ed5258c.entry.js.map +0 -1
  601. package/dist/stencil-library/p-77739d4b.entry.js +0 -2
  602. package/dist/stencil-library/p-77739d4b.entry.js.map +0 -1
  603. package/dist/stencil-library/p-7a2202b9.entry.js +0 -2
  604. package/dist/stencil-library/p-7a2202b9.entry.js.map +0 -1
  605. package/dist/stencil-library/p-84109194.entry.js +0 -2
  606. package/dist/stencil-library/p-b1d412a7.entry.js +0 -2
  607. package/dist/stencil-library/p-b1d412a7.entry.js.map +0 -1
  608. package/dist/stencil-library/p-f4f4ba61.entry.js.map +0 -1
  609. package/dist/stencil-library/p-f7c855d0.entry.js +0 -2
  610. package/dist/stencil-library/p-f889438a.entry.js +0 -2
  611. package/dist/stencil-library/p-f889438a.entry.js.map +0 -1
  612. package/dist/stencil-library/p-vXSpJxEK.js +0 -2
  613. package/dist/stencil-library/p-vXSpJxEK.js.map +0 -1
  614. package/dist/stencil-library/signature-input.stencil-form.tally-display.udp-question.entry.esm.js.map +0 -1
  615. /package/dist/stencil-library/{p-84109194.entry.js.map → p-146bc917.entry.js.map} +0 -0
  616. /package/dist/stencil-library/{p-b3b6310e.entry.js.map → p-147c4595.entry.js.map} +0 -0
  617. /package/dist/stencil-library/{p-06ca29e0.entry.js.map → p-1b001f78.entry.js.map} +0 -0
  618. /package/dist/stencil-library/{p-762591f6.entry.js.map → p-2635a6cc.entry.js.map} +0 -0
  619. /package/dist/stencil-library/{p-6a1febc9.entry.js.map → p-2f2fd111.entry.js.map} +0 -0
  620. /package/dist/stencil-library/{p-368be454.entry.js.map → p-2fc495ce.entry.js.map} +0 -0
  621. /package/dist/stencil-library/{p-fdfa7087.entry.js.map → p-476c08df.entry.js.map} +0 -0
  622. /package/dist/stencil-library/{p-ee1610d3.entry.js.map → p-4ab893a0.entry.js.map} +0 -0
  623. /package/dist/stencil-library/{p-9b0b311b.entry.js.map → p-64330dbb.entry.js.map} +0 -0
  624. /package/dist/stencil-library/{p-584552e6.entry.js.map → p-65a5cce3.entry.js.map} +0 -0
  625. /package/dist/stencil-library/{p-5a946191.entry.js.map → p-70d8a0d8.entry.js.map} +0 -0
  626. /package/dist/stencil-library/{p-79065768.entry.js.map → p-8119eb18.entry.js.map} +0 -0
  627. /package/dist/stencil-library/{p-2f99476a.entry.js.map → p-86cd0134.entry.js.map} +0 -0
  628. /package/dist/stencil-library/{p-767b7be7.entry.js.map → p-8a0b6bd4.entry.js.map} +0 -0
  629. /package/dist/stencil-library/{p-40127f9f.entry.js.map → p-90fbca0f.entry.js.map} +0 -0
  630. /package/dist/stencil-library/{p-2a11c543.entry.js.map → p-ae167d4b.entry.js.map} +0 -0
  631. /package/dist/stencil-library/{p-55459135.entry.js.map → p-b53e1b9a.entry.js.map} +0 -0
  632. /package/dist/stencil-library/{p-0de6045a.entry.js.map → p-c9046d64.entry.js.map} +0 -0
  633. /package/dist/stencil-library/{p-c1809ef3.entry.js.map → p-ca53be83.entry.js.map} +0 -0
  634. /package/dist/stencil-library/{p-f7c855d0.entry.js.map → p-d46dd16c.entry.js.map} +0 -0
  635. /package/dist/stencil-library/{p-09186dea.entry.js.map → p-d48b5599.entry.js.map} +0 -0
  636. /package/dist/stencil-library/{p-b0b70c0b.entry.js.map → p-e7e8a8a3.entry.js.map} +0 -0
  637. /package/dist/stencil-library/{p-79587009.entry.js.map → p-f4b5879d.entry.js.map} +0 -0
  638. /package/dist/stencil-library/{p-250a8400.entry.js.map → p-fbfbbcf1.entry.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, h, a as getElement } from './index-CaIWDYyq.js';
2
- import { debounce } from 'lodash';
2
+ import { throttle } from 'lodash';
3
3
  import { g as getCurrentTenantId } from './tenantUtils-Basdb1b1.js';
4
4
  import { c as createFormData, m as makeApiCall } from './makeApiCall-B-daVutk.js';
5
5
  import { C as ConfigService } from './configService-Cn7PuhQz.js';
@@ -46,6 +46,7 @@ function isFileArray(array) {
46
46
  return array.every(item => item instanceof File);
47
47
  }
48
48
 
49
+ // @ts-nocheck
49
50
  /**
50
51
  * Public form submission handler (legacy endpoint)
51
52
  */
@@ -220,11 +221,7 @@ class PrivateFormHandler extends BaseFormHandler {
220
221
  dataWithoutFiles[key] = value.map(item => (typeof item === 'string' ? item : item.value)).join(',');
221
222
  }
222
223
  else {
223
- // Only include non-file fields if they have a meaningful value
224
- // Skip null, undefined, or empty string values entirely
225
- if (value !== null && value !== undefined && value !== '') {
226
- dataWithoutFiles[key] = value;
227
- }
224
+ dataWithoutFiles[key] = value;
228
225
  }
229
226
  }
230
227
  // Add form data using the helper function
@@ -287,7 +284,7 @@ const UdpFormsRenderer = class {
287
284
  registerInstance(this, hostRef);
288
285
  this.isPublic = false;
289
286
  this.userId = null; // User ID for authenticated users
290
- this.autoSaveDelay = 2000; // Debounce delay for auto-save in milliseconds
287
+ this.autoSaveDelay = 2000; // Debounce delay for auto-save in milliseconds (currently disabled)
291
288
  this.initialValues = {};
292
289
  this.submitSuccessful = false;
293
290
  this.existingSubmission = null;
@@ -295,13 +292,135 @@ const UdpFormsRenderer = class {
295
292
  this.isSaving = false;
296
293
  this.saveError = null;
297
294
  this.isSubmitted = false;
295
+ this.dynamicSections = [];
296
+ this.isUpdatingSections = false;
297
+ this.reRenderKey = 0;
298
298
  this.tenantId = getCurrentTenantId();
299
- this.handleFormChange = (values) => {
300
- // Trigger auto-save if form data has changed
301
- if (JSON.stringify(values) !== JSON.stringify(this.currentFormData)) {
302
- this.debouncedAutoSave(values);
299
+ /**
300
+ * Duplicate a repeatable section
301
+ */
302
+ this.duplicateRepeatableSection = (index) => {
303
+ if (this.isSubmitted || this.isUpdatingSections)
304
+ return;
305
+ this.isUpdatingSections = true;
306
+ this.loading = true;
307
+ try {
308
+ const sectionToClone = this.dynamicSections[index];
309
+ if (!sectionToClone)
310
+ return;
311
+ const cloningSectionName = sectionToClone.name;
312
+ // Find existing repeat group indices
313
+ const repeatKeys = this.findRepeatGroupKeys(cloningSectionName, this.initialValues);
314
+ const nextRepeatIndex = repeatKeys.length > 0 ? Math.max(...repeatKeys) + 1 : 2;
315
+ const clonedSection = Object.assign(Object.assign({}, structuredClone(sectionToClone)), { formQuestions: sectionToClone.formQuestions.map(q => (Object.assign(Object.assign({}, structuredClone(q)), { processedSubmissionName: `${cloningSectionName}_${nextRepeatIndex}-${q.name}` }))), isOriginalSection: false, sectionPositionSuffix: nextRepeatIndex });
316
+ // Find the last index of this section group
317
+ let insertAtIndex = index;
318
+ for (let i = index + 1; i < this.dynamicSections.length; i++) {
319
+ const s = this.dynamicSections[i];
320
+ if (s.name === cloningSectionName) {
321
+ insertAtIndex = i;
322
+ }
323
+ else {
324
+ break;
325
+ }
326
+ }
327
+ // Insert after the last repeat of the section group
328
+ this.dynamicSections = [...this.dynamicSections.slice(0, insertAtIndex + 1), clonedSection, ...this.dynamicSections.slice(insertAtIndex + 1)];
329
+ // Create new initial values structure
330
+ const newInitialValues = Object.assign({}, this.currentFormData);
331
+ clonedSection.formQuestions.forEach(q => {
332
+ newInitialValues[q.processedSubmissionName] = null;
333
+ });
334
+ // This will trigger a complete form re-render
335
+ this.initialValues = newInitialValues;
336
+ this.currentFormData = newInitialValues;
337
+ this.reRenderKey += 1;
338
+ }
339
+ finally {
340
+ this.isUpdatingSections = false;
341
+ this.loading = false;
303
342
  }
304
343
  };
344
+ /**
345
+ * Delete a repeatable section
346
+ */
347
+ this.deleteRepeatableSection = (index) => {
348
+ if (this.isSubmitted)
349
+ return;
350
+ const sectionToDelete = this.dynamicSections[index];
351
+ if (!sectionToDelete || sectionToDelete.isOriginalSection)
352
+ return;
353
+ this.isUpdatingSections = true;
354
+ this.loading = true;
355
+ try {
356
+ const deleteSectionName = sectionToDelete.name;
357
+ // Remove the section's initial values\
358
+ console.log('currentformdata', this.currentFormData);
359
+ const newInitialValues = Object.assign({}, this.currentFormData);
360
+ sectionToDelete.formQuestions.forEach(q => {
361
+ delete newInitialValues[q.processedSubmissionName];
362
+ });
363
+ // Remove the section from dynamicSections
364
+ const updatedSections = structuredClone(this.dynamicSections);
365
+ updatedSections.splice(index, 1);
366
+ let suffixCounter = 2;
367
+ updatedSections.forEach(section => {
368
+ // no need to process unrelated sections or originalSections
369
+ if (section.name !== deleteSectionName || section.isOriginalSection) {
370
+ return;
371
+ }
372
+ section.sectionPositionSuffix = suffixCounter;
373
+ suffixCounter += 1;
374
+ section.formQuestions = section.formQuestions.map(q => {
375
+ const newName = `${deleteSectionName}_${section.sectionPositionSuffix}-${q.name}`;
376
+ const oldName = q.processedSubmissionName;
377
+ // Carry over any existing value
378
+ if (newInitialValues[oldName] !== undefined) {
379
+ newInitialValues[newName] = newInitialValues[oldName];
380
+ delete newInitialValues[oldName];
381
+ }
382
+ return Object.assign(Object.assign({}, q), { processedSubmissionName: newName });
383
+ });
384
+ });
385
+ this.dynamicSections = updatedSections;
386
+ this.initialValues = newInitialValues;
387
+ this.currentFormData = newInitialValues;
388
+ this.reRenderKey += 1;
389
+ console.log('newInitialValues', newInitialValues);
390
+ }
391
+ finally {
392
+ this.isUpdatingSections = false;
393
+ this.loading = false;
394
+ }
395
+ };
396
+ /**
397
+ * Manual save function - debounced to 5 seconds
398
+ */
399
+ this.handleManualSave = async (values) => {
400
+ // Only save if handler supports it and user is authenticated
401
+ if (!this.formHandler.supportsAutoSave() || !this.userId || !this.formHandler.saveFormData) {
402
+ return;
403
+ }
404
+ this.isSaving = true;
405
+ this.saveError = null;
406
+ try {
407
+ await this.formHandler.saveFormData(values, 'in-progress');
408
+ this.currentFormData = Object.assign({}, values);
409
+ console.log('Form saved successfully');
410
+ }
411
+ catch (error) {
412
+ console.error('Manual save failed:', error);
413
+ this.saveError = 'Failed to save form data';
414
+ }
415
+ finally {
416
+ this.isSaving = false;
417
+ }
418
+ };
419
+ this.handleFormChange = (values) => {
420
+ if (this.isUpdatingSections)
421
+ return;
422
+ this.currentFormData = values;
423
+ };
305
424
  this.handleFinish = () => {
306
425
  // Trigger any finish actions
307
426
  if (this.triggerAction) {
@@ -311,13 +430,17 @@ const UdpFormsRenderer = class {
311
430
  }
312
431
  async componentWillLoad() {
313
432
  this.loading = true;
314
- this.formHandler = FormHandlerFactory.create(this.isPublic, this.formId, this.version, this.tenantId, this.userId, this.existingSubmission, (submission) => {
433
+ this.formHandler = FormHandlerFactory.create(this.isPublic, this.formId, this.version, this.tenantId, this.userId, this.existingSubmission, submission => {
315
434
  this.existingSubmission = submission;
316
435
  });
317
- // Set up debounced auto-save function
318
- this.debouncedAutoSave = debounce(async (values) => {
319
- await this.handleAutoSave(values);
320
- }, this.autoSaveDelay);
436
+ // Set up debounced auto-save function (currently disabled)
437
+ // this.debouncedAutoSave = debounce(async (values: { [name: string]: any }) => {
438
+ // // await this.handleAutoSave(values); // Disabled for now
439
+ // }, this.autoSaveDelay);
440
+ // Set up throttled manual save function (5 seconds) - fires immediately, then throttles
441
+ this.debouncedManualSave = throttle(async (values) => {
442
+ await this.handleManualSave(values);
443
+ }, 2000, { leading: true, trailing: false });
321
444
  if (this.formId && this.version) {
322
445
  await this.loadForm();
323
446
  }
@@ -338,19 +461,63 @@ const UdpFormsRenderer = class {
338
461
  if (existingData.status === 2) {
339
462
  this.isSubmitted = true;
340
463
  }
341
- // Process file data to convert file references to UdpDriveFile objects
342
- this.initialValues = await this.processInitialValues(this.initialValues);
343
464
  this.currentFormData = Object.assign({}, this.initialValues);
344
465
  if (existingData.status === 2 || existingData.status === 'submitted') {
345
466
  this.isSubmitted = true;
346
467
  }
347
468
  }
348
469
  }
470
+ this.initializeDynamicSections();
349
471
  }
350
472
  catch (error) {
351
473
  console.error('Failed to load form:', error);
352
474
  }
353
475
  }
476
+ // build dynamic sections based on the
477
+ initializeDynamicSections() {
478
+ var _a;
479
+ const tempDynamicSection = [];
480
+ const sortedSections = structuredClone(this.form.udpFormUdpFormSection).sort((a, b) => a.order - b.order);
481
+ for (const section of sortedSections) {
482
+ section.name = `section${section.order}`; // THIS LINE WILL NOT BE NECESSARY SOON AFTER BACKEND UPDATE
483
+ section.sectionProperties = JSON.parse(section.sectionProperties || "{}");
484
+ const repeatGroupKeys = this.findRepeatGroupKeys(section.name, this.initialValues);
485
+ section.isOriginalSection = true;
486
+ section.sectionPositionSuffix = 1; // default position
487
+ // always add the original section into dynamic sections
488
+ tempDynamicSection.push(Object.assign(Object.assign({}, structuredClone(section)), { formQuestions: structuredClone(this.form.formQuestions)
489
+ .filter(q => q.formSectionId === section.id)
490
+ .sort((a, b) => a.questionOrder - b.questionOrder)
491
+ .map(q => (Object.assign(Object.assign({}, q), { processedSubmissionName: `${section.name}-${q.name}` }))) }));
492
+ // create then add additional sections if there are repeated sections
493
+ if (((_a = section.sectionProperties) === null || _a === void 0 ? void 0 : _a.isRepeatable) && repeatGroupKeys.length > 0) {
494
+ const maxRepeatedSectionSuffix = Math.max(...repeatGroupKeys); // create a new section for the max value of repeat group keys, even if there are no saved answers
495
+ // for (const repeatKey of repeatGroupKeys) { // create a section only for the suffix saved
496
+ for (let repeatKey = 2; repeatKey <= maxRepeatedSectionSuffix; repeatKey++) {
497
+ const clonedSection = Object.assign(Object.assign({}, structuredClone(section)), { formQuestions: structuredClone(this.form.formQuestions)
498
+ .filter(q => q.formSectionId === section.id)
499
+ .sort((a, b) => a.questionOrder - b.questionOrder)
500
+ .map(q => (Object.assign(Object.assign({}, q), { processedSubmissionName: `${section.name}_${repeatKey}-${q.name}` }))), isOriginalSection: false, sectionPositionSuffix: repeatKey });
501
+ tempDynamicSection.push(clonedSection);
502
+ }
503
+ }
504
+ }
505
+ console.log('tempDynamicSection', tempDynamicSection);
506
+ this.dynamicSections = tempDynamicSection;
507
+ }
508
+ findRepeatGroupKeys(sectionName, values) {
509
+ const keys = Object.keys(values);
510
+ const repeatGroupSet = new Set();
511
+ // Match: sectionName_2-question1
512
+ const regex = new RegExp(`^${sectionName}_(\\d+)-`);
513
+ keys.forEach(key => {
514
+ const match = key.match(regex);
515
+ if (match && match[1]) {
516
+ repeatGroupSet.add(Number(match[1]));
517
+ }
518
+ });
519
+ return Array.from(repeatGroupSet).sort((a, b) => a - b);
520
+ }
354
521
  async handleSubmit(values) {
355
522
  try {
356
523
  const success = await this.formHandler.submitForm(values);
@@ -361,163 +528,6 @@ const UdpFormsRenderer = class {
361
528
  throw error;
362
529
  }
363
530
  }
364
- async handleAutoSave(values) {
365
- // Only auto-save if handler supports it and user is authenticated
366
- if (!this.formHandler.supportsAutoSave() || !this.userId || !this.formHandler.saveFormData) {
367
- return;
368
- }
369
- this.isSaving = true;
370
- this.saveError = null;
371
- try {
372
- await this.formHandler.saveFormData(values, 'in-progress');
373
- this.currentFormData = Object.assign({}, values);
374
- }
375
- catch (error) {
376
- console.error('Auto-save failed:', error);
377
- this.saveError = 'Failed to save form data';
378
- }
379
- finally {
380
- this.isSaving = false;
381
- }
382
- }
383
- /**
384
- * Process initial values to convert file references to UdpDriveFile objects
385
- */
386
- async processInitialValues(values) {
387
- const processedValues = Object.assign({}, values);
388
- for (const [key, value] of Object.entries(values)) {
389
- if (typeof value === 'string' && this.isFileReference(value)) {
390
- processedValues[key] = await this.parseFileReferences(value);
391
- }
392
- }
393
- return processedValues;
394
- }
395
- /**
396
- * Check if a string value is a file reference (contains | and udp: or b64:)
397
- */
398
- isFileReference(value) {
399
- return typeof value === 'string' && value.includes('|') && (value.includes('udp:') || value.includes('b64:'));
400
- }
401
- /**
402
- * Parse file references from the special format: "filename|udp:driveFileId" or "filename|b64:base64data"
403
- */
404
- async parseFileReferences(value) {
405
- const references = value.split(',').map(ref => ref.trim()).filter(ref => ref);
406
- const udpDriveFiles = [];
407
- for (const reference of references) {
408
- try {
409
- const udpDriveFile = await this.parseFileReference(reference);
410
- if (udpDriveFile) {
411
- udpDriveFiles.push(udpDriveFile);
412
- }
413
- }
414
- catch (error) {
415
- console.error('Error parsing file reference:', reference, error);
416
- }
417
- }
418
- return udpDriveFiles;
419
- }
420
- /**
421
- * Parse a single file reference
422
- */
423
- async parseFileReference(reference) {
424
- const parts = reference.split('|');
425
- if (parts.length !== 2) {
426
- console.warn('Invalid file reference format:', reference);
427
- return null;
428
- }
429
- const [filename, dataRef] = parts;
430
- if (dataRef.startsWith('udp:')) {
431
- // Handle UDP Drive file reference
432
- const driveFileId = dataRef.substring(4); // Remove 'udp:' prefix
433
- return await this.createUdpDriveFileFromId(filename, driveFileId);
434
- }
435
- else if (dataRef.startsWith('b64:')) {
436
- // Handle base64 encoded file
437
- const base64Data = dataRef.substring(4); // Remove 'b64:' prefix
438
- return this.createUdpDriveFileFromBase64(filename, base64Data);
439
- }
440
- console.warn('Unknown file reference format:', dataRef);
441
- return null;
442
- }
443
- /**
444
- * Create a UdpDriveFile from a drive file ID
445
- */
446
- async createUdpDriveFileFromId(filename, driveFileId) {
447
- // Extract file extension from filename
448
- const extension = filename.split('.').pop() || '';
449
- // Create a placeholder File object - the actual content will be downloaded when needed
450
- const placeholderBlob = new Blob([''], { type: this.getMimeTypeFromExtension(extension) });
451
- const file = new File([placeholderBlob], filename, {
452
- type: placeholderBlob.type,
453
- lastModified: Date.now()
454
- });
455
- // Create UdpDriveFile by extending the File object
456
- const udpDriveFile = file;
457
- // Add UDP-specific properties
458
- udpDriveFile.driveFileId = driveFileId;
459
- udpDriveFile.tenantId = this.tenantId;
460
- udpDriveFile.productId = 0; // Will be filled by server
461
- udpDriveFile.path = '';
462
- udpDriveFile.extension = extension;
463
- return udpDriveFile;
464
- }
465
- /**
466
- * Create a UdpDriveFile from base64 data
467
- */
468
- createUdpDriveFileFromBase64(filename, base64Data) {
469
- // Extract file extension from filename
470
- const extension = filename.split('.').pop() || '';
471
- // Decode base64 data
472
- const binaryString = atob(base64Data);
473
- const bytes = new Uint8Array(binaryString.length);
474
- for (let i = 0; i < binaryString.length; i++) {
475
- bytes[i] = binaryString.charCodeAt(i);
476
- }
477
- const blob = new Blob([bytes], { type: this.getMimeTypeFromExtension(extension) });
478
- // Create a UdpDriveFile that extends File
479
- const udpDriveFile = new File([blob], filename, {
480
- type: blob.type,
481
- lastModified: Date.now()
482
- });
483
- // Add UDP-specific properties
484
- udpDriveFile.driveFileId = ''; // No drive file ID for base64 files
485
- udpDriveFile.tenantId = this.tenantId;
486
- udpDriveFile.productId = 0;
487
- udpDriveFile.path = '';
488
- udpDriveFile.extension = extension;
489
- return udpDriveFile;
490
- }
491
- /**
492
- * Get MIME type from file extension
493
- */
494
- getMimeTypeFromExtension(extension) {
495
- const mimeTypes = {
496
- 'pdf': 'application/pdf',
497
- 'doc': 'application/msword',
498
- 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
499
- 'xls': 'application/vnd.ms-excel',
500
- 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
501
- 'ppt': 'application/vnd.ms-powerpoint',
502
- 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
503
- 'txt': 'text/plain',
504
- 'csv': 'text/csv',
505
- 'json': 'application/json',
506
- 'xml': 'application/xml',
507
- 'html': 'text/html',
508
- 'css': 'text/css',
509
- 'js': 'application/javascript',
510
- 'png': 'image/png',
511
- 'jpg': 'image/jpeg',
512
- 'jpeg': 'image/jpeg',
513
- 'gif': 'image/gif',
514
- 'svg': 'image/svg+xml',
515
- 'zip': 'application/zip',
516
- 'rar': 'application/x-rar-compressed',
517
- '7z': 'application/x-7z-compressed'
518
- };
519
- return mimeTypes[extension.toLowerCase()] || 'application/octet-stream';
520
- }
521
531
  render() {
522
532
  if (this.loading) {
523
533
  return (h("div", { class: "loading-container" }, h("unity-spinner", { size: "medium" })));
@@ -525,7 +535,7 @@ const UdpFormsRenderer = class {
525
535
  if (!this.form) {
526
536
  return (h("div", { class: "error-container" }, h("unity-typography", { variant: "body1" }, "Form not found")));
527
537
  }
528
- return (h("udp-forms-ui", { form: this.form, initialValues: this.initialValues, submitSuccessful: this.submitSuccessful, isSaving: this.isSaving, saveError: this.saveError, showAutoSaveStatus: this.formHandler.supportsAutoSave() && !!this.userId, readonly: this.isSubmitted, onSubmit: this.handleSubmit.bind(this), onChange: this.handleFormChange, onAction: this.triggerAction, onFinish: this.handleFinish }));
538
+ return (h("div", { class: "forms-renderer-container" }, h("udp-forms-ui", { form: this.form, initialValues: this.initialValues, submitSuccessful: this.submitSuccessful, isSaving: this.isSaving, saveError: this.saveError, showAutoSaveStatus: this.formHandler.supportsAutoSave() && !!this.userId, readonly: this.isSubmitted, currentFormData: this.currentFormData, handleSubmit: this.handleSubmit.bind(this), handleSave: (values) => Promise.resolve(this.debouncedManualSave(values)), handleChange: this.handleFormChange, handleAction: this.triggerAction, handleFinish: this.handleFinish, userId: this.userId, isSubmitted: this.isSubmitted, dynamicSections: this.dynamicSections, duplicateRepeatableSection: this.duplicateRepeatableSection, deleteRepeatableSection: this.deleteRepeatableSection, key: `form-${this.reRenderKey}` })));
529
539
  }
530
540
  get el() { return getElement(this); }
531
541
  };
@@ -1 +1 @@
1
- {"version":3,"file":"udp-forms-renderer.entry.js","sources":["src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/BaseFormHandler.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/formUtils.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/FormHandlerFactory.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.tsx"],"sourcesContent":["import { IFormHandler } from './IFormHandler';\nimport { UdpForm, UdpFormSubmission, UdpFormSubmissionStatus } from '../../types';\n\n/**\n * Base class for form handlers with common functionality\n */\nexport abstract class BaseFormHandler implements IFormHandler {\n abstract getForm(): Promise<UdpForm>;\n abstract submitForm(values: { [name: string]: any }): Promise<boolean>;\n\n /**\n * Default implementation - does nothing\n * Override in subclasses that support auto-save\n */\n async saveFormData(_values: { [name: string]: any }, _status: UdpFormSubmissionStatus): Promise<UdpFormSubmission> {\n // Default implementation - no-op\n return null as any;\n }\n\n /**\n * Default implementation - returns null\n * Override in subclasses that support loading existing submissions\n */\n async loadExistingSubmission(): Promise<UdpFormSubmission | null> {\n return null;\n }\n\n /**\n * Default implementation - returns true\n * Override in subclasses that don't support auto-save\n */\n supportsAutoSave(): boolean {\n return true;\n }\n}\n","/**\n * Utility function to check if an array contains File objects\n */\nexport function isFileArray(array: any): array is File[] {\n // Check if it's an array\n if (!Array.isArray(array)) {\n return false;\n }\n\n // Check if all elements in the array are instances of File\n return array.every(item => item instanceof File);\n}\n","import { BaseFormHandler } from './BaseFormHandler';\nimport { Guid, UdpForm, StyleOverrides } from '../../types';\nimport { makeApiCall, createFormData } from '../../../../../../../udp-utilities/api/makeApiCall/makeApiCall';\nimport { ConfigService } from 'src/udp-utilities/api-config';\nimport { isFileArray } from './formUtils';\n\n/**\n * Public form submission handler (legacy endpoint)\n */\nexport class PublicFormHandler extends BaseFormHandler {\n constructor(\n private formId: Guid,\n private formVersion: number,\n private tenantId: Guid\n ) {\n super();\n }\n\n private objectToFormData(obj): FormData {\n // Separate files from regular data\n const files: File[] = [];\n const formObj = {};\n\n for (let key in obj) {\n let value;\n if (obj[key]?.value) {\n value = obj[key].value;\n } else {\n value = obj[key];\n }\n\n if (isFileArray(value)) {\n // Collect files for formFiles only if there are files\n if (value.length > 0) {\n files.push(value[0]);\n formObj[key] = value[0].name;\n }\n // If no files, skip this field entirely\n } else if (Array.isArray(value)) {\n formObj[key] = value.map(item => (typeof item === 'string' ? item : item.value)).join(',');\n } else {\n // Only include fields with meaningful values\n // Skip null, undefined, or empty string values entirely\n if (value !== null && value !== undefined && value !== '') {\n formObj[key] = value;\n }\n }\n }\n\n // Use createFormData helper with the structured data\n const formData = createFormData({\n formData: JSON.stringify(formObj),\n formFiles: files[0] // Public handler only supports single file\n });\n\n return formData;\n }\n\n async getForm(): Promise<UdpForm> {\n const formData: UdpForm = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/describe/public?tenantId=${this.tenantId}`, {})\n .then(data => {\n if (data.id) {\n return data;\n } else {\n alert('form not found');\n return null;\n }\n })\n .catch(() => {\n // this would get thrown when the form exists but is private\n alert('form not found');\n return null;\n });\n if (formData.styleOverrides && typeof formData.styleOverrides === 'string') {\n formData.styleOverrides = JSON.parse(formData.styleOverrides) as StyleOverrides;\n }\n return formData;\n }\n\n async submitForm(values: { [name: string]: any }): Promise<boolean> {\n const formData = this.objectToFormData(values);\n\n return await makeApiCall(\n 'POST',\n `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/${this.formVersion}/submit/public?tenantId=${this.tenantId}`,\n formData,\n true,\n )\n .then(() => true)\n .catch(() => false);\n }\n}\n","import { BaseFormHandler } from './BaseFormHandler';\nimport { Guid, UdpForm, UdpFormSubmission, UdpFormSubmissionStatus, StyleOverrides } from '../../types';\nimport { makeApiCall, createFormData } from '../../../../../../../udp-utilities/api/makeApiCall/makeApiCall';\nimport { SearchBuilder, SearchOperators } from '../../../../../../../udp-utilities/search';\nimport { ConfigService } from 'src/udp-utilities/api-config';\nimport { isFileArray } from './formUtils';\n\n/**\n * Private form submission handler (new UdpFormSubmission endpoint)\n */\nexport class PrivateFormHandler extends BaseFormHandler {\n constructor(\n private formId: Guid,\n private formVersion: number,\n private userId: Guid,\n private existingSubmission: UdpFormSubmission | null,\n private updateExistingSubmission: (submission: UdpFormSubmission) => void\n ) {\n super();\n }\n\n async getForm(): Promise<UdpForm> {\n const formData: UdpForm = await makeApiCall(\n 'GET',\n `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}${this.formVersion ? `/${this.formVersion}` : ''}/describe`\n );\n if (formData.styleOverrides && typeof formData.styleOverrides === 'string') {\n formData.styleOverrides = JSON.parse(formData.styleOverrides) as StyleOverrides;\n }\n return formData;\n }\n\n async loadExistingSubmission(): Promise<UdpFormSubmission | null> {\n try {\n const search = new SearchBuilder(1, 1) // Only need the first result\n .addFilter('unityUserId', this.userId, SearchOperators.EQUALS)\n .addFilter('formId', this.formId, SearchOperators.EQUALS)\n .addFilter('formVersion', this.formVersion.toString(), SearchOperators.EQUALS)\n .addOrder('id', 'DESC'); // Get the most recent submission if multiple exist\n\n const response = await search.execute('UdpFormSubmission');\n\n // Check if we got any results\n if (response?.pageList && response.pageList.length > 0) {\n const submission = response.pageList[0] as UdpFormSubmission;\n this.existingSubmission = submission;\n this.updateExistingSubmission(submission);\n return submission;\n }\n\n return null;\n } catch (error) {\n console.error('Error fetching existing form response:', error);\n return null;\n }\n }\n\n private createFormDataForSubmission(data: { [name: string]: any }, status: UdpFormSubmissionStatus): FormData {\n // Convert status string to numeric value\n let statusValue: number;\n if (status === 'submitted') {\n statusValue = 2;\n } else if (status === 'in-progress') {\n statusValue = 1;\n } else {\n statusValue = typeof status === 'number' ? status : 1;\n }\n\n // Prepare the base form submission data\n const formSubmissionData: Record<string, any> = {\n FormId: this.formId,\n FormVersion: this.formVersion.toString(),\n Status: statusValue.toString(),\n };\n\n if (this.existingSubmission?.id) {\n formSubmissionData.Id = this.existingSubmission.id;\n }\n\n // Separate files from regular data\n const files: File[] = [];\n const dataWithoutFiles: Record<string, any> = {};\n\n for (let key in data) {\n let value = data[key]?.value || data[key];\n let fieldFiles = data[key]?.files; // Check if this field has associated files\n\n if (fieldFiles && Array.isArray(fieldFiles)) {\n // This field has File objects - add them to files array and use the string value for data\n files.push(...fieldFiles);\n // Only include file field in data if it has a meaningful value\n if (value && value.trim() !== '') {\n dataWithoutFiles[key] = value;\n }\n // If no files and no value, skip this field entirely\n } else if (isFileArray(value)) {\n // Legacy file handling - collect files for FormFiles\n files.push(...value);\n // Store filename in data only if there are files\n if (value.length > 0) {\n dataWithoutFiles[key] = value.map(f => f.name).join(',');\n }\n // If no files, skip this field entirely\n }else if (value instanceof File) {\n // Single file handling - add to files array and use filename in data\n files.push(value);\n dataWithoutFiles[key] = value.name;\n }\n\n else if (Array.isArray(value)) {\n dataWithoutFiles[key] = value.map(item => (typeof item === 'string' ? item : item.value)).join(',');\n } else {\n // Only include non-file fields if they have a meaningful value\n // Skip null, undefined, or empty string values entirely\n if (value !== null && value !== undefined && value !== '') {\n dataWithoutFiles[key] = value;\n }\n }\n }\n\n // Add form data using the helper function\n const formData = createFormData(formSubmissionData);\n\n // Add files to FormFiles collection\n files.forEach(file => formData.append('FormFiles', file));\n\n // Convert data to Dictionary<string, string> format expected by server\n Object.keys(dataWithoutFiles).forEach(key => {\n formData.append(`Data[${key}]`, dataWithoutFiles[key]?.toString() || '');\n });\n\n return formData;\n }\n\n async saveFormData(values: { [name: string]: any }, status: UdpFormSubmissionStatus): Promise<UdpFormSubmission> {\n const formData = this.createFormDataForSubmission(values, status);\n\n let submission: UdpFormSubmission;\n\n if (this.existingSubmission) {\n // Update existing submission\n submission = await makeApiCall(\n 'PUT',\n `${ConfigService.productV1ApiUrl}/UdpFormSubmission/${this.existingSubmission.id}`,\n formData,\n true\n );\n } else {\n // Create new submission\n submission = await makeApiCall(\n 'POST',\n `${ConfigService.productV1ApiUrl}/UdpFormSubmission`,\n formData,\n true\n );\n }\n\n // Update the existing submission reference\n this.updateExistingSubmission(submission);\n return submission;\n }\n\n async submitForm(values: { [name: string]: any }): Promise<boolean> {\n try {\n await this.saveFormData(values, 'submitted');\n return true;\n } catch (error) {\n console.error('Private form submission failed:', error);\n return false;\n }\n }\n}\n","import { Build } from '@stencil/core';\nimport { IFormHandler } from './IFormHandler';\nimport { MockFormHandler } from './MockFormHandler';\nimport { PublicFormHandler } from './PublicFormHandler';\nimport { PrivateFormHandler } from './PrivateFormHandler';\nimport { Guid, UdpFormSubmission } from '../../types';\n\n/**\n * Factory for creating form handlers\n */\nexport class FormHandlerFactory {\n static create(\n isPublic: boolean,\n formId: Guid,\n version: number,\n tenantId: Guid,\n userId?: Guid | null,\n existingSubmission?: UdpFormSubmission | null,\n updateExistingSubmission?: (submission: UdpFormSubmission) => void\n ): IFormHandler {\n // Use mock handler in development\n if (Build.isDev) {\n return new MockFormHandler();\n }\n\n if (isPublic) {\n return new PublicFormHandler(formId, version, tenantId);\n } else {\n if (!userId) {\n throw new Error('User ID is required for private forms');\n }\n return new PrivateFormHandler(\n formId,\n version,\n userId,\n existingSubmission || null,\n updateExistingSubmission || (() => {})\n );\n }\n }\n}\n","import { Component, Prop, State, Element, h } from '@stencil/core';\nimport { debounce } from 'lodash';\nimport { Guid, UdpDriveFile } from 'src/global/types';\nimport { UdpForm, UdpFormSubmission } from '../types';\nimport { getCurrentTenantId } from 'src/udp-utilities/tenant/tenantUtils';\nimport { IFormHandler } from './form-handler/IFormHandler';\nimport { FormHandlerFactory } from './form-handler/FormHandlerFactory';\n\n@Component({\n tag: 'udp-forms-renderer',\n shadow: true,\n})\nexport class UdpFormsRenderer {\n @Prop() formId: Guid;\n @Prop() version: number;\n @Prop() triggerAction: (actionId: Guid, params: Object) => void;\n @Prop() isPublic: boolean = false;\n @Prop() callbackUrl: string;\n @Prop() userId: Guid | null = null; // User ID for authenticated users\n @Prop() autoSaveDelay: number = 2000; // Debounce delay for auto-save in milliseconds\n @State() form: UdpForm;\n @State() initialValues: { [name: string]: any } = {};\n @State() submitSuccessful: boolean = false;\n @Element() el: HTMLElement;\n @State() loading: boolean;\n @State() existingSubmission: UdpFormSubmission | null = null;\n @State() currentFormData: { [name: string]: any } = {};\n @State() isSaving: boolean = false;\n @State() saveError: string | null = null;\n @State() isSubmitted: boolean = false;\n\n private tenantId: Guid = getCurrentTenantId();\n private debouncedAutoSave: (values: { [name: string]: any }) => void;\n private formHandler: IFormHandler;\n\n async componentWillLoad() {\n this.loading = true;\n this.formHandler = FormHandlerFactory.create(\n this.isPublic,\n this.formId,\n this.version,\n this.tenantId,\n this.userId,\n this.existingSubmission,\n (submission) => {\n this.existingSubmission = submission;\n }\n );\n\n // Set up debounced auto-save function\n this.debouncedAutoSave = debounce(async (values: { [name: string]: any }) => {\n await this.handleAutoSave(values);\n }, this.autoSaveDelay);\n\n if (this.formId && this.version) {\n await this.loadForm();\n }\n this.loading = false;\n }\n\n private async loadForm() {\n try {\n // Load form structure\n const formData = await this.formHandler.getForm();\n this.form = formData;\n\n // Try to load existing submission if handler supports it\n if (this.userId && this.formHandler.loadExistingSubmission) {\n const existingData = await this.formHandler.loadExistingSubmission();\n if (existingData) {\n this.existingSubmission = existingData;\n this.initialValues = existingData.data || {};\n // Check if the form is submitted (status 2)\n if (existingData.status === 2) {\n this.isSubmitted = true;\n }\n // Process file data to convert file references to UdpDriveFile objects\n this.initialValues = await this.processInitialValues(this.initialValues);\n this.currentFormData = { ...this.initialValues };\n\n if (existingData.status === 2 || existingData.status === 'submitted') {\n this.isSubmitted = true;\n }\n }\n }\n } catch (error) {\n console.error('Failed to load form:', error);\n }\n }\n\n private async handleSubmit(values: { [name: string]: any }) {\n try {\n const success = await this.formHandler.submitForm(values);\n this.submitSuccessful = success;\n } catch (error) {\n console.error('Form submission failed:', error);\n throw error;\n }\n }\n\n private async handleAutoSave(values: { [name: string]: any }) {\n // Only auto-save if handler supports it and user is authenticated\n if (!this.formHandler.supportsAutoSave() || !this.userId || !this.formHandler.saveFormData) {\n return;\n }\n\n this.isSaving = true;\n this.saveError = null;\n\n try {\n await this.formHandler.saveFormData(values, 'in-progress');\n this.currentFormData = { ...values };\n } catch (error) {\n console.error('Auto-save failed:', error);\n this.saveError = 'Failed to save form data';\n } finally {\n this.isSaving = false;\n }\n }\n\n private handleFormChange = (values: { [name: string]: any }) => {\n // Trigger auto-save if form data has changed\n if (JSON.stringify(values) !== JSON.stringify(this.currentFormData)) {\n this.debouncedAutoSave(values);\n }\n };\n\n /**\n * Process initial values to convert file references to UdpDriveFile objects\n */\n private async processInitialValues(values: { [name: string]: any }): Promise<{ [name: string]: any }> {\n const processedValues = { ...values };\n\n for (const [key, value] of Object.entries(values)) {\n if (typeof value === 'string' && this.isFileReference(value)) {\n processedValues[key] = await this.parseFileReferences(value);\n }\n }\n\n return processedValues;\n }\n\n /**\n * Check if a string value is a file reference (contains | and udp: or b64:)\n */\n private isFileReference(value: string): boolean {\n return typeof value === 'string' && value.includes('|') && (value.includes('udp:') || value.includes('b64:'));\n }\n\n /**\n * Parse file references from the special format: \"filename|udp:driveFileId\" or \"filename|b64:base64data\"\n */\n private async parseFileReferences(value: string): Promise<UdpDriveFile[]> {\n const references = value.split(',').map(ref => ref.trim()).filter(ref => ref);\n const udpDriveFiles: UdpDriveFile[] = [];\n\n for (const reference of references) {\n try {\n const udpDriveFile = await this.parseFileReference(reference);\n if (udpDriveFile) {\n udpDriveFiles.push(udpDriveFile);\n }\n } catch (error) {\n console.error('Error parsing file reference:', reference, error);\n }\n }\n\n return udpDriveFiles;\n }\n\n /**\n * Parse a single file reference\n */\n private async parseFileReference(reference: string): Promise<UdpDriveFile | null> {\n const parts = reference.split('|');\n if (parts.length !== 2) {\n console.warn('Invalid file reference format:', reference);\n return null;\n }\n\n const [filename, dataRef] = parts;\n\n if (dataRef.startsWith('udp:')) {\n // Handle UDP Drive file reference\n const driveFileId = dataRef.substring(4); // Remove 'udp:' prefix\n return await this.createUdpDriveFileFromId(filename, driveFileId);\n } else if (dataRef.startsWith('b64:')) {\n // Handle base64 encoded file\n const base64Data = dataRef.substring(4); // Remove 'b64:' prefix\n return this.createUdpDriveFileFromBase64(filename, base64Data);\n }\n\n console.warn('Unknown file reference format:', dataRef);\n return null;\n }\n\n /**\n * Create a UdpDriveFile from a drive file ID\n */\n private async createUdpDriveFileFromId(filename: string, driveFileId: string): Promise<UdpDriveFile> {\n // Extract file extension from filename\n const extension = filename.split('.').pop() || '';\n\n // Create a placeholder File object - the actual content will be downloaded when needed\n const placeholderBlob = new Blob([''], { type: this.getMimeTypeFromExtension(extension) });\n const file = new File([placeholderBlob], filename, {\n type: placeholderBlob.type,\n lastModified: Date.now()\n });\n\n // Create UdpDriveFile by extending the File object\n const udpDriveFile = file as UdpDriveFile;\n\n // Add UDP-specific properties\n udpDriveFile.driveFileId = driveFileId as Guid;\n udpDriveFile.tenantId = this.tenantId;\n udpDriveFile.productId = 0; // Will be filled by server\n udpDriveFile.path = '';\n udpDriveFile.extension = extension;\n\n return udpDriveFile;\n }\n\n /**\n * Create a UdpDriveFile from base64 data\n */\n private createUdpDriveFileFromBase64(filename: string, base64Data: string): UdpDriveFile {\n // Extract file extension from filename\n const extension = filename.split('.').pop() || '';\n\n // Decode base64 data\n const binaryString = atob(base64Data);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n const blob = new Blob([bytes], { type: this.getMimeTypeFromExtension(extension) });\n\n // Create a UdpDriveFile that extends File\n const udpDriveFile: UdpDriveFile = new File([blob], filename, {\n type: blob.type,\n lastModified: Date.now()\n }) as UdpDriveFile;\n\n // Add UDP-specific properties\n udpDriveFile.driveFileId = '' as Guid; // No drive file ID for base64 files\n udpDriveFile.tenantId = this.tenantId;\n udpDriveFile.productId = 0;\n udpDriveFile.path = '';\n udpDriveFile.extension = extension;\n\n return udpDriveFile;\n }\n\n /**\n * Get MIME type from file extension\n */\n private getMimeTypeFromExtension(extension: string): string {\n const mimeTypes: { [key: string]: string } = {\n 'pdf': 'application/pdf',\n 'doc': 'application/msword',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'xls': 'application/vnd.ms-excel',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'txt': 'text/plain',\n 'csv': 'text/csv',\n 'json': 'application/json',\n 'xml': 'application/xml',\n 'html': 'text/html',\n 'css': 'text/css',\n 'js': 'application/javascript',\n 'png': 'image/png',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'gif': 'image/gif',\n 'svg': 'image/svg+xml',\n 'zip': 'application/zip',\n 'rar': 'application/x-rar-compressed',\n '7z': 'application/x-7z-compressed'\n };\n\n return mimeTypes[extension.toLowerCase()] || 'application/octet-stream';\n }\n\n private handleFinish = () => {\n // Trigger any finish actions\n if (this.triggerAction) {\n this.triggerAction(null as any, { action: 'finish' });\n }\n };\n\n render() {\n if (this.loading) {\n return (\n <div class=\"loading-container\">\n <unity-spinner size=\"medium\" />\n </div>\n );\n }\n\n if (!this.form) {\n return (\n <div class=\"error-container\">\n <unity-typography variant=\"body1\">Form not found</unity-typography>\n </div>\n );\n }\n\n return (\n <udp-forms-ui\n form={this.form}\n initialValues={this.initialValues}\n submitSuccessful={this.submitSuccessful}\n isSaving={this.isSaving}\n saveError={this.saveError}\n showAutoSaveStatus={this.formHandler.supportsAutoSave() && !!this.userId}\n readonly={this.isSubmitted}\n onSubmit={this.handleSubmit.bind(this)}\n onChange={this.handleFormChange}\n onAction={this.triggerAction}\n onFinish={this.handleFinish}\n />\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"udp-forms-renderer.entry.js","sources":["src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/BaseFormHandler.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/formUtils.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/FormHandlerFactory.ts","src/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.tsx"],"sourcesContent":["import { IFormHandler } from './IFormHandler';\nimport { UdpForm, UdpFormSubmission, UdpFormSubmissionStatus } from '../../types';\n\n/**\n * Base class for form handlers with common functionality\n */\nexport abstract class BaseFormHandler implements IFormHandler {\n abstract getForm(): Promise<UdpForm>;\n abstract submitForm(values: { [name: string]: any }): Promise<boolean>;\n\n /**\n * Default implementation - does nothing\n * Override in subclasses that support auto-save\n */\n async saveFormData(_values: { [name: string]: any }, _status: UdpFormSubmissionStatus): Promise<UdpFormSubmission> {\n // Default implementation - no-op\n return null as any;\n }\n\n /**\n * Default implementation - returns null\n * Override in subclasses that support loading existing submissions\n */\n async loadExistingSubmission(): Promise<UdpFormSubmission | null> {\n return null;\n }\n\n /**\n * Default implementation - returns true\n * Override in subclasses that don't support auto-save\n */\n supportsAutoSave(): boolean {\n return true;\n }\n}\n","/**\n * Utility function to check if an array contains File objects\n */\nexport function isFileArray(array: any): array is File[] {\n // Check if it's an array\n if (!Array.isArray(array)) {\n return false;\n }\n\n // Check if all elements in the array are instances of File\n return array.every(item => item instanceof File);\n}\n","// @ts-nocheck\nimport { BaseFormHandler } from './BaseFormHandler';\nimport { Guid, UdpForm, StyleOverrides } from '../../types';\nimport { makeApiCall, createFormData } from '../../../../../../../udp-utilities/api/makeApiCall/makeApiCall';\nimport { ConfigService } from 'src/udp-utilities/api-config';\nimport { isFileArray } from './formUtils';\n\n/**\n * Public form submission handler (legacy endpoint)\n */\nexport class PublicFormHandler extends BaseFormHandler {\n constructor(\n private formId: Guid,\n private formVersion: number,\n private tenantId: Guid\n ) {\n super();\n }\n\n private objectToFormData(obj): FormData {\n // Separate files from regular data\n const files: File[] = [];\n const formObj = {};\n\n for (let key in obj) {\n let value;\n if (obj[key]?.value) {\n value = obj[key].value;\n } else {\n value = obj[key];\n }\n\n if (isFileArray(value)) {\n // Collect files for formFiles only if there are files\n if (value.length > 0) {\n files.push(value[0]);\n formObj[key] = value[0].name;\n }\n // If no files, skip this field entirely\n } else if (Array.isArray(value)) {\n formObj[key] = value.map(item => (typeof item === 'string' ? item : item.value)).join(',');\n } else {\n // Only include fields with meaningful values\n // Skip null, undefined, or empty string values entirely\n if (value !== null && value !== undefined && value !== '') {\n formObj[key] = value;\n }\n }\n }\n\n // Use createFormData helper with the structured data\n const formData = createFormData({\n formData: JSON.stringify(formObj),\n formFiles: files[0] // Public handler only supports single file\n });\n\n return formData;\n }\n\n async getForm(): Promise<UdpForm> {\n const formData: UdpForm = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/describe/public?tenantId=${this.tenantId}`, {})\n .then(data => {\n if (data.id) {\n return data;\n } else {\n alert('form not found');\n return null;\n }\n })\n .catch(() => {\n // this would get thrown when the form exists but is private\n alert('form not found');\n return null;\n });\n if (formData.styleOverrides && typeof formData.styleOverrides === 'string') {\n formData.styleOverrides = JSON.parse(formData.styleOverrides) as StyleOverrides;\n }\n return formData;\n }\n\n async submitForm(values: { [name: string]: any }): Promise<boolean> {\n const formData = this.objectToFormData(values);\n \n return await makeApiCall(\n 'POST',\n `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/${this.formVersion}/submit/public?tenantId=${this.tenantId}`,\n formData,\n true,\n )\n .then(() => true)\n .catch(() => false);\n }\n\n\n}\n","import { BaseFormHandler } from './BaseFormHandler';\nimport { Guid, UdpForm, UdpFormSubmission, UdpFormSubmissionStatus, StyleOverrides } from '../../types';\nimport { makeApiCall, createFormData } from '../../../../../../../udp-utilities/api/makeApiCall/makeApiCall';\nimport { SearchBuilder, SearchOperators } from '../../../../../../../udp-utilities/search';\nimport { ConfigService } from 'src/udp-utilities/api-config';\nimport { isFileArray } from './formUtils';\n\n/**\n * Private form submission handler (new UdpFormSubmission endpoint)\n */\nexport class PrivateFormHandler extends BaseFormHandler {\n constructor(\n private formId: Guid,\n private formVersion: number,\n private userId: Guid,\n private existingSubmission: UdpFormSubmission | null,\n private updateExistingSubmission: (submission: UdpFormSubmission) => void\n ) {\n super();\n }\n\n async getForm(): Promise<UdpForm> {\n const formData: UdpForm = await makeApiCall(\n 'GET',\n `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}${this.formVersion ? `/${this.formVersion}` : ''}/describe`\n );\n if (formData.styleOverrides && typeof formData.styleOverrides === 'string') {\n formData.styleOverrides = JSON.parse(formData.styleOverrides) as StyleOverrides;\n }\n return formData;\n }\n\n async loadExistingSubmission(): Promise<UdpFormSubmission | null> {\n try {\n const search = new SearchBuilder(1, 1) // Only need the first result\n .addFilter('unityUserId', this.userId, SearchOperators.EQUALS)\n .addFilter('formId', this.formId, SearchOperators.EQUALS)\n .addFilter('formVersion', this.formVersion.toString(), SearchOperators.EQUALS)\n .addOrder('id', 'DESC'); // Get the most recent submission if multiple exist\n\n const response = await search.execute('UdpFormSubmission');\n\n // Check if we got any results\n if (response?.pageList && response.pageList.length > 0) {\n const submission = response.pageList[0] as UdpFormSubmission;\n this.existingSubmission = submission;\n this.updateExistingSubmission(submission);\n return submission;\n }\n\n return null;\n } catch (error) {\n console.error('Error fetching existing form response:', error);\n return null;\n }\n }\n\n private createFormDataForSubmission(data: { [name: string]: any }, status: UdpFormSubmissionStatus): FormData {\n // Convert status string to numeric value\n let statusValue: number;\n if (status === 'submitted') {\n statusValue = 2;\n } else if (status === 'in-progress') {\n statusValue = 1;\n } else {\n statusValue = typeof status === 'number' ? status : 1;\n }\n\n // Prepare the base form submission data\n const formSubmissionData: Record<string, any> = {\n FormId: this.formId,\n FormVersion: this.formVersion.toString(),\n Status: statusValue.toString(),\n };\n\n if (this.existingSubmission?.id) {\n formSubmissionData.Id = this.existingSubmission.id;\n }\n\n // Separate files from regular data\n const files: File[] = [];\n const dataWithoutFiles: Record<string, any> = {};\n\n for (let key in data) {\n let value = data[key]?.value || data[key];\n let fieldFiles = data[key]?.files; // Check if this field has associated files\n\n if (fieldFiles && Array.isArray(fieldFiles)) {\n // This field has File objects - add them to files array and use the string value for data\n files.push(...fieldFiles);\n // Only include file field in data if it has a meaningful value\n if (value && value.trim() !== '') {\n dataWithoutFiles[key] = value;\n }\n // If no files and no value, skip this field entirely\n } else if (isFileArray(value)) {\n // Legacy file handling - collect files for FormFiles\n files.push(...value);\n // Store filename in data only if there are files\n if (value.length > 0) {\n dataWithoutFiles[key] = value.map(f => f.name).join(',');\n }\n // If no files, skip this field entirely\n }else if (value instanceof File) {\n // Single file handling - add to files array and use filename in data\n files.push(value);\n dataWithoutFiles[key] = value.name;\n }\n\n else if (Array.isArray(value)) {\n dataWithoutFiles[key] = value.map(item => (typeof item === 'string' ? item : item.value)).join(',');\n } else {\n\n dataWithoutFiles[key] = value;\n\n }\n }\n\n // Add form data using the helper function\n const formData = createFormData(formSubmissionData);\n\n // Add files to FormFiles collection\n files.forEach(file => formData.append('FormFiles', file));\n\n // Convert data to Dictionary<string, string> format expected by server\n Object.keys(dataWithoutFiles).forEach(key => {\n formData.append(`Data[${key}]`, dataWithoutFiles[key]?.toString() || '');\n });\n\n return formData;\n }\n\n async saveFormData(values: { [name: string]: any }, status: UdpFormSubmissionStatus): Promise<UdpFormSubmission> {\n const formData = this.createFormDataForSubmission(values, status);\n\n let submission: UdpFormSubmission;\n\n if (this.existingSubmission) {\n // Update existing submission\n submission = await makeApiCall(\n 'PUT',\n `${ConfigService.productV1ApiUrl}/UdpFormSubmission/${this.existingSubmission.id}`,\n formData,\n true\n );\n } else {\n // Create new submission\n submission = await makeApiCall(\n 'POST',\n `${ConfigService.productV1ApiUrl}/UdpFormSubmission`,\n formData,\n true\n );\n }\n\n // Update the existing submission reference\n this.updateExistingSubmission(submission);\n return submission;\n }\n\n async submitForm(values: { [name: string]: any }): Promise<boolean> {\n try {\n\n await this.saveFormData(values, 'submitted');\n return true;\n } catch (error) {\n console.error('Private form submission failed:', error);\n return false;\n }\n }\n\n}\n","import { Build } from '@stencil/core';\nimport { IFormHandler } from './IFormHandler';\nimport { MockFormHandler } from './MockFormHandler';\nimport { PublicFormHandler } from './PublicFormHandler';\nimport { PrivateFormHandler } from './PrivateFormHandler';\nimport { Guid, UdpFormSubmission } from '../../types';\n\n/**\n * Factory for creating form handlers\n */\nexport class FormHandlerFactory {\n static create(\n isPublic: boolean,\n formId: Guid,\n version: number,\n tenantId: Guid,\n userId?: Guid | null,\n existingSubmission?: UdpFormSubmission | null,\n updateExistingSubmission?: (submission: UdpFormSubmission) => void\n ): IFormHandler {\n // Use mock handler in development\n if (Build.isDev) {\n return new MockFormHandler();\n }\n\n if (isPublic) {\n return new PublicFormHandler(formId, version, tenantId);\n } else {\n if (!userId) {\n throw new Error('User ID is required for private forms');\n }\n return new PrivateFormHandler(\n formId,\n version,\n userId,\n existingSubmission || null,\n updateExistingSubmission || (() => {})\n );\n }\n }\n}\n","import { Component, Prop, State, Element, h } from '@stencil/core';\nimport { throttle } from 'lodash';\nimport { Guid } from 'src/global/types';\nimport { UdpForm, UdpFormSubmission } from '../types';\nimport { getCurrentTenantId } from 'src/udp-utilities/tenant/tenantUtils';\nimport { IFormHandler } from './form-handler/IFormHandler';\nimport { FormHandlerFactory } from './form-handler/FormHandlerFactory';\n\n\n@Component({\n tag: 'udp-forms-renderer',\n shadow: true,\n})\nexport class UdpFormsRenderer {\n @Prop() formId: Guid;\n @Prop() version: number;\n @Prop() triggerAction: (actionId: Guid, params: Object) => void;\n @Prop() isPublic: boolean = false;\n @Prop() callbackUrl: string;\n @Prop() userId: Guid | null = null; // User ID for authenticated users\n @Prop() autoSaveDelay: number = 2000; // Debounce delay for auto-save in milliseconds (currently disabled)\n @State() form: UdpForm;\n @State() initialValues: { [name: string]: any } = {};\n @State() submitSuccessful: boolean = false;\n @Element() el: HTMLElement;\n @State() loading: boolean;\n @State() existingSubmission: UdpFormSubmission | null = null;\n @State() currentFormData: { [name: string]: any } = {};\n @State() isSaving: boolean = false;\n @State() saveError: string | null = null;\n @State() isSubmitted: boolean = false;\n @State() dynamicSections: any[] = [];\n @State() isUpdatingSections: boolean = false;\n @State() reRenderKey: number = 0;\n\n private tenantId: Guid = getCurrentTenantId();\n // private debouncedAutoSave: (values: { [name: string]: any }) => void; // Kept for future use (currently disabled)\n private debouncedManualSave: (values: { [name: string]: any }) => void; // Debounced manual save (5 seconds)\n private formHandler: IFormHandler;\n\n async componentWillLoad() {\n this.loading = true;\n this.formHandler = FormHandlerFactory.create(this.isPublic, this.formId, this.version, this.tenantId, this.userId, this.existingSubmission, submission => {\n this.existingSubmission = submission;\n });\n\n // Set up debounced auto-save function (currently disabled)\n // this.debouncedAutoSave = debounce(async (values: { [name: string]: any }) => {\n // // await this.handleAutoSave(values); // Disabled for now\n // }, this.autoSaveDelay);\n\n // Set up throttled manual save function (5 seconds) - fires immediately, then throttles\n this.debouncedManualSave = throttle(async (values: { [name: string]: any }) => {\n await this.handleManualSave(values);\n }, 2000, { leading: true, trailing: false });\n\n if (this.formId && this.version) {\n await this.loadForm();\n }\n this.loading = false;\n }\n\n private async loadForm() {\n try {\n // Load form structure\n const formData = await this.formHandler.getForm();\n this.form = formData;\n\n // Try to load existing submission if handler supports it\n if (this.userId && this.formHandler.loadExistingSubmission) {\n const existingData = await this.formHandler.loadExistingSubmission();\n\n if (existingData) {\n this.existingSubmission = existingData;\n this.initialValues = existingData.data || {};\n // Check if the form is submitted (status 2)\n if (existingData.status === 2) {\n this.isSubmitted = true;\n }\n this.currentFormData = { ...this.initialValues };\n\n if (existingData.status === 2 || existingData.status === 'submitted') {\n this.isSubmitted = true;\n }\n }\n }\n this.initializeDynamicSections();\n } catch (error) {\n console.error('Failed to load form:', error);\n }\n }\n\n // build dynamic sections based on the\n private initializeDynamicSections() {\n const tempDynamicSection: any[] = [];\n const sortedSections = structuredClone(this.form.udpFormUdpFormSection).sort((a, b) => a.order - b.order);\n\n for (const section of sortedSections) {\n section.name = `section${section.order}`; // THIS LINE WILL NOT BE NECESSARY SOON AFTER BACKEND UPDATE\n section.sectionProperties = JSON.parse(section.sectionProperties || \"{}\");\n const repeatGroupKeys = this.findRepeatGroupKeys(section.name, this.initialValues);\n section.isOriginalSection = true;\n section.sectionPositionSuffix = 1; // default position\n\n // always add the original section into dynamic sections\n tempDynamicSection.push({\n ...structuredClone(section),\n formQuestions: structuredClone(this.form.formQuestions)\n .filter(q => q.formSectionId === section.id)\n .sort((a, b) => a.questionOrder - b.questionOrder)\n .map(q => ({ ...q, processedSubmissionName: `${section.name}-${q.name}` })),\n });\n\n // create then add additional sections if there are repeated sections\n if (section.sectionProperties?.isRepeatable && repeatGroupKeys.length > 0) {\n const maxRepeatedSectionSuffix = Math.max(...repeatGroupKeys); // create a new section for the max value of repeat group keys, even if there are no saved answers\n\n // for (const repeatKey of repeatGroupKeys) { // create a section only for the suffix saved\n for (let repeatKey = 2; repeatKey <= maxRepeatedSectionSuffix; repeatKey++) {\n const clonedSection = {\n ...structuredClone(section),\n formQuestions: structuredClone(this.form.formQuestions)\n .filter(q => q.formSectionId === section.id)\n .sort((a, b) => a.questionOrder - b.questionOrder)\n .map(q => ({ ...q, processedSubmissionName: `${section.name}_${repeatKey}-${q.name}` })),\n isOriginalSection: false,\n sectionPositionSuffix: repeatKey,\n };\n tempDynamicSection.push(clonedSection);\n }\n }\n }\n\n console.log('tempDynamicSection', tempDynamicSection);\n\n this.dynamicSections = tempDynamicSection;\n }\n\n private findRepeatGroupKeys(sectionName: string, values: Object): number[] {\n const keys = Object.keys(values);\n const repeatGroupSet = new Set<number>();\n\n // Match: sectionName_2-question1\n const regex = new RegExp(`^${sectionName}_(\\\\d+)-`);\n\n keys.forEach(key => {\n const match = key.match(regex);\n if (match && match[1]) {\n repeatGroupSet.add(Number(match[1]));\n }\n });\n\n return Array.from(repeatGroupSet).sort((a, b) => a - b);\n }\n\n /**\n * Duplicate a repeatable section\n */\n private duplicateRepeatableSection = (index: number) => {\n if (this.isSubmitted || this.isUpdatingSections) return;\n this.isUpdatingSections = true;\n this.loading = true;\n\n try {\n const sectionToClone = this.dynamicSections[index];\n if (!sectionToClone) return;\n\n const cloningSectionName = sectionToClone.name;\n\n // Find existing repeat group indices\n const repeatKeys = this.findRepeatGroupKeys(cloningSectionName, this.initialValues);\n const nextRepeatIndex = repeatKeys.length > 0 ? Math.max(...repeatKeys) + 1 : 2;\n\n const clonedSection = {\n ...structuredClone(sectionToClone),\n formQuestions: sectionToClone.formQuestions.map(q => ({\n ...structuredClone(q),\n processedSubmissionName: `${cloningSectionName}_${nextRepeatIndex}-${q.name}`,\n })),\n isOriginalSection: false,\n sectionPositionSuffix: nextRepeatIndex,\n };\n\n // Find the last index of this section group\n let insertAtIndex = index;\n for (let i = index + 1; i < this.dynamicSections.length; i++) {\n const s = this.dynamicSections[i];\n if (s.name === cloningSectionName) {\n insertAtIndex = i;\n } else {\n break;\n }\n }\n\n // Insert after the last repeat of the section group\n this.dynamicSections = [...this.dynamicSections.slice(0, insertAtIndex + 1), clonedSection, ...this.dynamicSections.slice(insertAtIndex + 1)];\n\n // Create new initial values structure\n const newInitialValues = { ...this.currentFormData };\n\n clonedSection.formQuestions.forEach(q => {\n newInitialValues[q.processedSubmissionName] = null;\n });\n\n // This will trigger a complete form re-render\n this.initialValues = newInitialValues;\n this.currentFormData = newInitialValues;\n this.reRenderKey += 1;\n } finally {\n this.isUpdatingSections = false;\n this.loading = false\n }\n };\n\n /**\n * Delete a repeatable section\n */\n private deleteRepeatableSection = (index: number) => {\n if (this.isSubmitted) return;\n\n const sectionToDelete = this.dynamicSections[index];\n if (!sectionToDelete || sectionToDelete.isOriginalSection) return;\n\n this.isUpdatingSections = true;\n this.loading = true;\n\n try {\n const deleteSectionName = sectionToDelete.name;\n\n // Remove the section's initial values\\\n console.log('currentformdata', this.currentFormData)\n const newInitialValues = { ...this.currentFormData };\n\n sectionToDelete.formQuestions.forEach(q => {\n delete newInitialValues[q.processedSubmissionName];\n });\n\n // Remove the section from dynamicSections\n const updatedSections = structuredClone(this.dynamicSections);\n updatedSections.splice(index, 1);\n\n let suffixCounter = 2;\n\n updatedSections.forEach(section => {\n // no need to process unrelated sections or originalSections\n if (section.name !== deleteSectionName || section.isOriginalSection) {\n return;\n }\n\n section.sectionPositionSuffix = suffixCounter;\n suffixCounter += 1;\n\n section.formQuestions = section.formQuestions.map(q => {\n const newName = `${deleteSectionName}_${section.sectionPositionSuffix}-${q.name}`;\n const oldName = q.processedSubmissionName;\n\n // Carry over any existing value\n if (newInitialValues[oldName] !== undefined) {\n newInitialValues[newName] = newInitialValues[oldName];\n delete newInitialValues[oldName];\n }\n\n return {\n ...q,\n processedSubmissionName: newName,\n };\n });\n \n });\n\n this.dynamicSections = updatedSections;\n this.initialValues = newInitialValues;\n this.currentFormData = newInitialValues;\n this.reRenderKey += 1;\n\n\n console.log('newInitialValues', newInitialValues)\n } finally {\n this.isUpdatingSections = false;\n this.loading = false\n }\n };\n\n\n private async handleSubmit(values: { [name: string]: any }) {\n try {\n const success = await this.formHandler.submitForm(values);\n this.submitSuccessful = success;\n } catch (error) {\n console.error('Form submission failed:', error);\n throw error;\n }\n }\n\n /**\n * Manual save function - debounced to 5 seconds\n */\n private handleManualSave = async (values: { [name: string]: any }) => {\n // Only save if handler supports it and user is authenticated\n if (!this.formHandler.supportsAutoSave() || !this.userId || !this.formHandler.saveFormData) {\n return;\n }\n\n this.isSaving = true;\n this.saveError = null;\n\n try {\n await this.formHandler.saveFormData(values, 'in-progress');\n this.currentFormData = { ...values };\n console.log('Form saved successfully');\n } catch (error) {\n console.error('Manual save failed:', error);\n this.saveError = 'Failed to save form data';\n } finally {\n this.isSaving = false;\n }\n }\n\n\n private handleFormChange = (values: { [name: string]: any }) => {\n if (this.isUpdatingSections) return;\n this.currentFormData = values;\n };\n\n\n private handleFinish = () => {\n // Trigger any finish actions\n if (this.triggerAction) {\n this.triggerAction(null as any, { action: 'finish' });\n }\n };\n\n\n render() {\n if (this.loading) {\n return (\n <div class=\"loading-container\">\n <unity-spinner size=\"medium\" />\n </div>\n );\n }\n\n if (!this.form) {\n return (\n <div class=\"error-container\">\n <unity-typography variant=\"body1\">Form not found</unity-typography>\n </div>\n );\n }\n\n return (\n <div class=\"forms-renderer-container\">\n <udp-forms-ui\n form={this.form}\n initialValues={this.initialValues}\n submitSuccessful={this.submitSuccessful}\n isSaving={this.isSaving}\n saveError={this.saveError}\n showAutoSaveStatus={this.formHandler.supportsAutoSave() && !!this.userId}\n readonly={this.isSubmitted}\n currentFormData={this.currentFormData}\n handleSubmit={this.handleSubmit.bind(this)}\n handleSave={(values) => Promise.resolve(this.debouncedManualSave(values))}\n handleChange={this.handleFormChange}\n handleAction={this.triggerAction}\n handleFinish={this.handleFinish}\n userId={this.userId}\n isSubmitted={this.isSubmitted}\n dynamicSections={this.dynamicSections}\n duplicateRepeatableSection={this.duplicateRepeatableSection}\n deleteRepeatableSection={this.deleteRepeatableSection}\n key={`form-${this.reRenderKey}`}\n />\n </div>\n );\n }\n}\n"],"names":[],"mappings":"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"}