@wavemaker-ai/react-runtime 1.0.0-rc.309 → 1.0.0-rc.314

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 (574) hide show
  1. package/.npmignore +4 -0
  2. package/actions/base-action.js +12 -29
  3. package/actions/login-action.js +35 -52
  4. package/actions/logout-action.js +21 -38
  5. package/actions/navigation-action.js +251 -346
  6. package/actions/notification-action.js +121 -149
  7. package/actions/timer-action.js +95 -151
  8. package/actions/toast-provider.js +62 -76
  9. package/actions/toast.js +95 -91
  10. package/actions/toast.service.js +59 -79
  11. package/actions/types/index.js +6 -9
  12. package/components/advanced/carousel/index.js +358 -366
  13. package/components/advanced/carousel/props.js +0 -5
  14. package/components/advanced/carousel/template.js +102 -80
  15. package/components/advanced/login/index.js +227 -285
  16. package/components/advanced/login/props.js +0 -5
  17. package/components/advanced/marquee/index.js +169 -163
  18. package/components/advanced/marquee/props.js +0 -5
  19. package/components/basic/anchor/index.js +207 -187
  20. package/components/basic/anchor/props.js +0 -5
  21. package/components/basic/audio/index.js +110 -72
  22. package/components/basic/audio/props.js +0 -5
  23. package/components/basic/html/index.js +163 -203
  24. package/components/basic/html/props.js +0 -5
  25. package/components/basic/html/utils.js +30 -28
  26. package/components/basic/icon/index.js +98 -84
  27. package/components/basic/icon/props.js +0 -5
  28. package/components/basic/iframe/iframe.utils.js +7 -16
  29. package/components/basic/iframe/index.js +97 -103
  30. package/components/basic/iframe/props.js +0 -5
  31. package/components/basic/label/index.js +156 -134
  32. package/components/basic/label/props.js +0 -5
  33. package/components/basic/message/index.js +129 -113
  34. package/components/basic/message/props.js +0 -5
  35. package/components/basic/picture/index.js +156 -127
  36. package/components/basic/picture/props.js +0 -5
  37. package/components/basic/progress-bar/index.js +240 -176
  38. package/components/basic/progress-bar/props.js +5 -31
  39. package/components/basic/progress-circle/index.js +166 -183
  40. package/components/basic/progress-circle/props.js +14 -34
  41. package/components/basic/richtexteditor/index.js +430 -396
  42. package/components/basic/richtexteditor/props.js +0 -5
  43. package/components/basic/search/index.js +812 -931
  44. package/components/basic/search/props.js +0 -5
  45. package/components/basic/search/providers.js +233 -380
  46. package/components/basic/spinner/index.js +210 -200
  47. package/components/basic/spinner/props.js +4 -22
  48. package/components/basic/tile/index.js +73 -81
  49. package/components/basic/tile/props.js +0 -5
  50. package/components/basic/tree/Components/TreeNodeComponent.js +238 -170
  51. package/components/basic/tree/hooks/useTreePartialNodeApi.js +143 -135
  52. package/components/basic/tree/index.js +378 -454
  53. package/components/basic/tree/props.js +0 -5
  54. package/components/basic/tree/utils.js +129 -185
  55. package/components/basic/video/index.js +161 -107
  56. package/components/basic/video/props.js +0 -5
  57. package/components/chart/index.js +42 -50
  58. package/components/chart/props.js +31 -37
  59. package/components/chart/src/ChartRenderer.js +172 -154
  60. package/components/chart/src/chart.js +391 -213
  61. package/components/chart/src/chartStyles.generated.js +6 -14
  62. package/components/chart/src/chartUtils.js +228 -272
  63. package/components/chart/src/constants.d.ts +13 -0
  64. package/components/chart/src/constants.js +316 -90
  65. package/components/chart/src/d3Setup.js +11 -30
  66. package/components/chart/src/dataUtils.js +362 -446
  67. package/components/chart/src/formatUtils.js +47 -38
  68. package/components/chart/src/index.js +11 -19
  69. package/components/chart/src/nvd3Source.generated.js +5 -13
  70. package/components/chart/src/pieDonutResponsiveLayout.d.ts +5 -0
  71. package/components/chart/src/pieDonutResponsiveLayout.js +76 -96
  72. package/components/chart/src/types.js +0 -5
  73. package/components/common/AppSpinner.js +17 -33
  74. package/components/common/app-spinner.js +11 -22
  75. package/components/common/customTemplate/index.d.ts +3 -0
  76. package/components/common/customTemplate/index.js +6 -0
  77. package/components/common/customTemplate/props.d.ts +20 -0
  78. package/components/common/customTemplate/props.js +0 -0
  79. package/components/common/customTemplate/template.d.ts +3 -0
  80. package/components/common/customTemplate/template.js +27 -0
  81. package/components/common/customTemplate/useCustomTemplate.d.ts +8 -0
  82. package/components/common/customTemplate/useCustomTemplate.js +17 -0
  83. package/components/common/customTemplate/utils.d.ts +6 -0
  84. package/components/common/customTemplate/utils.js +12 -0
  85. package/components/common/index.js +4 -12
  86. package/components/constants.js +81 -77
  87. package/components/container/accordion/accordion-pane/index.js +105 -118
  88. package/components/container/accordion/accordion-pane/props.js +5 -21
  89. package/components/container/accordion/index.js +225 -243
  90. package/components/container/accordion/props.js +5 -16
  91. package/components/container/index.js +214 -150
  92. package/components/container/layout-grid/grid-column/index.js +68 -43
  93. package/components/container/layout-grid/grid-column/props.js +0 -5
  94. package/components/container/layout-grid/grid-row/index.js +12 -29
  95. package/components/container/layout-grid/grid-row/props.js +0 -5
  96. package/components/container/layout-grid/index.js +53 -38
  97. package/components/container/layout-grid/props.js +0 -5
  98. package/components/container/linear-layout/index.js +56 -60
  99. package/components/container/linear-layout/linear-layout-item/index.js +43 -47
  100. package/components/container/linear-layout/linear-layout-item/props.js +0 -5
  101. package/components/container/linear-layout/props.js +0 -5
  102. package/components/container/panel/components/panel-content/index.js +7 -16
  103. package/components/container/panel/components/panel-header/index.js +166 -146
  104. package/components/container/panel/components/panel-header/props.js +0 -5
  105. package/components/container/panel/hooks.js +76 -102
  106. package/components/container/panel/index.js +289 -252
  107. package/components/container/panel/props.js +0 -5
  108. package/components/container/props.js +0 -5
  109. package/components/container/repeat-template/index.js +65 -44
  110. package/components/container/repeat-template/props.js +0 -5
  111. package/components/container/tabs/index.js +517 -526
  112. package/components/container/tabs/props.js +5 -28
  113. package/components/container/tabs/tab-pane/index.js +105 -100
  114. package/components/container/tabs/tab-pane/props.js +0 -5
  115. package/components/container/tabs/utils.js +30 -35
  116. package/components/container/wizard/WizardContext.js +9 -11
  117. package/components/container/wizard/components/StepComponents.js +76 -99
  118. package/components/container/wizard/components/WizardStep.js +107 -85
  119. package/components/container/wizard/index.js +791 -921
  120. package/components/container/wizard/props.js +0 -5
  121. package/components/container/wizard/utils.js +97 -131
  122. package/components/container/wizard/wizard-action/index.js +41 -81
  123. package/components/container/wizard/wizard-step/index.js +140 -120
  124. package/components/data/card/card-actions/index.js +13 -31
  125. package/components/data/card/card-content/index.js +27 -36
  126. package/components/data/card/card-footer/index.js +13 -31
  127. package/components/data/card/index.js +192 -199
  128. package/components/data/card/props.js +0 -5
  129. package/components/data/form/base-form/constant.js +5 -8
  130. package/components/data/form/base-form/hooks/index.js +26 -77
  131. package/components/data/form/base-form/hooks/useFormDataSync.js +106 -212
  132. package/components/data/form/base-form/hooks/useFormOperations.js +109 -161
  133. package/components/data/form/base-form/hooks/useFormSubmission.js +220 -280
  134. package/components/data/form/base-form/hooks/useFormValidation.js +119 -168
  135. package/components/data/form/base-form/hooks/useParentFormRelationship.js +67 -103
  136. package/components/data/form/base-form/index.js +531 -646
  137. package/components/data/form/base-form/props.js +74 -151
  138. package/components/data/form/base-form/utils.js +210 -323
  139. package/components/data/form/dynamic-fields/constant.js +43 -53
  140. package/components/data/form/dynamic-fields/index.js +135 -144
  141. package/components/data/form/dynamic-fields/props.js +0 -5
  142. package/components/data/form/dynamic-fields/utils.js +99 -158
  143. package/components/data/form/form-action/index.js +107 -85
  144. package/components/data/form/form-body/index.js +52 -26
  145. package/components/data/form/form-context.js +43 -59
  146. package/components/data/form/form-controller/hooks/index.js +43 -57
  147. package/components/data/form/form-controller/props.js +5 -8
  148. package/components/data/form/form-controller/utils.js +54 -49
  149. package/components/data/form/form-controller/validation-contrustor.js +203 -426
  150. package/components/data/form/form-controller/withFormController.js +319 -269
  151. package/components/data/form/form-dynamic-section/index.js +47 -41
  152. package/components/data/form/form-dynamic-section/props.js +0 -5
  153. package/components/data/form/form-field/base-field.js +97 -109
  154. package/components/data/form/form-field/index.js +91 -82
  155. package/components/data/form/form-field/props.js +0 -5
  156. package/components/data/form/form-footer/index.js +52 -25
  157. package/components/data/form/form-header/index.js +61 -58
  158. package/components/data/form/index.js +95 -74
  159. package/components/data/form/props.js +0 -5
  160. package/components/data/list/components/GroupHeader.js +34 -33
  161. package/components/data/list/components/GroupedListItems.js +108 -104
  162. package/components/data/list/components/ListContainer.js +22 -27
  163. package/components/data/list/components/ListDND.js +193 -185
  164. package/components/data/list/components/ListHeader.js +32 -49
  165. package/components/data/list/components/ListItem.js +153 -146
  166. package/components/data/list/components/ListItemWithTemplate.js +87 -105
  167. package/components/data/list/components/ListItems.js +180 -194
  168. package/components/data/list/components/ListPagination.js +127 -153
  169. package/components/data/list/components/LoadMoreButton.js +25 -33
  170. package/components/data/list/components/NoDataMessage.js +9 -22
  171. package/components/data/list/components/StandardListItems.js +79 -85
  172. package/components/data/list/components/index.js +31 -119
  173. package/components/data/list/components/props.js +0 -5
  174. package/components/data/list/hooks/index.js +22 -75
  175. package/components/data/list/hooks/props.js +0 -5
  176. package/components/data/list/hooks/useCurrentPageItems.js +20 -38
  177. package/components/data/list/hooks/useGroupedData.js +19 -33
  178. package/components/data/list/hooks/useListData.js +17 -47
  179. package/components/data/list/hooks/useListEffects.js +168 -237
  180. package/components/data/list/hooks/useListEventHandlers.js +301 -285
  181. package/components/data/list/hooks/useListPagination.js +90 -136
  182. package/components/data/list/hooks/useListState.js +49 -91
  183. package/components/data/list/hooks/useListStateManager.js +104 -159
  184. package/components/data/list/hooks/usePaginatedGroupedData.js +74 -110
  185. package/components/data/list/index.d.ts +1 -0
  186. package/components/data/list/index.js +579 -621
  187. package/components/data/list/props.d.ts +4 -0
  188. package/components/data/list/props.js +0 -5
  189. package/components/data/list/templates/media-template.js +29 -50
  190. package/components/data/list/utils/constants.js +20 -32
  191. package/components/data/list/utils/list-helpers.d.ts +2 -1
  192. package/components/data/list/utils/list-helpers.js +71 -115
  193. package/components/data/list/utils/list-widget-methods.js +56 -76
  194. package/components/data/list/utils/widget-instance-utils.js +20 -57
  195. package/components/data/live-filter/index.js +219 -271
  196. package/components/data/live-filter/props.js +5 -12
  197. package/components/data/live-form/index.js +68 -91
  198. package/components/data/live-form/props.js +5 -12
  199. package/components/data/pagination/components/BasicPagination.js +124 -104
  200. package/components/data/pagination/components/ClassicPagination.js +167 -190
  201. package/components/data/pagination/components/InlinePagination.js +97 -98
  202. package/components/data/pagination/components/LoadingComponent.js +17 -30
  203. package/components/data/pagination/components/PageSizeSelector.js +176 -169
  204. package/components/data/pagination/components/PagerNavigation.js +84 -105
  205. package/components/data/pagination/components/TotalRecords.js +48 -47
  206. package/components/data/pagination/components/index.js +14 -47
  207. package/components/data/pagination/components/props.js +0 -5
  208. package/components/data/pagination/hooks/index.js +6 -19
  209. package/components/data/pagination/hooks/props.js +0 -5
  210. package/components/data/pagination/hooks/useNavigationSize.js +12 -21
  211. package/components/data/pagination/hooks/usePagination.js +702 -905
  212. package/components/data/pagination/index.js +336 -389
  213. package/components/data/table/components/AddNewRow.js +122 -154
  214. package/components/data/table/components/EditableCell.js +68 -75
  215. package/components/data/table/components/FieldValidationError.js +19 -20
  216. package/components/data/table/components/RowCells.js +97 -80
  217. package/components/data/table/components/RowExpansionButton.js +43 -39
  218. package/components/data/table/components/SummaryCell.js +54 -88
  219. package/components/data/table/components/SummaryRow.js +45 -52
  220. package/components/data/table/components/SummaryRowFooter.js +35 -42
  221. package/components/data/table/components/TableBody.js +222 -218
  222. package/components/data/table/components/TableDataRow.js +113 -106
  223. package/components/data/table/components/TableFilters.js +391 -390
  224. package/components/data/table/components/TableFooterActions.js +25 -32
  225. package/components/data/table/components/TableHeader.js +460 -435
  226. package/components/data/table/components/TablePanelHeading.js +157 -181
  227. package/components/data/table/components/index.js +27 -95
  228. package/components/data/table/hooks/index.js +21 -230
  229. package/components/data/table/hooks/use-edited-rows.js +59 -94
  230. package/components/data/table/hooks/useCellState.js +58 -83
  231. package/components/data/table/hooks/useCustomExpressionColumns.js +65 -86
  232. package/components/data/table/hooks/useDynamicColumns.js +59 -92
  233. package/components/data/table/hooks/useEditingState.js +30 -41
  234. package/components/data/table/hooks/useFormWidget.js +163 -172
  235. package/components/data/table/hooks/usePaginationState.js +67 -77
  236. package/components/data/table/hooks/usePanelStructure.js +47 -41
  237. package/components/data/table/hooks/useResponsiveColumns.js +14 -20
  238. package/components/data/table/hooks/useRowExpansion.js +131 -127
  239. package/components/data/table/hooks/useRowHandlers.js +56 -69
  240. package/components/data/table/hooks/useRowSelection.js +249 -329
  241. package/components/data/table/hooks/useServerSideSorting.js +109 -175
  242. package/components/data/table/hooks/useTableColumns.js +322 -331
  243. package/components/data/table/hooks/useTableData.js +111 -166
  244. package/components/data/table/hooks/useTableEdit.js +526 -564
  245. package/components/data/table/hooks/useTableEffects.js +60 -107
  246. package/components/data/table/hooks/useTableFilter.js +244 -237
  247. package/components/data/table/hooks/useTableInitialization.js +44 -76
  248. package/components/data/table/hooks/useTableState.js +39 -61
  249. package/components/data/table/hooks/useTableStateManager.js +295 -468
  250. package/components/data/table/index.js +1553 -1713
  251. package/components/data/table/live-table/index.js +157 -219
  252. package/components/data/table/props.js +0 -5
  253. package/components/data/table/table-action/index.js +97 -75
  254. package/components/data/table/table-column/index.js +48 -42
  255. package/components/data/table/table-group/index.js +7 -25
  256. package/components/data/table/table-row/index.js +63 -55
  257. package/components/data/table/table-row-action/index.js +102 -77
  258. package/components/data/table/utils/buildSelectionColumns.js +86 -137
  259. package/components/data/table/utils/columnBuilder.js +116 -158
  260. package/components/data/table/utils/columnProxy.js +48 -66
  261. package/components/data/table/utils/columnWidthDistribution.js +40 -64
  262. package/components/data/table/utils/constants.js +92 -40
  263. package/components/data/table/utils/crud-handlers.js +292 -473
  264. package/components/data/table/utils/dynamic-columns.js +99 -144
  265. package/components/data/table/utils/groupHeaderUtils.js +36 -61
  266. package/components/data/table/utils/index.d.ts +8 -5
  267. package/components/data/table/utils/index.js +419 -639
  268. package/components/data/table/utils/renderDisplayCell.js +127 -169
  269. package/components/data/table/utils/script-page-size-broadcast.js +17 -29
  270. package/components/data/table/utils/selectionUtils.js +59 -113
  271. package/components/data/table/utils/table-helpers.js +38 -74
  272. package/components/data/table/utils/validation.js +35 -78
  273. package/components/data/table/utils/widgetMapping.d.ts +5 -0
  274. package/components/data/table/utils/widgetMapping.js +41 -0
  275. package/components/data/types.js +112 -112
  276. package/components/data/utils/field-data-utils.js +38 -42
  277. package/components/data/utils/filter-field-util.js +42 -44
  278. package/components/data/utils/index.js +112 -111
  279. package/components/dialogs/alert-dialog/index.js +83 -78
  280. package/components/dialogs/alert-dialog/props.js +0 -5
  281. package/components/dialogs/confirm-dialog/index.js +102 -92
  282. package/components/dialogs/confirm-dialog/props.js +0 -5
  283. package/components/dialogs/dialog/index.js +93 -69
  284. package/components/dialogs/dialog/props.js +0 -5
  285. package/components/dialogs/dialog-actions/index.js +12 -26
  286. package/components/dialogs/dialog-actions/props.js +0 -5
  287. package/components/dialogs/dialog-body/index.js +13 -30
  288. package/components/dialogs/dialog-body/props.js +0 -5
  289. package/components/dialogs/dialog-content/index.js +48 -41
  290. package/components/dialogs/dialog-content/props.js +0 -5
  291. package/components/dialogs/dialog-header/index.js +88 -101
  292. package/components/dialogs/dialog-header/props.js +0 -5
  293. package/components/dialogs/iframe-dialog/index.js +136 -128
  294. package/components/dialogs/iframe-dialog/props.js +0 -5
  295. package/components/dialogs/index.js +104 -101
  296. package/components/dialogs/login-dialog/index.js +285 -347
  297. package/components/dialogs/login-dialog/props.js +0 -5
  298. package/components/dialogs/page-dialog/index.js +95 -86
  299. package/components/dialogs/page-dialog/props.js +0 -5
  300. package/components/dialogs/props.js +0 -5
  301. package/components/dialogs/withDialogWrapper.js +110 -83
  302. package/components/form/button/index.js +296 -245
  303. package/components/form/button/props.js +0 -5
  304. package/components/form/button-group/index.js +80 -69
  305. package/components/form/button-group/props.js +0 -5
  306. package/components/input/calendar/index.js +409 -362
  307. package/components/input/calendar/props.js +0 -5
  308. package/components/input/calendar/utils.js +164 -172
  309. package/components/input/chips/SortableChip/index.js +109 -100
  310. package/components/input/chips/SortableChip/props.js +0 -5
  311. package/components/input/chips/index.js +663 -570
  312. package/components/input/chips/props.js +0 -5
  313. package/components/input/chips/utils.js +131 -122
  314. package/components/input/color-picker/index.js +536 -594
  315. package/components/input/color-picker/props.js +0 -5
  316. package/components/input/composite/index.js +71 -110
  317. package/components/input/composite/props.js +0 -5
  318. package/components/input/currency/index.js +277 -224
  319. package/components/input/currency/props.js +0 -5
  320. package/components/input/default/checkbox/index.js +329 -250
  321. package/components/input/default/checkbox/props.js +0 -5
  322. package/components/input/default/checkboxset/index.d.ts +2 -0
  323. package/components/input/default/checkboxset/index.js +529 -446
  324. package/components/input/default/checkboxset/props.d.ts +4 -0
  325. package/components/input/default/checkboxset/props.js +0 -5
  326. package/components/input/default/checkboxset/utils.js +15 -25
  327. package/components/input/default/radioset/index.d.ts +2 -0
  328. package/components/input/default/radioset/index.js +409 -350
  329. package/components/input/default/radioset/props.d.ts +6 -0
  330. package/components/input/default/radioset/props.js +0 -5
  331. package/components/input/default/switch/index.js +494 -458
  332. package/components/input/default/switch/prop.js +0 -5
  333. package/components/input/epoch/date/components/DatePickerPopover.js +242 -193
  334. package/components/input/epoch/date/index.js +638 -518
  335. package/components/input/epoch/date/props.js +0 -5
  336. package/components/input/epoch/date/styled.js +61 -70
  337. package/components/input/epoch/date/utils.js +67 -115
  338. package/components/input/epoch/datetime/index.js +758 -695
  339. package/components/input/epoch/datetime/props.js +0 -5
  340. package/components/input/epoch/datetime/utils.js +121 -186
  341. package/components/input/epoch/time/index.js +441 -415
  342. package/components/input/epoch/time/props.js +0 -5
  343. package/components/input/epoch/time/utils.js +101 -112
  344. package/components/input/fileupload/Utils.js +70 -97
  345. package/components/input/fileupload/components/ListItems.js +132 -130
  346. package/components/input/fileupload/components/MultiUpload.js +80 -77
  347. package/components/input/fileupload/components/SingleUpload.js +57 -57
  348. package/components/input/fileupload/index.js +253 -178
  349. package/components/input/fileupload/props.js +0 -5
  350. package/components/input/fileupload/useFileUpload.js +209 -258
  351. package/components/input/number/index.js +434 -393
  352. package/components/input/number/props.js +0 -5
  353. package/components/input/rating/index.js +401 -394
  354. package/components/input/rating/props.js +0 -5
  355. package/components/input/select/index.js +408 -463
  356. package/components/input/select/props.js +0 -5
  357. package/components/input/slider/index.js +339 -332
  358. package/components/input/slider/props.js +0 -5
  359. package/components/input/text/index.d.ts +3 -3
  360. package/components/input/text/index.js +438 -475
  361. package/components/input/text/props.d.ts +1 -1
  362. package/components/input/text/props.js +0 -5
  363. package/components/input/text/util.js +82 -222
  364. package/components/input/textarea/index.js +322 -358
  365. package/components/input/textarea/props.js +0 -5
  366. package/components/input/upload/index.js +135 -131
  367. package/components/input/upload/props.js +0 -5
  368. package/components/input/util/index.js +9 -11
  369. package/components/layout/footer/index.js +12 -35
  370. package/components/layout/footer/props.js +0 -5
  371. package/components/layout/header/index.js +12 -38
  372. package/components/layout/header/props.js +0 -5
  373. package/components/layout/leftnav/index.js +38 -44
  374. package/components/layout/leftnav/props.js +0 -5
  375. package/components/layout/rightnav/index.js +12 -36
  376. package/components/layout/rightnav/props.js +0 -5
  377. package/components/layout/topnav/index.js +24 -38
  378. package/components/layout/topnav/props.js +0 -5
  379. package/components/navbar/index.js +119 -98
  380. package/components/navbar/nav/index.js +236 -232
  381. package/components/navbar/nav/props.js +0 -5
  382. package/components/navbar/nav-item/index.js +74 -65
  383. package/components/navbar/nav-item/props.js +0 -5
  384. package/components/navigation/breadcrumb/index.js +38 -61
  385. package/components/navigation/breadcrumb/props.js +0 -5
  386. package/components/navigation/menu/components/ListItems.js +76 -67
  387. package/components/navigation/menu/constants.js +27 -42
  388. package/components/navigation/menu/hooks/useHoverState.hook.js +20 -47
  389. package/components/navigation/menu/hooks/useKeyboardMovements.hook.js +34 -28
  390. package/components/navigation/menu/hooks/useTransformedDataset.hook.js +21 -14
  391. package/components/navigation/menu/index.js +911 -846
  392. package/components/navigation/menu/props.js +0 -5
  393. package/components/navigation/menu/utils/action-task.js +6 -9
  394. package/components/navigation/menu/utils/role-filter.js +41 -56
  395. package/components/navigation/popover/index.js +191 -205
  396. package/components/navigation/popover/props.js +5 -8
  397. package/components/page/content/index.js +9 -31
  398. package/components/page/content/props.js +0 -5
  399. package/components/page/error-boundary/index.js +115 -105
  400. package/components/page/error-boundary/props.js +0 -5
  401. package/components/page/index.js +84 -102
  402. package/components/page/page-content/index.js +21 -30
  403. package/components/page/page-content/props.js +0 -5
  404. package/components/page/partial/index.js +50 -45
  405. package/components/page/partial/props.js +0 -5
  406. package/components/page/partial-container/index.js +81 -107
  407. package/components/page/partial-container/props.d.ts +1 -1
  408. package/components/page/partial-container/props.js +0 -5
  409. package/components/page/props.js +0 -5
  410. package/components/page/toast-container/index.js +20 -41
  411. package/components/page/toast-container/props.js +0 -5
  412. package/components/prefab/container/index.js +60 -53
  413. package/components/prefab/container/props.js +0 -5
  414. package/components/prefab/index.js +76 -61
  415. package/components/prefab/props.js +0 -5
  416. package/context/AppContext.d.ts +1 -1
  417. package/context/AppContext.js +17 -18
  418. package/context/AppSpinnerProvider.js +19 -34
  419. package/context/LayoutProvider.js +54 -57
  420. package/context/LocalizationProvider.js +34 -49
  421. package/context/PrefabContext.js +68 -119
  422. package/context/WidgetProvider.js +160 -166
  423. package/core/app-config.js +0 -1
  424. package/core/app.service.js +200 -327
  425. package/core/appVariablesStore.js +10 -15
  426. package/core/appstore.js +37 -53
  427. package/core/constants/currency-constant.js +81 -83
  428. package/core/constants/events.js +34 -44
  429. package/core/constants/index.js +21 -31
  430. package/core/dialog.service.js +52 -72
  431. package/core/event-notifier.js +94 -131
  432. package/core/formatter/array-formatters.js +18 -32
  433. package/core/formatter/date-formatters.js +140 -204
  434. package/core/formatter/index.js +64 -117
  435. package/core/formatter/number-formatters.js +115 -159
  436. package/core/formatter/security-formatters.js +233 -283
  437. package/core/formatter/string-formatters.js +23 -45
  438. package/core/formatter/types.js +12 -18
  439. package/core/formatters.js +6 -24
  440. package/core/proxy-service.js +242 -306
  441. package/core/script-registry.js +87 -134
  442. package/core/security.service.js +8 -11
  443. package/core/util/compare.js +13 -25
  444. package/core/util/dom.js +32 -63
  445. package/core/util/index.d.ts +5 -0
  446. package/core/util/index.js +95 -95
  447. package/core/util/safe-is-equal.js +42 -94
  448. package/core/util/security.js +114 -153
  449. package/core/util/utils.d.ts +8 -1
  450. package/core/util/utils.js +124 -132
  451. package/core/widget-observer.js +34 -61
  452. package/higherOrder/BaseApp.js +327 -500
  453. package/higherOrder/BaseAppProps.js +0 -5
  454. package/higherOrder/BaseDateTime.js +277 -231
  455. package/higherOrder/BasePage.js +479 -735
  456. package/higherOrder/BasePartial.js +87 -114
  457. package/higherOrder/BasePrefab.js +190 -206
  458. package/higherOrder/DataNav.js +287 -302
  459. package/higherOrder/helper.js +62 -48
  460. package/higherOrder/props.js +0 -5
  461. package/higherOrder/withBaseWrapper.js +123 -168
  462. package/higherOrder/withStandalone.js +28 -26
  463. package/hooks/useAccess.js +113 -289
  464. package/hooks/useAppConfig.js +15 -40
  465. package/hooks/useAuth.js +256 -495
  466. package/hooks/useDataSourceSubscription.d.ts +3 -3
  467. package/hooks/useDataSourceSubscription.js +99 -109
  468. package/hooks/useDebounce.js +28 -56
  469. package/hooks/useDeviceVisibility.js +14 -23
  470. package/hooks/useHttp.d.ts +1 -0
  471. package/hooks/useHttp.js +318 -493
  472. package/libs/index.js +4 -13
  473. package/libs/prefab/index.js +6 -20
  474. package/mui-config/theme-provider.js +9 -17
  475. package/mui-config/theme.js +6 -9
  476. package/package-lock.json +822 -3191
  477. package/package.json +3 -19
  478. package/providers/AppProviders.js +21 -24
  479. package/runtime-dynamic/App.js +65 -93
  480. package/runtime-dynamic/app-initializer.js +207 -400
  481. package/runtime-dynamic/components/ErrorBoundary.js +59 -76
  482. package/runtime-dynamic/components/PageWrapper.js +23 -35
  483. package/runtime-dynamic/components/PrefabPreview.js +40 -69
  484. package/runtime-dynamic/components/partial-content.d.ts +2 -3
  485. package/runtime-dynamic/components/partial-content.js +66 -48
  486. package/runtime-dynamic/components/prefab-content.js +37 -30
  487. package/runtime-dynamic/components/use-dynamic-component.js +62 -150
  488. package/runtime-dynamic/factories/build-base-page-like-component.js +44 -58
  489. package/runtime-dynamic/factories/dynamic-component.d.ts +9 -0
  490. package/runtime-dynamic/factories/dynamic-component.js +83 -0
  491. package/runtime-dynamic/factories/prefab-factory.js +60 -81
  492. package/runtime-dynamic/factories/startup-info.js +12 -25
  493. package/runtime-dynamic/factories/utils.d.ts +1 -9
  494. package/runtime-dynamic/factories/utils.js +47 -130
  495. package/runtime-dynamic/index.js +56 -191
  496. package/runtime-dynamic/main.js +42 -70
  497. package/runtime-dynamic/preview-mode.js +14 -29
  498. package/runtime-dynamic/preview-navigation.js +21 -30
  499. package/runtime-dynamic/preview-path.d.ts +5 -0
  500. package/runtime-dynamic/preview-path.js +13 -0
  501. package/runtime-dynamic/preview-resource-base.js +15 -31
  502. package/runtime-dynamic/registry/component-registry.js +269 -334
  503. package/runtime-dynamic/registry/custom-widget-registry.js +11 -15
  504. package/runtime-dynamic/registry/index.js +24 -63
  505. package/runtime-dynamic/registry/store.d.ts +1 -0
  506. package/runtime-dynamic/registry/store.js +18 -23
  507. package/runtime-dynamic/routes.js +53 -81
  508. package/runtime-dynamic/services/app-extension-provider.js +17 -44
  509. package/runtime-dynamic/services/autolayout-inject.d.ts +4 -0
  510. package/runtime-dynamic/services/autolayout-inject.js +27 -0
  511. package/runtime-dynamic/services/cache.js +27 -33
  512. package/runtime-dynamic/services/compile-render.d.ts +9 -0
  513. package/runtime-dynamic/services/compile-render.js +142 -0
  514. package/runtime-dynamic/services/component-ref-provider.js +70 -124
  515. package/runtime-dynamic/services/css-scoping.js +27 -28
  516. package/runtime-dynamic/services/fragment-url.js +37 -50
  517. package/runtime-dynamic/services/index.js +48 -152
  518. package/runtime-dynamic/services/markup-transpiler.d.ts +2 -2
  519. package/runtime-dynamic/services/markup-transpiler.js +39 -231
  520. package/runtime-dynamic/services/prefab-resources.js +42 -130
  521. package/runtime-dynamic/services/resource-manager.d.ts +2 -1
  522. package/runtime-dynamic/services/resource-manager.js +32 -63
  523. package/runtime-dynamic/services/script-executor.js +50 -61
  524. package/runtime-dynamic/services/variable-factory.js +141 -184
  525. package/runtime-dynamic/services/variable-registry.js +69 -115
  526. package/runtime-dynamic/services/variable-transpiler.js +73 -103
  527. package/runtime-dynamic/shims/next-image.js +79 -50
  528. package/runtime-dynamic/shims/next-link.js +58 -32
  529. package/runtime-dynamic/shims/next-navigation.js +17 -34
  530. package/runtime-dynamic/utils/index.d.ts +2 -0
  531. package/runtime-dynamic/utils/index.js +22 -24
  532. package/store/bindActions/i18nActions.js +16 -18
  533. package/store/index.js +29 -35
  534. package/store/middleware/navigationMiddleware.js +25 -45
  535. package/store/middleware/pendingTabNavigationIntentMiddleware.js +20 -25
  536. package/store/slices/appConfigSlice.js +65 -94
  537. package/store/slices/authSlice.js +317 -471
  538. package/store/slices/i18nSlice.js +169 -168
  539. package/store/slices/navigationSlice.js +22 -20
  540. package/store/util/resolve-path.d.ts +1 -0
  541. package/store/util/resolve-path.js +7 -0
  542. package/store/viewport.service.js +150 -194
  543. package/types/index.js +10 -15
  544. package/utils/attr.js +198 -41
  545. package/utils/custom-expression/index.js +55 -151
  546. package/utils/custom-expression/parser.js +106 -182
  547. package/utils/dataset-util.js +113 -154
  548. package/utils/eval-expression.js +10 -19
  549. package/utils/form-state.util.js +60 -118
  550. package/utils/form-utils.js +49 -190
  551. package/utils/format-util.js +113 -184
  552. package/utils/layoutsize-util.js +11 -17
  553. package/utils/lib-error-skipper.js +54 -52
  554. package/utils/page-params-util.js +50 -40
  555. package/utils/pending-tab-navigation-intent.js +7 -17
  556. package/utils/resource-url.js +8 -19
  557. package/utils/state-persistance.js +136 -253
  558. package/utils/style-utils.d.ts +2 -0
  559. package/utils/style-utils.js +25 -74
  560. package/utils/transformedDataset-utils.js +353 -381
  561. package/utils/widget-cleanup-util.js +42 -74
  562. package/utils/widgets.js +19 -31
  563. package/variables/base-variable.js +117 -166
  564. package/variables/constants.js +5 -8
  565. package/variables/crud-variable.js +150 -181
  566. package/variables/live-variable.d.ts +1 -1
  567. package/variables/live-variable.js +140 -174
  568. package/variables/metadata.service.js +74 -116
  569. package/variables/model-variable.js +68 -78
  570. package/variables/service-variable.js +171 -285
  571. package/wm-namespace.js +11 -14
  572. package/components/chart/src/css.d.js +0 -1
  573. package/tsconfig.declaration.tsbuildinfo +0 -1
  574. package/types/global.d.js +0 -3
@@ -1,616 +1,503 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof3 = require("@babel/runtime/helpers/typeof");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
- var _clsx = _interopRequireDefault(require("clsx"));
17
- var _reactHookForm = require("react-hook-form");
18
- var _get = _interopRequireDefault(require("lodash-es/get"));
19
- var _lodashEs = require("lodash-es");
20
- var _props = require("./props");
21
- var _formContext = require("../form-context");
22
- var _utils = require("../../table/utils");
23
- var _listHelpers = require("../../list/utils/list-helpers");
24
- var _utils2 = require("./utils");
25
- var _hooks = require("./hooks");
26
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
27
- var __jsx = _react["default"].createElement;
28
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
29
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
30
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
31
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
32
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
33
- var DEFAULT_CLASS = "panel app-panel app-form";
34
- var BaseForm = function BaseForm(WrappedComponent) {
35
- var ControlledForm = function ControlledForm(FormProps) {
36
- var _listener$Widgets;
37
- var props = _objectSpread(_objectSpread({}, _props.defaultProps), FormProps);
38
- var formName = props.name,
39
- initialExpanded = props.expanded,
40
- isInsideWizard = props.isInsideWizard,
41
- formdata = props.formdata,
42
- listener = props.listener,
43
- className = props.className,
44
- collapsible = props.collapsible,
45
- captionwidth = props.captionwidth,
46
- captionposition = props.captionposition,
47
- itemsperrow = props.itemsperrow,
48
- messagelayout = props.messagelayout,
49
- errormessage = props.errormessage,
50
- _props$standalone = props.standalone,
51
- standalone = _props$standalone === void 0 ? false : _props$standalone;
52
-
53
- // ========== REFS ==========
54
- var parentFormRef = (0, _formContext.useFormRef)();
55
- var formReff = (0, _react.useRef)(null);
56
- var formRef = (0, _react.useRef)(null);
57
- var messageRef = (0, _react.useRef)(null);
58
- var formIdRef = (0, _react.useRef)(Math.random().toString(36).substring(2, 15));
59
- var formfieldsRef = (0, _react.useRef)({});
60
- var formDataref = (0, _react.useRef)(null);
61
- var lastEmittedValuesSerialized = (0, _react.useRef)("");
62
- var lastUpdateOriginRef = (0, _react.useRef)("external");
63
-
64
- // ========== STATE ==========
65
- var _useState = (0, _react.useState)(initialExpanded),
66
- expanded = _useState[0],
67
- setExpanded = _useState[1];
68
- var _useState2 = (0, _react.useState)(),
69
- childFormData = _useState2[0],
70
- setChildFormData = _useState2[1];
71
- var _useState3 = (0, _react.useState)({}),
72
- formfields = _useState3[0],
73
- setFormfields = _useState3[1];
74
- var _useState4 = (0, _react.useState)({}),
75
- headerActions = _useState4[0],
76
- setHeaderActions = _useState4[1];
77
- var _useState5 = (0, _react.useState)(false),
78
- showmessage = _useState5[0],
79
- setShowMessage = _useState5[1];
80
- var _useState6 = (0, _react.useState)({
81
- caption: "",
82
- type: ""
83
- }),
84
- statusMessage = _useState6[0],
85
- setStatusMessage = _useState6[1];
86
-
87
- // ========== REACT HOOK FORM ==========
88
- var _useForm = (0, _reactHookForm.useForm)({
89
- defaultValues: formdata,
90
- mode: "onTouched",
91
- reValidateMode: "onBlur"
92
- }),
93
- control = _useForm.control,
94
- handleSubmit = _useForm.handleSubmit,
95
- _useForm$formState = _useForm.formState,
96
- errors = _useForm$formState.errors,
97
- isValid = _useForm$formState.isValid,
98
- submitCount = _useForm$formState.submitCount,
99
- reset = _useForm.reset,
100
- watch = _useForm.watch,
101
- trigger = _useForm.trigger,
102
- getValues = _useForm.getValues,
103
- clearErrors = _useForm.clearErrors,
104
- setValue = _useForm.setValue;
105
-
106
- // ========== COMPLEX HOOKS ==========
107
-
108
- // Parent-child form relationship detection
109
- var _useParentFormRelatio = (0, _hooks.useParentFormRelationship)({
110
- name: formName || "",
111
- parentForm: props.parentForm,
112
- isParentList: props.isParentList,
113
- parentListName: props.parentListName,
114
- childdatasetnode: props.childdatasetnode,
115
- formArrayIndex: props.formArrayIndex
116
- }),
117
- formType = _useParentFormRelatio.formType,
118
- formArrayIndex = _useParentFormRelatio.formArrayIndex,
119
- effectiveChildDatasetNode = _useParentFormRelatio.effectiveChildDatasetNode,
120
- fullDataPath = _useParentFormRelatio.fullDataPath,
121
- rootParentForm = _useParentFormRelatio.rootParentForm,
122
- parentFormData = _useParentFormRelatio.parentFormData,
123
- parentFormDataContext = _useParentFormRelatio.parentFormDataContext;
124
-
125
- // Derived flags from formType for clearer code
126
- var isChildForm = (0, _hooks.isChildFormType)(formType);
127
- var hasPrefixedFields = (0, _hooks.usesPrefixedFields)(formType);
128
-
129
- // Form data sync manager
130
- var _useFormDataSync = (0, _hooks.useFormDataSync)({
131
- reset: reset,
132
- formType: formType,
133
- formName: formName
134
- }),
135
- currentFormData = _useFormDataSync.currentFormData,
136
- syncFormData = _useFormDataSync.syncFormData,
137
- resetFormData = _useFormDataSync.resetFormData,
138
- clearFormData = _useFormDataSync.clearFormData,
139
- markCurrentData = _useFormDataSync.markCurrentData,
140
- isUpdating = _useFormDataSync.isUpdating;
141
-
142
- // ========== MEMOIZED VALUES ==========
143
-
144
- // Layout classes (inlined from useFormLayout)
145
- var _useMemo = (0, _react.useMemo)(function () {
146
- return (0, _utils2.getFieldLayoutConfig)(captionwidth, captionposition, "os");
147
- }, [captionwidth, captionposition]),
148
- captionCls = _useMemo.captionCls,
149
- widgetCls = _useMemo.widgetCls;
150
- var itemsPerRow = (0, _react.useMemo)(function () {
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import { jsx } from "react/jsx-runtime";
21
+ import { useMemo, useState, useRef, useEffect, useCallback } from "react";
22
+ import clsx from "clsx";
23
+ import { useForm } from "react-hook-form";
24
+ import get from "lodash-es/get";
25
+ import { debounce } from "lodash-es";
26
+ import { defaultProps } from "./props";
27
+ import {
28
+ FormProvider,
29
+ useFormRef as useFormContextRef,
30
+ ParentFormDataContext
31
+ } from "../form-context";
32
+ import { cleanRowData } from "../../table/utils";
33
+ import { getItemsPerRowClass } from "../../list/utils/list-helpers";
34
+ import {
35
+ getFieldLayoutConfig,
36
+ isElementInViewport,
37
+ scrollToElement,
38
+ transformRangeFilterData,
39
+ getWidgetFormData,
40
+ setWidgetFormData,
41
+ getWidgetFormFields,
42
+ registerChildFieldInWidget
43
+ } from "./utils";
44
+ import {
45
+ useFormDataSync,
46
+ useParentFormRelationship,
47
+ useFormValidation,
48
+ useFormOperations,
49
+ useFormSubmission,
50
+ FormType,
51
+ isChildFormType,
52
+ usesPrefixedFields
53
+ } from "./hooks";
54
+ const DEFAULT_CLASS = "panel app-panel app-form";
55
+ const BaseForm = (WrappedComponent) => {
56
+ const ControlledForm = (FormProps) => {
57
+ var _a, _b;
58
+ const props = __spreadValues(__spreadValues({}, defaultProps), FormProps);
59
+ const {
60
+ name: formName,
61
+ expanded: initialExpanded,
62
+ isInsideWizard,
63
+ formdata,
64
+ listener,
65
+ className,
66
+ collapsible,
67
+ captionwidth,
68
+ captionposition,
69
+ itemsperrow,
70
+ messagelayout,
71
+ errormessage,
72
+ standalone = false
73
+ } = props;
74
+ const parentFormRef = useFormContextRef();
75
+ const formReff = useRef(null);
76
+ const formRef = useRef(null);
77
+ const messageRef = useRef(null);
78
+ const formIdRef = useRef(Math.random().toString(36).substring(2, 15));
79
+ const formfieldsRef = useRef({});
80
+ const formDataref = useRef(null);
81
+ const lastEmittedValuesSerialized = useRef("");
82
+ const lastUpdateOriginRef = useRef("external");
83
+ const [expanded, setExpanded] = useState(initialExpanded);
84
+ const [childFormData, setChildFormData] = useState();
85
+ const [formfields, setFormfields] = useState({});
86
+ const [headerActions, setHeaderActions] = useState({});
87
+ const [showmessage, setShowMessage] = useState(false);
88
+ const [statusMessage, setStatusMessage] = useState({
89
+ caption: "",
90
+ type: ""
91
+ });
92
+ const {
93
+ control,
94
+ handleSubmit,
95
+ formState: { errors, isValid, submitCount },
96
+ reset,
97
+ watch,
98
+ trigger,
99
+ getValues,
100
+ clearErrors,
101
+ setValue
102
+ } = useForm({
103
+ defaultValues: formdata,
104
+ mode: "onTouched",
105
+ reValidateMode: "onBlur"
106
+ });
107
+ const {
108
+ formType,
109
+ formArrayIndex,
110
+ effectiveChildDatasetNode,
111
+ fullDataPath,
112
+ rootParentForm,
113
+ parentFormData,
114
+ parentFormDataContext
115
+ } = useParentFormRelationship({
116
+ name: formName || "",
117
+ parentForm: props.parentForm,
118
+ isParentList: props.isParentList,
119
+ parentListName: props.parentListName,
120
+ childdatasetnode: props.childdatasetnode,
121
+ formArrayIndex: props.formArrayIndex
122
+ });
123
+ const isChildForm = isChildFormType(formType);
124
+ const hasPrefixedFields = usesPrefixedFields(formType);
125
+ const {
126
+ currentFormData,
127
+ syncFormData,
128
+ resetFormData,
129
+ clearFormData,
130
+ markCurrentData,
131
+ isUpdating
132
+ } = useFormDataSync({
133
+ reset,
134
+ formType,
135
+ formName
136
+ });
137
+ const { captionCls, widgetCls } = useMemo(
138
+ () => getFieldLayoutConfig(captionwidth, captionposition, "os"),
139
+ [captionwidth, captionposition]
140
+ );
141
+ const itemsPerRow = useMemo(() => {
151
142
  if (itemsperrow == null || String(itemsperrow).trim() === "") {
152
- // Match Angular when the prop was never set: no setListClass → often no derived class.
153
- return undefined;
143
+ return void 0;
154
144
  }
155
- return (0, _listHelpers.getItemsPerRowClass)(String(itemsperrow));
145
+ return getItemsPerRowClass(String(itemsperrow));
156
146
  }, [itemsperrow]);
157
- var listenerWidgetFormdata = formName ? listener === null || listener === void 0 || (_listener$Widgets = listener.Widgets) === null || _listener$Widgets === void 0 || (_listener$Widgets = _listener$Widgets[formName]) === null || _listener$Widgets === void 0 ? void 0 : _listener$Widgets.formdata : undefined;
158
-
159
- // Widget form data
160
- var widgetFormData = (0, _react.useMemo)(function () {
147
+ const listenerWidgetFormdata = formName ? (_b = (_a = listener == null ? void 0 : listener.Widgets) == null ? void 0 : _a[formName]) == null ? void 0 : _b.formdata : void 0;
148
+ const widgetFormData = useMemo(() => {
161
149
  if (!formName) return formdata;
162
- var widgetData = (0, _utils2.getWidgetFormData)(listener, formName);
163
- var proxyFormdata = widgetData === null || widgetData === void 0 ? void 0 : widgetData.formdata;
150
+ const widgetData = getWidgetFormData(listener, formName);
151
+ const proxyFormdata = widgetData == null ? void 0 : widgetData.formdata;
164
152
  return proxyFormdata && Object.keys(proxyFormdata).length > 0 ? proxyFormdata : formdata;
165
153
  }, [formName, formdata, listenerWidgetFormdata]);
166
-
167
- // Form class name
168
- var formClassName = (0, _react.useMemo)(function () {
169
- return isInsideWizard ? (0, _clsx["default"])(className) : (0, _clsx["default"])(DEFAULT_CLASS, className);
154
+ const formClassName = useMemo(() => {
155
+ return isInsideWizard ? clsx(className) : clsx(DEFAULT_CLASS, className);
170
156
  }, [isInsideWizard, className]);
171
-
172
- // Compute fields for onDataSourceChange
173
- var fields = (0, _react.useMemo)(function () {
174
- var newFields = [];
157
+ const fields = useMemo(() => {
158
+ const newFields = [];
175
159
  if (!formName) return newFields;
176
- var Widgets = (0, _utils2.getWidgetFormFields)(listener, formName) || {};
177
- Object.keys(Widgets).forEach(function (key) {
160
+ const Widgets = getWidgetFormFields(listener, formName) || {};
161
+ Object.keys(Widgets).forEach((key) => {
178
162
  if (!key.includes("formWidget") && Widgets[key]) {
179
163
  newFields.push(Widgets[key]);
180
164
  }
181
165
  });
182
166
  return newFields;
183
167
  }, [formName]);
184
-
185
- // ========== CALLBACKS ==========
186
-
187
- // Field registry callbacks (inlined from useFormFieldRegistry)
188
- var registerHeaderAction = (0, _react.useCallback)(function (actionName, action) {
168
+ const registerHeaderAction = useCallback((actionName, action) => {
189
169
  if (!action || !actionName) return;
190
- setHeaderActions(function (prev) {
170
+ setHeaderActions((prev) => {
191
171
  if (!prev[actionName]) {
192
- return _objectSpread(_objectSpread({}, prev), {}, (0, _defineProperty2["default"])({}, actionName, action));
172
+ return __spreadProps(__spreadValues({}, prev), { [actionName]: action });
193
173
  }
194
174
  return prev;
195
175
  });
196
176
  }, []);
197
- var onChangeHandler = (0, _react.useCallback)(function (fieldName, value) {
198
- if (!fieldName || value === undefined) return;
199
- setFormfields(function (prev) {
200
- return _objectSpread(_objectSpread({}, prev), {}, (0, _defineProperty2["default"])({}, fieldName, _objectSpread(_objectSpread({}, prev[fieldName]), {}, {
201
- value: value,
202
- datavalue: value
203
- })));
204
- });
177
+ const onChangeHandler = useCallback((fieldName, value) => {
178
+ if (!fieldName || value === void 0) return;
179
+ setFormfields((prev) => __spreadProps(__spreadValues({}, prev), {
180
+ [fieldName]: __spreadProps(__spreadValues({}, prev[fieldName]), { value, datavalue: value })
181
+ }));
205
182
  }, []);
206
-
207
- // Message callbacks (inlined from useFormMessage)
208
- var checkAppServiceErrorMsg = (0, _react.useCallback)(function (type) {
209
- var notificationAction = (0, _get["default"])(listener, "Actions.appNotification");
183
+ const checkAppServiceErrorMsg = useCallback((type) => {
184
+ var _a2;
185
+ const notificationAction = get(listener, "Actions.appNotification");
210
186
  if (notificationAction && type === "error") {
211
- var _notificationAction$g;
212
- return notificationAction === null || notificationAction === void 0 || (_notificationAction$g = notificationAction.getMessage) === null || _notificationAction$g === void 0 ? void 0 : _notificationAction$g.call(notificationAction);
187
+ return (_a2 = notificationAction == null ? void 0 : notificationAction.getMessage) == null ? void 0 : _a2.call(notificationAction);
213
188
  }
214
- return undefined;
189
+ return void 0;
215
190
  }, []);
216
- var clearMessage = (0, _react.useCallback)(function () {
217
- setStatusMessage({
218
- caption: "",
219
- type: ""
220
- });
191
+ const clearMessage = useCallback(() => {
192
+ setStatusMessage({ caption: "", type: "" });
221
193
  setShowMessage(false);
222
194
  }, []);
223
- var toggleMessage = (0, _react.useCallback)(function (state, msg, type) {
224
- var template = msg;
225
- if (state && msg) {
226
- if (type === "error" && errormessage && errormessage.length > 0) {
227
- template = errormessage;
228
- }
229
- if (messagelayout === "Inline") {
230
- var _messageRef$current;
231
- template = checkAppServiceErrorMsg(type) || template;
232
- setStatusMessage({
233
- caption: template || "",
234
- type: type
235
- });
236
- setShowMessage(true);
237
- if ((_messageRef$current = messageRef.current) !== null && _messageRef$current !== void 0 && _messageRef$current.showMessage) {
238
- messageRef.current.showMessage(template, type);
195
+ const toggleMessage = useCallback(
196
+ (state, msg, type) => {
197
+ var _a2, _b2, _c;
198
+ let template = msg;
199
+ if (state && msg) {
200
+ if (type === "error" && errormessage && errormessage.length > 0) {
201
+ template = errormessage;
239
202
  }
240
- var formEl = formRef.current;
241
- if (formEl && !(0, _utils2.isElementInViewport)(formEl)) {
242
- (0, _utils2.scrollToElement)(formEl);
203
+ if (messagelayout === "Inline") {
204
+ template = checkAppServiceErrorMsg(type) || template;
205
+ setStatusMessage({ caption: template || "", type });
206
+ setShowMessage(true);
207
+ if ((_a2 = messageRef.current) == null ? void 0 : _a2.showMessage) {
208
+ messageRef.current.showMessage(template, type);
209
+ }
210
+ const formEl = formRef.current;
211
+ if (formEl && !isElementInViewport(formEl)) {
212
+ scrollToElement(formEl);
213
+ }
214
+ } else {
215
+ (_c = (_b2 = listener == null ? void 0 : listener.App) == null ? void 0 : _b2.notifyApp) == null ? void 0 : _c.call(_b2, template || "", type || "", true);
243
216
  }
244
217
  } else {
245
- var _listener$App, _listener$App$notifyA;
246
- listener === null || listener === void 0 || (_listener$App = listener.App) === null || _listener$App === void 0 || (_listener$App$notifyA = _listener$App.notifyApp) === null || _listener$App$notifyA === void 0 || _listener$App$notifyA.call(_listener$App, template || "", type || "", true);
218
+ setStatusMessage({ caption: "", type: "" });
219
+ setShowMessage(false);
247
220
  }
248
- } else {
249
- setStatusMessage({
250
- caption: "",
251
- type: ""
252
- });
253
- setShowMessage(false);
254
- }
255
- if (formRef.current) {
256
- (0, _utils2.scrollToElement)(formRef.current);
257
- }
258
- }, [messagelayout, errormessage, checkAppServiceErrorMsg]);
259
-
260
- // Child form callbacks (inlined from useChildFormCallbacks)
261
- var handleChildDataChange = (0, _react.useCallback)(function (fullDataPath, formData) {
262
- if (!fullDataPath || !formData) return;
263
- var currentValues = getValues();
264
- var pathParts = fullDataPath.replace(/\[(\d+)\]/g, ".$1").split(".");
265
- var existingData = currentValues;
266
- var _iterator = _createForOfIteratorHelper(pathParts),
267
- _step;
268
- try {
269
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
270
- var part = _step.value;
271
- if (existingData && (0, _typeof2["default"])(existingData) === "object") {
221
+ if (formRef.current) {
222
+ scrollToElement(formRef.current);
223
+ }
224
+ },
225
+ [messagelayout, errormessage, checkAppServiceErrorMsg]
226
+ );
227
+ const handleChildDataChange = useCallback(
228
+ (fullDataPath2, formData) => {
229
+ if (!fullDataPath2 || !formData) return;
230
+ const currentValues = getValues();
231
+ const pathParts = fullDataPath2.replace(/\[(\d+)\]/g, ".$1").split(".");
232
+ let existingData = currentValues;
233
+ for (const part of pathParts) {
234
+ if (existingData && typeof existingData === "object") {
272
235
  existingData = existingData[part];
273
236
  } else {
274
- existingData = undefined;
237
+ existingData = void 0;
275
238
  break;
276
239
  }
277
240
  }
278
-
279
- // When merging, filter out arrays from existingData that aren't in formData
280
- // This prevents nested arrays (managed by sibling forms) from being merged back in
281
- } catch (err) {
282
- _iterator.e(err);
283
- } finally {
284
- _iterator.f();
285
- }
286
- var mergedData;
287
- if (existingData && (0, _typeof2["default"])(existingData) === "object" && !Array.isArray(existingData)) {
288
- // Filter existingData to exclude arrays not present in formData
289
- var filteredExisting = {};
290
- Object.keys(existingData).forEach(function (key) {
291
- var value = existingData[key];
292
- // Keep non-array values, or arrays that are also in formData
293
- if (!Array.isArray(value) || key in formData) {
294
- filteredExisting[key] = value;
295
- }
296
- });
297
- mergedData = _objectSpread(_objectSpread({}, filteredExisting), formData);
298
- } else {
299
- mergedData = formData;
300
- }
301
- setValue(fullDataPath, mergedData, {
302
- shouldValidate: false,
303
- shouldDirty: true
304
- });
305
- var currentData = getValues();
306
- markCurrentData(currentData);
307
- lastUpdateOriginRef.current = "child";
308
-
309
- // Sync to widget proxy (synchronous, same as stage branch)
310
- (0, _utils2.setWidgetFormData)(listener, formName, currentData);
311
- }, [setValue, getValues, markCurrentData, formName]);
312
- var handleRegisterChildField = (0, _react.useCallback)(function (data) {
313
- var childFormName = data.childFormName,
314
- widget = data.widget,
315
- formKey = data.formKey,
316
- fieldName = data.fieldName;
317
- if (childFormName && widget && formKey && fieldName) {
318
- (0, _utils2.registerChildFieldInWidget)(listener, formName, {
319
- widget: widget,
320
- formKey: formKey,
321
- fieldName: fieldName
322
- });
323
- }
324
- }, [formName]);
325
-
326
- // Notify data output helper
327
- var notifyDataOutput = (0, _react.useCallback)(function (data) {
328
- var cleanedData = (0, _utils.cleanRowData)(data);
329
- if (formName) {
330
- var _listener$onChange;
331
- listener === null || listener === void 0 || (_listener$onChange = listener.onChange) === null || _listener$onChange === void 0 || _listener$onChange.call(listener, formName, {
332
- dataoutput: cleanedData
333
- });
334
- }
335
- }, [formName]);
336
-
337
- // updateFormData - defined here (not in hook) to ensure stable ref access
338
- // This is called by table's inline edit to sync data to parent form
339
- var updateFormData = (0, _react.useCallback)(function (data) {
241
+ let mergedData;
242
+ if (existingData && typeof existingData === "object" && !Array.isArray(existingData)) {
243
+ const filteredExisting = {};
244
+ Object.keys(existingData).forEach((key) => {
245
+ const value = existingData[key];
246
+ if (!Array.isArray(value) || key in formData) {
247
+ filteredExisting[key] = value;
248
+ }
249
+ });
250
+ mergedData = __spreadValues(__spreadValues({}, filteredExisting), formData);
251
+ } else {
252
+ mergedData = formData;
253
+ }
254
+ setValue(fullDataPath2, mergedData, { shouldValidate: false, shouldDirty: true });
255
+ const currentData = getValues();
256
+ markCurrentData(currentData);
257
+ lastUpdateOriginRef.current = "child";
258
+ setWidgetFormData(listener, formName, currentData);
259
+ },
260
+ [setValue, getValues, markCurrentData, formName]
261
+ );
262
+ const handleRegisterChildField = useCallback(
263
+ (data) => {
264
+ const { childFormName, widget, formKey, fieldName } = data;
265
+ if (childFormName && widget && formKey && fieldName) {
266
+ registerChildFieldInWidget(listener, formName, { widget, formKey, fieldName });
267
+ }
268
+ },
269
+ [formName]
270
+ );
271
+ const notifyDataOutput = useCallback(
272
+ (data) => {
273
+ var _a2;
274
+ const cleanedData = cleanRowData(data);
275
+ if (formName) {
276
+ (_a2 = listener == null ? void 0 : listener.onChange) == null ? void 0 : _a2.call(listener, formName, { dataoutput: cleanedData });
277
+ }
278
+ },
279
+ [formName]
280
+ );
281
+ const updateFormData = useCallback((data) => {
340
282
  if (typeof data === "function") {
341
283
  formDataref.current = data(formDataref.current || {});
342
284
  } else {
343
- formDataref.current = _objectSpread(_objectSpread({}, formDataref.current || {}), data);
285
+ formDataref.current = __spreadValues(__spreadValues({}, formDataref.current || {}), data);
344
286
  }
345
287
  }, []);
346
-
347
- // ========== COMPLEX HOOKS (continued) ==========
348
-
349
- // Validation
350
- var _useFormValidation = (0, _hooks.useFormValidation)({
351
- formRef: formRef,
352
- formfields: formfields,
353
- formReff: formReff,
354
- control: control,
355
- trigger: trigger,
356
- errors: errors,
357
- formName: formName || "",
358
- listener: listener
359
- }),
360
- validationMessagesRef = _useFormValidation.validationMessagesRef,
361
- validateFieldsOnSubmit = _useFormValidation.validateFieldsOnSubmit;
362
-
363
- // Submission
364
- var _useFormSubmission = (0, _hooks.useFormSubmission)({
365
- formName: formName || "",
366
- formfields: formfields,
367
- formDataref: formDataref,
368
- getValues: getValues,
369
- formType: formType,
370
- validateFieldsOnSubmit: validateFieldsOnSubmit,
371
- resetFormData: resetFormData,
372
- toggleMessage: toggleMessage,
373
- setShowViewMode: function setShowViewMode(val) {
374
- return _setShowViewMode(val);
375
- },
376
- listener: listener,
377
- datasource: props.datasource,
378
- formSubmit: props.formSubmit,
379
- widgettype: props.widgettype,
380
- onBeforeSubmit: props.onBeforeSubmit,
381
- onSubmit: props.onSubmit,
382
- onResult: props.onResult,
383
- onSuccess: props.onSuccess,
384
- onError: props.onError,
385
- insertmessage: props.insertmessage,
386
- updatemessage: props.updatemessage,
387
- deletemessage: props.deletemessage,
388
- postmessage: props.postmessage,
389
- errormessage: errormessage,
390
- messagelayout: messagelayout,
391
- standalone: standalone || false
392
- }),
393
- submit = _useFormSubmission.submit,
394
- deleteEntry = _useFormSubmission.deleteEntry;
395
-
396
- // Live filter (inlined from useLiveFilter)
397
- var livefilterFn = props.Livefilter || function () {};
398
- var filter = (0, _react.useMemo)(function () {
399
- return handleSubmit(function (data, e) {
400
- e === null || e === void 0 || e.preventDefault();
401
- e === null || e === void 0 || e.stopPropagation();
402
- var transformedData = (0, _utils2.transformRangeFilterData)(data);
288
+ const { validationMessagesRef, validateFieldsOnSubmit } = useFormValidation({
289
+ formRef,
290
+ formfields,
291
+ formReff,
292
+ control,
293
+ trigger,
294
+ errors,
295
+ formName: formName || "",
296
+ listener
297
+ });
298
+ const { submit, deleteEntry } = useFormSubmission({
299
+ formName: formName || "",
300
+ formfields,
301
+ formDataref,
302
+ getValues,
303
+ formType,
304
+ validateFieldsOnSubmit,
305
+ resetFormData,
306
+ toggleMessage,
307
+ setShowViewMode: (val) => setShowViewMode(val),
308
+ listener,
309
+ datasource: props.datasource,
310
+ formSubmit: props.formSubmit,
311
+ widgettype: props.widgettype,
312
+ onBeforeSubmit: props.onBeforeSubmit,
313
+ onSubmit: props.onSubmit,
314
+ onResult: props.onResult,
315
+ onSuccess: props.onSuccess,
316
+ onError: props.onError,
317
+ insertmessage: props.insertmessage,
318
+ updatemessage: props.updatemessage,
319
+ deletemessage: props.deletemessage,
320
+ postmessage: props.postmessage,
321
+ errormessage,
322
+ messagelayout,
323
+ standalone: standalone || false
324
+ });
325
+ const livefilterFn = props.Livefilter || (() => {
326
+ });
327
+ const filter = useMemo(
328
+ () => handleSubmit((data, e) => {
329
+ e == null ? void 0 : e.preventDefault();
330
+ e == null ? void 0 : e.stopPropagation();
331
+ const transformedData = transformRangeFilterData(data);
403
332
  return livefilterFn(transformedData, false, formfieldsRef.current);
404
- });
405
- }, [handleSubmit, livefilterFn]);
406
- var clearFilter = (0, _react.useMemo)(function () {
407
- return handleSubmit(function (data, e) {
408
- e === null || e === void 0 || e.preventDefault();
409
- e === null || e === void 0 || e.stopPropagation();
333
+ }),
334
+ [handleSubmit, livefilterFn]
335
+ );
336
+ const clearFilter = useMemo(
337
+ () => handleSubmit((data, e) => {
338
+ e == null ? void 0 : e.preventDefault();
339
+ e == null ? void 0 : e.stopPropagation();
410
340
  formresetFn();
411
- var transformedData = (0, _utils2.transformRangeFilterData)(data);
341
+ const transformedData = transformRangeFilterData(data);
412
342
  livefilterFn(transformedData, true, formfieldsRef.current);
413
- });
414
- }, [handleSubmit, livefilterFn]);
415
- var debouncedFilter = (0, _react.useCallback)(function () {
416
- var debouncedFn = (0, _lodashEs.debounce)(filter, 250);
343
+ }),
344
+ [handleSubmit, livefilterFn]
345
+ );
346
+ const debouncedFilter = useCallback(() => {
347
+ const debouncedFn = debounce(filter, 250);
417
348
  debouncedFn();
418
349
  }, [filter]);
419
-
420
- // Form operations
421
- var _useFormOperations = (0, _hooks.useFormOperations)({
422
- formName: formName || "",
423
- formfields: formfields,
424
- formRef: formRef,
425
- formReff: formReff,
426
- formType: formType,
427
- fullDataPath: fullDataPath,
428
- parentFormDataContext: parentFormDataContext,
429
- clearFormData: clearFormData,
430
- resetFormData: resetFormData,
431
- trigger: trigger,
432
- submit: submit,
433
- listener: listener,
434
- widgetFormType: props["form-type"],
435
- debouncedFilter: debouncedFilter
436
- }),
437
- formresetFn = _useFormOperations.formreset,
438
- create = _useFormOperations.create,
439
- edit = _useFormOperations.edit,
440
- setFormData = _useFormOperations.setFormData,
441
- saveAndNew = _useFormOperations.saveAndNew,
442
- saveAndView = _useFormOperations.saveAndView,
443
- showViewMode = _useFormOperations.showViewMode,
444
- _setShowViewMode = _useFormOperations.setShowViewMode;
445
-
446
- // ========== MORE CALLBACKS ==========
447
-
448
- var expandCollapsePanel = (0, _react.useCallback)(function () {
350
+ const {
351
+ formreset: formresetFn,
352
+ create,
353
+ edit,
354
+ setFormData,
355
+ saveAndNew,
356
+ saveAndView,
357
+ showViewMode,
358
+ setShowViewMode
359
+ } = useFormOperations({
360
+ formName: formName || "",
361
+ formfields,
362
+ formRef,
363
+ formReff,
364
+ formType,
365
+ fullDataPath,
366
+ parentFormDataContext,
367
+ clearFormData,
368
+ resetFormData,
369
+ trigger,
370
+ submit,
371
+ listener,
372
+ widgetFormType: props["form-type"],
373
+ debouncedFilter
374
+ });
375
+ const expandCollapsePanel = useCallback(() => {
449
376
  if (collapsible) {
450
377
  setExpanded(!expanded);
451
378
  }
452
379
  }, [collapsible, expanded]);
453
- var handleCancel = (0, _react.useCallback)(function () {
380
+ const handleCancel = useCallback(() => {
454
381
  if (typeof props.cancel === "function") {
455
382
  props.cancel();
456
383
  return;
457
384
  }
458
- _setShowViewMode(true);
459
- }, [_setShowViewMode, props]);
460
- var getFieldValue = (0, _react.useCallback)(function (fieldName) {
461
- return watch(fieldName);
462
- }, [watch]);
463
- var highlightInvalidFields = (0, _react.useCallback)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
464
- return _regenerator["default"].wrap(function _callee$(_context) {
465
- while (1) switch (_context.prev = _context.next) {
466
- case 0:
467
- _context.next = 2;
468
- return validateFieldsOnSubmit();
469
- case 2:
470
- case "end":
471
- return _context.stop();
472
- }
473
- }, _callee);
474
- })), [validateFieldsOnSubmit]);
475
-
476
- // ========== EFFECTS ==========
477
-
478
- // Keep formfieldsRef in sync
479
- (0, _react.useEffect)(function () {
385
+ setShowViewMode(true);
386
+ }, [setShowViewMode, props]);
387
+ const getFieldValue = useCallback((fieldName) => watch(fieldName), [watch]);
388
+ const highlightInvalidFields = useCallback(async () => {
389
+ await validateFieldsOnSubmit();
390
+ }, [validateFieldsOnSubmit]);
391
+ useEffect(() => {
480
392
  formfieldsRef.current = formfields;
481
393
  }, [formfields]);
482
-
483
- // Update valid state
484
- (0, _react.useEffect)(function () {
485
- if (listener !== null && listener !== void 0 && listener.onChange && formName) {
486
- listener.onChange(formName, {
487
- valid: isValid
488
- });
394
+ useEffect(() => {
395
+ if ((listener == null ? void 0 : listener.onChange) && formName) {
396
+ listener.onChange(formName, { valid: isValid });
489
397
  }
490
398
  }, [isValid, formName]);
491
-
492
- // Extract child form data from parent
493
- (0, _react.useEffect)(function () {
399
+ useEffect(() => {
494
400
  if (parentFormData && effectiveChildDatasetNode) {
495
- var dataAtNode = (0, _get["default"])(parentFormData, effectiveChildDatasetNode);
496
- var isArrayData = Array.isArray(dataAtNode);
497
- var childData;
401
+ const dataAtNode = get(parentFormData, effectiveChildDatasetNode);
402
+ const isArrayData = Array.isArray(dataAtNode);
403
+ let childData;
498
404
  if (isArrayData && formArrayIndex >= 0) {
499
405
  childData = formArrayIndex < dataAtNode.length ? dataAtNode[formArrayIndex] : {};
500
406
  } else {
501
- childData = dataAtNode !== null && dataAtNode !== void 0 ? dataAtNode : {};
407
+ childData = dataAtNode != null ? dataAtNode : {};
502
408
  }
503
409
  setChildFormData(childData);
504
410
  }
505
411
  }, [parentFormData, effectiveChildDatasetNode, formArrayIndex]);
506
-
507
- // Sync form when external data source changes
508
- // Data source selection based on formType config
509
- (0, _react.useEffect)(function () {
510
- // Skip sync if the data change originated from a child (would be circular)
511
- if (isChildForm && (parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.lastUpdateOrigin) === "child") {
412
+ useEffect(() => {
413
+ var _a2;
414
+ if (isChildForm && (parentFormDataContext == null ? void 0 : parentFormDataContext.lastUpdateOrigin) === "child") {
512
415
  return;
513
416
  }
514
- var dataSource;
515
-
516
- // Use formTypeConfig.dataSourcePriority to determine data source
517
- if (formType === _hooks.FormType.DIRECT_CHILD || formType === _hooks.FormType.LIST_CHILD) {
518
- // Props-based child forms: use extracted child data
417
+ let dataSource;
418
+ if (formType === FormType.DIRECT_CHILD || formType === FormType.LIST_CHILD) {
519
419
  dataSource = childFormData;
520
- } else if (formType === _hooks.FormType.PREFAB_CHILD || formType === _hooks.FormType.LIST_PREFAB_CHILD) {
521
- // Prefab forms: use context-provided form data
522
- var contextFormData = parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.formdata;
523
- // For LIST_PREFAB_CHILD, the context formdata might be an array - extract the item at formArrayIndex
524
- if (formType === _hooks.FormType.LIST_PREFAB_CHILD && Array.isArray(contextFormData) && formArrayIndex >= 0 && formArrayIndex < contextFormData.length) {
525
- var _contextFormData$form;
526
- // Safely extract the item at formArrayIndex, with fallback to undefined
527
- dataSource = (_contextFormData$form = contextFormData[formArrayIndex]) !== null && _contextFormData$form !== void 0 ? _contextFormData$form : undefined;
420
+ } else if (formType === FormType.PREFAB_CHILD || formType === FormType.LIST_PREFAB_CHILD) {
421
+ const contextFormData = parentFormDataContext == null ? void 0 : parentFormDataContext.formdata;
422
+ if (formType === FormType.LIST_PREFAB_CHILD && Array.isArray(contextFormData) && formArrayIndex >= 0 && formArrayIndex < contextFormData.length) {
423
+ dataSource = (_a2 = contextFormData[formArrayIndex]) != null ? _a2 : void 0;
528
424
  } else {
529
425
  dataSource = contextFormData;
530
426
  }
531
427
  } else {
532
- // Standalone forms: use widget data or props
533
- // Also check parentFormDataContext.formdata for forms inside parent forms
534
- // (e.g., wizard step forms inside a parent form)
535
- dataSource = widgetFormData || formdata || (parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.formdata);
428
+ dataSource = widgetFormData || formdata || (parentFormDataContext == null ? void 0 : parentFormDataContext.formdata);
536
429
  }
537
- if (dataSource && (0, _typeof2["default"])(dataSource) === "object" && !Array.isArray(dataSource)) {
430
+ if (dataSource && typeof dataSource === "object" && !Array.isArray(dataSource)) {
538
431
  syncFormData(dataSource);
539
432
  lastUpdateOriginRef.current = "external";
540
433
  if (props["form-type"] === "live-filter" && Object.keys(dataSource).length > 0) {
541
434
  debouncedFilter();
542
435
  }
543
436
  }
544
- }, [formType, isChildForm, childFormData, widgetFormData, formdata, formArrayIndex, parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.formdata, parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.lastUpdateOrigin, syncFormData, debouncedFilter]);
545
-
546
- // Cleanup on unmount
547
- (0, _react.useEffect)(function () {
548
- return function () {
549
- var _props$destroy;
437
+ }, [
438
+ formType,
439
+ isChildForm,
440
+ childFormData,
441
+ widgetFormData,
442
+ formdata,
443
+ formArrayIndex,
444
+ parentFormDataContext == null ? void 0 : parentFormDataContext.formdata,
445
+ parentFormDataContext == null ? void 0 : parentFormDataContext.lastUpdateOrigin,
446
+ syncFormData,
447
+ debouncedFilter
448
+ ]);
449
+ useEffect(() => {
450
+ return () => {
451
+ var _a2;
550
452
  if (!formName) return;
551
- props === null || props === void 0 || (_props$destroy = props.destroy) === null || _props$destroy === void 0 || _props$destroy.call(props, formName);
453
+ (_a2 = props == null ? void 0 : props.destroy) == null ? void 0 : _a2.call(props, formName);
552
454
  formresetFn();
553
455
  };
554
456
  }, []);
555
-
556
- // Prefab field registration
557
- (0, _react.useEffect)(function () {
558
- var registerFn = parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.registerChildField;
457
+ useEffect(() => {
458
+ const registerFn = parentFormDataContext == null ? void 0 : parentFormDataContext.registerChildField;
559
459
  if (!registerFn || !formName) return;
560
- var widgetFormFields = (0, _utils2.getWidgetFormFields)(listener, formName);
561
- var formFieldsToRegister = widgetFormFields || formfields;
562
- Object.entries(formFieldsToRegister).forEach(function (_ref2) {
563
- var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
564
- key = _ref3[0],
565
- widget = _ref3[1];
460
+ const widgetFormFields = getWidgetFormFields(listener, formName);
461
+ const formFieldsToRegister = widgetFormFields || formfields;
462
+ Object.entries(formFieldsToRegister).forEach(([key, widget]) => {
566
463
  if (key.includes("formWidget")) return;
567
- var typedWidget = widget;
568
- var formKey = (typedWidget === null || typedWidget === void 0 ? void 0 : typedWidget.formKey) || (typedWidget === null || typedWidget === void 0 ? void 0 : typedWidget.fieldName) || key;
569
- var fieldName = (typedWidget === null || typedWidget === void 0 ? void 0 : typedWidget.fieldName) || key;
464
+ const typedWidget = widget;
465
+ const formKey = (typedWidget == null ? void 0 : typedWidget.formKey) || (typedWidget == null ? void 0 : typedWidget.fieldName) || key;
466
+ const fieldName = (typedWidget == null ? void 0 : typedWidget.fieldName) || key;
570
467
  registerFn({
571
468
  childFormName: formName,
572
- widget: widget,
573
- formKey: formKey,
574
- fieldName: fieldName
469
+ widget,
470
+ formKey,
471
+ fieldName
575
472
  });
576
473
  });
577
- }, [formfields, formName, parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.registerChildField]);
578
-
579
- // Watch for form changes and emit to parent
580
- (0, _react.useEffect)(function () {
581
- var el = formRef.current;
474
+ }, [formfields, formName, parentFormDataContext == null ? void 0 : parentFormDataContext.registerChildField]);
475
+ useEffect(() => {
476
+ const el = formRef.current;
582
477
  if (!el) return;
583
- var emit = function emit() {
584
- el.dispatchEvent(new CustomEvent("wm:form-validity", {
585
- bubbles: true,
586
- detail: {
587
- isValid: isValid
588
- }
589
- }));
478
+ const emit = () => {
479
+ el.dispatchEvent(
480
+ new CustomEvent("wm:form-validity", {
481
+ bubbles: true,
482
+ detail: { isValid }
483
+ })
484
+ );
590
485
  };
591
486
  emit();
592
- var unsubscribe = watch(function (values) {
487
+ const unsubscribe = watch((values) => {
593
488
  emit();
594
489
  if (isUpdating()) return;
595
- var serialized = JSON.stringify(values);
490
+ const serialized = JSON.stringify(values);
596
491
  if (serialized !== lastEmittedValuesSerialized.current) {
597
492
  lastEmittedValuesSerialized.current = serialized;
598
-
599
- // Forms with prefixed fields have data wrapped under form name; others don't
600
- var normalizedValues = hasPrefixedFields && formName ? values[formName] : values;
601
-
602
- // For any nested child form, filter out nested objects AND arrays
603
- // that are managed by their own child forms. This prevents a middle-level
604
- // form from overwriting grandchild form data that has already propagated to root.
605
- if (isChildForm && normalizedValues && (0, _typeof2["default"])(normalizedValues) === "object" && !Array.isArray(normalizedValues)) {
606
- var childFormNames = formReff.current ? Object.keys(formReff.current) : [];
493
+ let normalizedValues = hasPrefixedFields && formName ? values[formName] : values;
494
+ if (isChildForm && normalizedValues && typeof normalizedValues === "object" && !Array.isArray(normalizedValues)) {
495
+ const childFormNames = formReff.current ? Object.keys(formReff.current) : [];
607
496
  if (childFormNames.length > 0) {
608
- var filteredValues = {};
609
- Object.keys(normalizedValues).forEach(function (key) {
610
- var value = normalizedValues[key];
611
- // Keep only primitive values and null
612
- // Filter out objects AND arrays (arrays contain nested form data)
613
- if (value === null || (0, _typeof2["default"])(value) !== "object") {
497
+ const filteredValues = {};
498
+ Object.keys(normalizedValues).forEach((key) => {
499
+ const value = normalizedValues[key];
500
+ if (value === null || typeof value !== "object") {
614
501
  filteredValues[key] = value;
615
502
  }
616
503
  });
@@ -618,185 +505,183 @@ var BaseForm = function BaseForm(WrappedComponent) {
618
505
  }
619
506
  }
620
507
  markCurrentData(normalizedValues);
621
- if (fullDataPath && parentFormDataContext !== null && parentFormDataContext !== void 0 && parentFormDataContext.onChildDataChange) {
508
+ if (fullDataPath && (parentFormDataContext == null ? void 0 : parentFormDataContext.onChildDataChange)) {
622
509
  parentFormDataContext.onChildDataChange(fullDataPath, normalizedValues);
623
510
  }
624
- var autoupdate = props.autoupdate;
625
- var isAutoupdateEnabled = autoupdate !== false && String(autoupdate).toLowerCase() !== "false" && String(autoupdate).toLowerCase() !== "0";
626
- var isAutoUpdateLiveFilter = props["form-type"] === "live-filter" && isAutoupdateEnabled;
511
+ const autoupdate = props.autoupdate;
512
+ const isAutoupdateEnabled = autoupdate !== false && String(autoupdate).toLowerCase() !== "false" && String(autoupdate).toLowerCase() !== "0";
513
+ const isAutoUpdateLiveFilter = props["form-type"] === "live-filter" && isAutoupdateEnabled;
627
514
  if (isAutoUpdateLiveFilter) {
628
- debouncedFilter === null || debouncedFilter === void 0 || debouncedFilter();
515
+ debouncedFilter == null ? void 0 : debouncedFilter();
629
516
  }
630
517
  notifyDataOutput(getValues());
631
518
  }
632
519
  });
633
- return function () {
520
+ return () => {
634
521
  if (typeof unsubscribe === "function") {
635
522
  unsubscribe();
636
523
  }
637
524
  };
638
- }, [watch, isValid, rootParentForm, fullDataPath, formName, formType, hasPrefixedFields, isChildForm, debouncedFilter]);
639
- (0, _react.useEffect)(function () {
525
+ }, [
526
+ watch,
527
+ isValid,
528
+ rootParentForm,
529
+ fullDataPath,
530
+ formName,
531
+ formType,
532
+ hasPrefixedFields,
533
+ isChildForm,
534
+ debouncedFilter
535
+ ]);
536
+ useEffect(() => {
640
537
  if (props.onDataSourceChange && fields.length > 0) {
641
538
  props.onDataSourceChange(fields);
642
539
  }
643
540
  }, [fields, props.onDataSourceChange]);
644
-
645
- // Form ref exposure (inlined from useFormRef)
646
- (0, _react.useEffect)(function () {
541
+ useEffect(() => {
647
542
  if (formRef.current) {
648
- var formEl = formRef.current;
649
- formEl.getFormData = function () {
650
- return {
651
- values: watch(),
652
- isValid: isValid
653
- };
654
- };
655
- formEl.validateForm = function () {
656
- return submitCount === 0 ? isValid : trigger();
657
- };
658
- formEl.clearErrors = function () {
659
- return clearErrors();
660
- };
661
- formEl.getProps = function () {
662
- return props;
663
- };
543
+ const formEl = formRef.current;
544
+ formEl.getFormData = () => ({ values: watch(), isValid });
545
+ formEl.validateForm = () => submitCount === 0 ? isValid : trigger();
546
+ formEl.clearErrors = () => clearErrors();
547
+ formEl.getProps = () => props;
664
548
  formEl.formWidgets = formfields;
665
- formEl.getValidationMessages = function () {
666
- return validationMessagesRef.current;
667
- };
549
+ formEl.getValidationMessages = () => validationMessagesRef.current;
668
550
  formEl.validationMessages = validationMessagesRef.current;
669
551
  }
670
552
  }, [watch, trigger, isValid, errors, formfields, clearErrors, props, submitCount]);
671
-
672
- // ========== CHILD FORM REGISTRATION ==========
673
- // Register this form with parent using a direct mutation approach instead of useImperativeHandle
674
- // This prevents the race condition where multiple forms registering via useImperativeHandle
675
- // overwrite each other's registrations
676
- (0, _react.useEffect)(function () {
553
+ useEffect(() => {
677
554
  if (!parentFormRef) return;
678
-
679
- // Ensure the ref has an object
680
555
  if (!parentFormRef.current) {
681
556
  parentFormRef.current = {};
682
557
  }
683
- var formId = formIdRef.current;
684
-
685
- // Register this form
558
+ const formId = formIdRef.current;
686
559
  parentFormRef.current[formId] = {
687
560
  formreset: formresetFn,
688
- validateFieldsOnSubmit: validateFieldsOnSubmit
561
+ validateFieldsOnSubmit
689
562
  };
690
-
691
- // Cleanup: unregister when unmounting
692
- return function () {
563
+ return () => {
693
564
  if (parentFormRef.current && parentFormRef.current[formId]) {
694
565
  delete parentFormRef.current[formId];
695
566
  }
696
567
  };
697
568
  }, [parentFormRef, formresetFn, validateFieldsOnSubmit]);
698
-
699
- // ========== RENDER PROPS ==========
700
-
701
- // Compute formdata outside memo to use in dependency array
702
- var computedFormdata = widgetFormData || childFormData || formdata;
703
-
704
- // Memoize the ref object to prevent unnecessary re-renders of FormProvider consumers.
705
- // Only recalculates when legitimately changing values change (errors, showViewMode, submitCount, etc.)
706
- var ref = (0, _react.useMemo)(function () {
707
- return {
569
+ const computedFormdata = widgetFormData || childFormData || formdata;
570
+ const ref = useMemo(
571
+ () => ({
708
572
  ref: formReff,
709
- updateFormData: updateFormData,
710
- control: control,
711
- watch: watch,
712
- registerHeaderAction: registerHeaderAction,
713
- onChangeHandler: onChangeHandler,
714
- trigger: trigger,
715
- errors: errors,
573
+ updateFormData,
574
+ control,
575
+ watch,
576
+ registerHeaderAction,
577
+ onChangeHandler,
578
+ trigger,
579
+ errors,
716
580
  name: formName,
717
581
  captionposition: props.captionposition,
718
- captionCls: captionCls,
719
- widgetCls: widgetCls,
720
- itemsPerRow: itemsPerRow,
582
+ captionCls,
583
+ widgetCls,
584
+ itemsPerRow,
721
585
  validationtype: props.validationtype,
722
- showViewMode: showViewMode,
586
+ showViewMode,
723
587
  formdata: computedFormdata,
724
- submit: submit,
588
+ submit,
725
589
  formreset: formresetFn
726
- };
727
- }, [updateFormData, control, watch, registerHeaderAction, onChangeHandler, trigger, errors, formName, props.captionposition, captionCls, widgetCls, itemsPerRow, props.validationtype, showViewMode, computedFormdata, submit, formresetFn]);
728
- var conditionalProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props.target && {
729
- target: props.target
730
- }), props.method && {
731
- method: props.method
732
- }), props.encType && {
733
- encType: props.encType
734
- }), props.action && {
735
- action: props.action
736
- });
737
- var formProps = _objectSpread(_objectSpread(_objectSpread({}, props), conditionalProps), {}, {
738
- submit: submit,
590
+ }),
591
+ [
592
+ updateFormData,
593
+ control,
594
+ watch,
595
+ registerHeaderAction,
596
+ onChangeHandler,
597
+ trigger,
598
+ errors,
599
+ formName,
600
+ props.captionposition,
601
+ captionCls,
602
+ widgetCls,
603
+ itemsPerRow,
604
+ props.validationtype,
605
+ showViewMode,
606
+ computedFormdata,
607
+ submit,
608
+ formresetFn
609
+ ]
610
+ );
611
+ const conditionalProps = __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, props.target && { target: props.target }), props.method && { method: props.method }), props.encType && { encType: props.encType }), props.action && { action: props.action });
612
+ const formProps = __spreadProps(__spreadValues(__spreadValues({}, props), conditionalProps), {
613
+ submit,
739
614
  formreset: formresetFn,
740
- formfields: formfields,
615
+ formfields,
741
616
  formWidgets: formfields,
742
- headerActions: headerActions,
743
- ref: ref,
617
+ headerActions,
618
+ ref,
744
619
  formElementRef: formRef,
745
- toggleMessage: toggleMessage,
746
- clearMessage: clearMessage,
747
- expandCollapsePanel: expandCollapsePanel,
748
- expanded: expanded,
749
- showmessage: showmessage,
750
- statusMessage: statusMessage,
751
- showViewMode: showViewMode,
752
- filter: filter,
753
- clearFilter: clearFilter,
754
- validateFieldsOnSubmit: validateFieldsOnSubmit,
755
- errors: errors,
620
+ toggleMessage,
621
+ clearMessage,
622
+ expandCollapsePanel,
623
+ expanded,
624
+ showmessage,
625
+ statusMessage,
626
+ showViewMode,
627
+ filter,
628
+ clearFilter,
629
+ validateFieldsOnSubmit,
630
+ errors,
756
631
  validationMessages: validationMessagesRef.current,
757
- "delete": deleteEntry,
632
+ delete: deleteEntry,
758
633
  cancel: handleCancel,
759
- "new": create,
760
- edit: edit,
761
- setShowViewMode: _setShowViewMode,
634
+ new: create,
635
+ edit,
636
+ setShowViewMode,
762
637
  dataoutput: getValues(),
763
638
  save: submit,
764
- setFormData: setFormData,
765
- reset: reset,
639
+ setFormData,
640
+ reset,
766
641
  numberoffields: Object.keys(formfields).length,
767
642
  className: formClassName,
768
- saveAndNew: saveAndNew,
769
- saveAndView: saveAndView,
770
- highlightInvalidFields: highlightInvalidFields,
643
+ saveAndNew,
644
+ saveAndView,
645
+ highlightInvalidFields,
771
646
  formdata: widgetFormData || childFormData || formdata,
772
- captionCls: captionCls,
773
- widgetCls: widgetCls,
774
- itemsPerRow: itemsPerRow
647
+ captionCls,
648
+ widgetCls,
649
+ itemsPerRow
775
650
  });
776
-
777
- // All nested child forms (direct, list, or prefab) should pass through to parent
778
- var parentFormDataContextValue = (0, _react.useMemo)(function () {
779
- var _ref4;
780
- return {
781
- formdata: (_ref4 = currentFormData !== null && currentFormData !== void 0 ? currentFormData : widgetFormData) !== null && _ref4 !== void 0 ? _ref4 : formdata,
782
- formName: formName || "",
783
- rootParentForm: isChildForm ? rootParentForm || "" : formName || "",
784
- parentDataPath: isChildForm ? fullDataPath : undefined,
785
- lastUpdateOrigin: isChildForm ? parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.lastUpdateOrigin : lastUpdateOriginRef.current,
786
- onChildDataChange: isChildForm ? parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.onChildDataChange : handleChildDataChange,
787
- registerChildField: isChildForm ? parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.registerChildField : handleRegisterChildField
788
- };
789
- }, [currentFormData, widgetFormData, formdata, formName, isValid, isChildForm, rootParentForm, fullDataPath, parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.lastUpdateOrigin, parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.onChildDataChange, parentFormDataContext === null || parentFormDataContext === void 0 ? void 0 : parentFormDataContext.registerChildField, handleChildDataChange, handleRegisterChildField]);
790
- return __jsx(_formContext.ParentFormDataContext.Provider, {
791
- value: parentFormDataContextValue
792
- }, __jsx(_formContext.FormProvider, {
793
- value: ref,
794
- isViewMode: showViewMode
795
- }, __jsx(WrappedComponent, (0, _extends2["default"])({}, formProps, {
796
- formWidgets: formfields,
797
- formfields: formfields
798
- }))));
651
+ const parentFormDataContextValue = useMemo(
652
+ () => {
653
+ var _a2;
654
+ return {
655
+ formdata: (_a2 = currentFormData != null ? currentFormData : widgetFormData) != null ? _a2 : formdata,
656
+ formName: formName || "",
657
+ rootParentForm: isChildForm ? rootParentForm || "" : formName || "",
658
+ parentDataPath: isChildForm ? fullDataPath : void 0,
659
+ lastUpdateOrigin: isChildForm ? parentFormDataContext == null ? void 0 : parentFormDataContext.lastUpdateOrigin : lastUpdateOriginRef.current,
660
+ onChildDataChange: isChildForm ? parentFormDataContext == null ? void 0 : parentFormDataContext.onChildDataChange : handleChildDataChange,
661
+ registerChildField: isChildForm ? parentFormDataContext == null ? void 0 : parentFormDataContext.registerChildField : handleRegisterChildField
662
+ };
663
+ },
664
+ [
665
+ currentFormData,
666
+ widgetFormData,
667
+ formdata,
668
+ formName,
669
+ isValid,
670
+ isChildForm,
671
+ rootParentForm,
672
+ fullDataPath,
673
+ parentFormDataContext == null ? void 0 : parentFormDataContext.lastUpdateOrigin,
674
+ parentFormDataContext == null ? void 0 : parentFormDataContext.onChildDataChange,
675
+ parentFormDataContext == null ? void 0 : parentFormDataContext.registerChildField,
676
+ handleChildDataChange,
677
+ handleRegisterChildField
678
+ ]
679
+ );
680
+ return /* @__PURE__ */ jsx(ParentFormDataContext.Provider, { value: parentFormDataContextValue, children: /* @__PURE__ */ jsx(FormProvider, { value: ref, isViewMode: showViewMode, children: /* @__PURE__ */ jsx(WrappedComponent, __spreadProps(__spreadValues({}, formProps), { formWidgets: formfields, formfields })) }) });
799
681
  };
800
682
  return ControlledForm;
801
683
  };
802
- var _default = exports["default"] = BaseForm;
684
+ var base_form_default = BaseForm;
685
+ export {
686
+ base_form_default as default
687
+ };