@wavemaker-ai/react-runtime 1.0.0-rc.312 → 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 (571) 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 +210 -155
  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.js +92 -98
  446. package/core/util/safe-is-equal.js +42 -94
  447. package/core/util/security.js +114 -153
  448. package/core/util/utils.d.ts +4 -1
  449. package/core/util/utils.js +88 -159
  450. package/core/widget-observer.js +34 -61
  451. package/higherOrder/BaseApp.js +327 -502
  452. package/higherOrder/BaseAppProps.js +0 -5
  453. package/higherOrder/BaseDateTime.js +277 -231
  454. package/higherOrder/BasePage.js +479 -735
  455. package/higherOrder/BasePartial.js +87 -114
  456. package/higherOrder/BasePrefab.js +190 -206
  457. package/higherOrder/DataNav.js +287 -302
  458. package/higherOrder/helper.js +62 -48
  459. package/higherOrder/props.js +0 -5
  460. package/higherOrder/withBaseWrapper.js +123 -168
  461. package/higherOrder/withStandalone.js +28 -26
  462. package/hooks/useAccess.js +113 -289
  463. package/hooks/useAppConfig.js +15 -40
  464. package/hooks/useAuth.js +256 -495
  465. package/hooks/useDataSourceSubscription.d.ts +3 -3
  466. package/hooks/useDataSourceSubscription.js +99 -109
  467. package/hooks/useDebounce.js +28 -56
  468. package/hooks/useDeviceVisibility.js +14 -23
  469. package/hooks/useHttp.d.ts +1 -0
  470. package/hooks/useHttp.js +318 -493
  471. package/libs/index.js +4 -13
  472. package/libs/prefab/index.js +6 -20
  473. package/mui-config/theme-provider.js +9 -17
  474. package/mui-config/theme.js +6 -9
  475. package/package-lock.json +815 -3206
  476. package/package.json +3 -19
  477. package/providers/AppProviders.js +21 -24
  478. package/runtime-dynamic/App.js +65 -93
  479. package/runtime-dynamic/app-initializer.js +193 -411
  480. package/runtime-dynamic/components/ErrorBoundary.js +59 -76
  481. package/runtime-dynamic/components/PageWrapper.js +23 -35
  482. package/runtime-dynamic/components/PrefabPreview.js +40 -69
  483. package/runtime-dynamic/components/partial-content.d.ts +2 -3
  484. package/runtime-dynamic/components/partial-content.js +66 -45
  485. package/runtime-dynamic/components/prefab-content.js +37 -30
  486. package/runtime-dynamic/components/use-dynamic-component.js +62 -150
  487. package/runtime-dynamic/factories/build-base-page-like-component.js +44 -58
  488. package/runtime-dynamic/factories/dynamic-component.d.ts +9 -0
  489. package/runtime-dynamic/factories/dynamic-component.js +83 -0
  490. package/runtime-dynamic/factories/prefab-factory.js +60 -81
  491. package/runtime-dynamic/factories/startup-info.js +12 -25
  492. package/runtime-dynamic/factories/utils.d.ts +1 -9
  493. package/runtime-dynamic/factories/utils.js +47 -129
  494. package/runtime-dynamic/index.js +56 -191
  495. package/runtime-dynamic/main.js +42 -70
  496. package/runtime-dynamic/preview-mode.js +14 -29
  497. package/runtime-dynamic/preview-navigation.js +21 -30
  498. package/runtime-dynamic/preview-path.d.ts +5 -0
  499. package/runtime-dynamic/preview-path.js +13 -0
  500. package/runtime-dynamic/preview-resource-base.js +15 -31
  501. package/runtime-dynamic/registry/component-registry.js +269 -334
  502. package/runtime-dynamic/registry/custom-widget-registry.js +11 -15
  503. package/runtime-dynamic/registry/index.js +24 -63
  504. package/runtime-dynamic/registry/store.d.ts +1 -0
  505. package/runtime-dynamic/registry/store.js +18 -23
  506. package/runtime-dynamic/routes.js +53 -81
  507. package/runtime-dynamic/services/app-extension-provider.js +17 -44
  508. package/runtime-dynamic/services/autolayout-inject.d.ts +4 -0
  509. package/runtime-dynamic/services/autolayout-inject.js +27 -0
  510. package/runtime-dynamic/services/cache.js +27 -33
  511. package/runtime-dynamic/services/compile-render.d.ts +9 -0
  512. package/runtime-dynamic/services/compile-render.js +142 -0
  513. package/runtime-dynamic/services/component-ref-provider.js +70 -124
  514. package/runtime-dynamic/services/css-scoping.js +23 -28
  515. package/runtime-dynamic/services/fragment-url.js +37 -50
  516. package/runtime-dynamic/services/index.js +48 -152
  517. package/runtime-dynamic/services/markup-transpiler.d.ts +2 -2
  518. package/runtime-dynamic/services/markup-transpiler.js +39 -231
  519. package/runtime-dynamic/services/prefab-resources.js +40 -118
  520. package/runtime-dynamic/services/resource-manager.d.ts +2 -1
  521. package/runtime-dynamic/services/resource-manager.js +32 -63
  522. package/runtime-dynamic/services/script-executor.js +50 -61
  523. package/runtime-dynamic/services/variable-factory.js +141 -184
  524. package/runtime-dynamic/services/variable-registry.js +69 -115
  525. package/runtime-dynamic/services/variable-transpiler.js +73 -103
  526. package/runtime-dynamic/shims/next-image.js +79 -50
  527. package/runtime-dynamic/shims/next-link.js +58 -32
  528. package/runtime-dynamic/shims/next-navigation.js +17 -34
  529. package/runtime-dynamic/utils/index.js +15 -30
  530. package/store/bindActions/i18nActions.js +16 -18
  531. package/store/index.js +29 -35
  532. package/store/middleware/navigationMiddleware.js +25 -45
  533. package/store/middleware/pendingTabNavigationIntentMiddleware.js +20 -25
  534. package/store/slices/appConfigSlice.js +65 -94
  535. package/store/slices/authSlice.js +317 -471
  536. package/store/slices/i18nSlice.js +169 -168
  537. package/store/slices/navigationSlice.js +22 -20
  538. package/store/util/resolve-path.d.ts +1 -0
  539. package/store/util/resolve-path.js +7 -0
  540. package/store/viewport.service.js +150 -194
  541. package/types/index.js +10 -15
  542. package/utils/attr.js +198 -41
  543. package/utils/custom-expression/index.js +55 -151
  544. package/utils/custom-expression/parser.js +106 -182
  545. package/utils/dataset-util.js +113 -154
  546. package/utils/eval-expression.js +10 -19
  547. package/utils/form-state.util.js +60 -118
  548. package/utils/form-utils.js +49 -190
  549. package/utils/format-util.js +113 -184
  550. package/utils/layoutsize-util.js +11 -17
  551. package/utils/lib-error-skipper.js +54 -52
  552. package/utils/page-params-util.js +50 -40
  553. package/utils/pending-tab-navigation-intent.js +7 -17
  554. package/utils/resource-url.js +8 -19
  555. package/utils/state-persistance.js +136 -253
  556. package/utils/style-utils.js +24 -78
  557. package/utils/transformedDataset-utils.js +353 -381
  558. package/utils/widget-cleanup-util.js +42 -74
  559. package/utils/widgets.js +19 -31
  560. package/variables/base-variable.js +117 -166
  561. package/variables/constants.js +5 -8
  562. package/variables/crud-variable.js +150 -181
  563. package/variables/live-variable.d.ts +1 -1
  564. package/variables/live-variable.js +140 -174
  565. package/variables/metadata.service.js +74 -116
  566. package/variables/model-variable.js +68 -78
  567. package/variables/service-variable.js +171 -285
  568. package/wm-namespace.js +11 -14
  569. package/components/chart/src/css.d.js +0 -1
  570. package/tsconfig.declaration.tsbuildinfo +0 -1
  571. package/types/global.d.js +0 -3
@@ -1,238 +1,132 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useFormDataSync = useFormDataSync;
8
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
- var _react = require("react");
11
- var _isEqual = _interopRequireDefault(require("lodash-es/isEqual"));
12
- var _props = require("../props");
13
- /**
14
- * Sync State Machine (Simplified with Origin Tracking)
15
- *
16
- * The circular sync problem is now handled by origin tracking in the parent context.
17
- * Child forms skip sync when the data change originated from a child edit.
18
- *
19
- * States:
20
- * - UNINITIALIZED: No data has been synced yet (accepts any incoming data)
21
- * - SYNCED: Data has been synced from external source (accepts new/changed data)
22
- *
23
- * Transitions:
24
- * - UNINITIALIZED -> SYNCED: First sync from external source
25
- * - SYNCED -> SYNCED: New data from external source (when different)
26
- */
27
-
28
- /**
29
- * Checks if a value is considered "empty" for sync purposes
30
- */
1
+ import { useRef, useCallback, useState, useMemo } from "react";
2
+ import isEqual from "lodash-es/isEqual";
3
+ import {
4
+ getFormTypeConfig,
5
+ isChildFormType
6
+ } from "../props";
31
7
  function isEmpty(value) {
32
- return value === undefined || value === null || value === "";
8
+ return value === void 0 || value === null || value === "";
33
9
  }
34
-
35
- /**
36
- * Form Data Sync Manager
37
- *
38
- * Coordinates bidirectional data flow in nested forms:
39
- * - DOWN: Props/widget data initializes forms
40
- * - UP: User edits propagate to parent forms via events
41
- * - DOWN: Context updates flow to child forms
42
- *
43
- * Key behaviors:
44
- * 1. First sync always accepted (initialization)
45
- * 2. Identical data ignored (no-op)
46
- * 3. User clears block stale external data until genuinely new data arrives
47
- * 4. Child forms have additional staleness checks for parent sync delays
48
- */
49
- function useFormDataSync(_ref) {
50
- var reset = _ref.reset,
51
- formType = _ref.formType,
52
- formName = _ref.formName;
53
- var config = (0, _react.useMemo)(function () {
54
- return (0, _props.getFormTypeConfig)(formType);
55
- }, [formType]);
56
- var isChildForm = (0, _props.isChildFormType)(formType);
57
- var shouldWrapData = config.dataResetStrategy === "wrapped";
58
- var _useState = (0, _react.useState)(null),
59
- currentFormData = _useState[0],
60
- setCurrentFormData = _useState[1];
61
- var stateRef = (0, _react.useRef)({
10
+ function useFormDataSync({
11
+ reset,
12
+ formType,
13
+ formName
14
+ }) {
15
+ const config = useMemo(() => getFormTypeConfig(formType), [formType]);
16
+ const isChildForm = isChildFormType(formType);
17
+ const shouldWrapData = config.dataResetStrategy === "wrapped";
18
+ const [currentFormData, setCurrentFormData] = useState(null);
19
+ const stateRef = useRef({
62
20
  state: "UNINITIALIZED",
63
21
  currentData: null,
64
22
  isUpdating: false
65
23
  });
66
-
67
- // Track the last externally synced data (in its original nested form)
68
- // This prevents re-syncing the same data after a reset
69
- var lastSyncedExternalDataRef = (0, _react.useRef)(null);
70
-
71
- /**
72
- * Applies the data reset strategy based on form type
73
- */
74
- var applyResetStrategy = (0, _react.useCallback)(function (data) {
75
- return shouldWrapData && formName ? (0, _defineProperty2["default"])({}, formName, data) : data;
76
- }, [shouldWrapData, formName]);
77
-
78
- /**
79
- * Updates internal state after a sync operation
80
- */
81
- var updateState = (0, _react.useCallback)(function (data, newState) {
24
+ const lastSyncedExternalDataRef = useRef(null);
25
+ const applyResetStrategy = useCallback(
26
+ (data) => {
27
+ return shouldWrapData && formName ? { [formName]: data } : data;
28
+ },
29
+ [shouldWrapData, formName]
30
+ );
31
+ const updateState = useCallback((data, newState) => {
82
32
  stateRef.current.currentData = data;
83
33
  stateRef.current.state = newState;
84
34
  setCurrentFormData(data);
85
35
  }, []);
86
-
87
- /**
88
- * Guards against re-entrant sync operations
89
- */
90
- var withUpdateLock = (0, _react.useCallback)(function (operation) {
36
+ const withUpdateLock = useCallback((operation) => {
91
37
  stateRef.current.isUpdating = true;
92
38
  operation();
93
- setTimeout(function () {
39
+ setTimeout(() => {
94
40
  stateRef.current.isUpdating = false;
95
41
  }, 0);
96
42
  }, []);
97
-
98
- /**
99
- * Determines if incoming data should trigger a sync
100
- *
101
- * With origin tracking, circular sync is handled at the effect level.
102
- * This function only needs to check for valid/changed data.
103
- */
104
- var shouldSync = (0, _react.useCallback)(function (incomingData) {
105
- // Guard: Invalid data or re-entrant call
106
- if (!incomingData || incomingData._wmListItemId) return false;
107
- if (stateRef.current.isUpdating) return false;
108
- var _stateRef$current = stateRef.current,
109
- state = _stateRef$current.state,
110
- currentData = _stateRef$current.currentData;
111
-
112
- // State: UNINITIALIZED - accept any valid data
113
- if (state === "UNINITIALIZED" || !currentData) {
114
- return true;
115
- }
116
-
117
- // Guard: Identical data
118
- if ((0, _isEqual["default"])(incomingData, currentData)) {
119
- return false;
120
- }
121
-
122
- // Check for meaningful changes
123
- var incomingKeys = Object.keys(incomingData);
124
- var currentKeys = Object.keys(currentData);
125
- if (!isChildForm) {
126
- // Standalone forms: only sync if incoming data has new fields
127
- // Never overwrite existing fields - user edits take precedence
128
- var hasNewFields = incomingKeys.some(function (key) {
129
- return !(key in currentData);
130
- });
131
-
132
- // CRITICAL FIX: After a form reset, the currentData has flattened keys (e.g., "EmployeeAddress.dateofbirth")
133
- // but incomingData has nested keys (e.g., "EmployeeAddress"). This causes hasNewFields to be true
134
- // even though the data hasn't actually changed. We need to check if the incoming data is the same
135
- // as what was last synced (before flattening).
136
- if (hasNewFields && lastSyncedExternalDataRef.current !== null) {
137
- var isSameAsLastSynced = (0, _isEqual["default"])(incomingData, lastSyncedExternalDataRef.current);
138
- if (isSameAsLastSynced) {
139
- // Data is the same as what was already synced - don't re-sync after reset
140
- return false;
43
+ const shouldSync = useCallback(
44
+ (incomingData) => {
45
+ if (!incomingData || incomingData._wmListItemId) return false;
46
+ if (stateRef.current.isUpdating) return false;
47
+ const { state, currentData } = stateRef.current;
48
+ if (state === "UNINITIALIZED" || !currentData) {
49
+ return true;
50
+ }
51
+ if (isEqual(incomingData, currentData)) {
52
+ return false;
53
+ }
54
+ const incomingKeys = Object.keys(incomingData);
55
+ const currentKeys = Object.keys(currentData);
56
+ if (!isChildForm) {
57
+ const hasNewFields = incomingKeys.some((key) => !(key in currentData));
58
+ if (hasNewFields && lastSyncedExternalDataRef.current !== null) {
59
+ const isSameAsLastSynced = isEqual(incomingData, lastSyncedExternalDataRef.current);
60
+ if (isSameAsLastSynced) {
61
+ return false;
62
+ }
141
63
  }
64
+ return hasNewFields;
142
65
  }
143
-
144
- // For standalone forms with data already synced, only allow new fields
145
- // Don't allow changes to existing fields (would overwrite user edits)
146
- return hasNewFields;
147
- }
148
-
149
- // Child forms: reject stale parent data that hasn't caught up with user edits
150
- var incomingIsStale = currentKeys.some(function (key) {
151
- var cur = currentData[key];
152
- var inc = incomingData[key];
153
- var curHasValue = !isEmpty(cur);
154
- var incHasValue = !isEmpty(inc);
155
-
156
- // Current has value that incoming lacks or differs
157
- if (curHasValue && !incHasValue) return true;
158
- if (curHasValue && incHasValue && !(0, _isEqual["default"])(cur, inc)) return true;
159
-
160
- // User intentionally cleared a field (current is empty, incoming has value)
161
- // This is stale because user's clear action should be preserved
162
- if (!curHasValue && incHasValue) return true;
163
- return false;
164
- });
165
- return !incomingIsStale;
166
- }, [isChildForm]);
167
-
168
- /**
169
- * Sync data from external source (props, context, events)
170
- * With origin tracking, circular sync is blocked at effect level
171
- */
172
- var syncFormData = (0, _react.useCallback)(function (data) {
173
- if (!shouldSync(data)) return;
174
-
175
- // Store the original external data before flattening for future comparisons
176
- lastSyncedExternalDataRef.current = data;
177
- withUpdateLock(function () {
178
- reset(applyResetStrategy(data));
179
- updateState(data, "SYNCED");
180
- });
181
- }, [shouldSync, withUpdateLock, reset, applyResetStrategy, updateState, formName, isChildForm]);
182
-
183
- /**
184
- * Force set form data (bypasses staleness guards)
185
- * Use for explicit user actions: edit(), setFormData()
186
- */
187
- var resetFormData = (0, _react.useCallback)(function (data) {
188
- if (!data || (0, _typeof2["default"])(data) !== "object" || Array.isArray(data)) return;
189
-
190
- // Update the last synced reference so future syncs compare against this data
191
- lastSyncedExternalDataRef.current = data;
192
- withUpdateLock(function () {
193
- reset(applyResetStrategy(data));
194
- updateState(data, "SYNCED");
195
- });
196
- }, [withUpdateLock, reset, applyResetStrategy, updateState]);
197
-
198
- /**
199
- * Clear form to empty/default state
200
- * Use for: formreset(), create(), saveAndNew()
201
- */
202
- var clearFormData = (0, _react.useCallback)(function (cleanedData) {
203
- var dataToReset = cleanedData || {};
204
- withUpdateLock(function () {
205
- reset(applyResetStrategy(dataToReset));
206
- updateState(dataToReset, "SYNCED");
207
- });
208
- }, [withUpdateLock, reset, applyResetStrategy, updateState]);
209
-
210
- /**
211
- * Update tracked data after user edits (from watch callback or child changes)
212
- * Keeps internal ref in sync without triggering React state update.
213
- * This prevents re-render cascades on every keystroke - the ref is sufficient
214
- * for staleness checks. React state (currentFormData) only updates on
215
- * external sync operations (syncFormData, resetFormData, clearFormData).
216
- */
217
- var markCurrentData = (0, _react.useCallback)(function (data) {
66
+ const incomingIsStale = currentKeys.some((key) => {
67
+ const cur = currentData[key];
68
+ const inc = incomingData[key];
69
+ const curHasValue = !isEmpty(cur);
70
+ const incHasValue = !isEmpty(inc);
71
+ if (curHasValue && !incHasValue) return true;
72
+ if (curHasValue && incHasValue && !isEqual(cur, inc)) return true;
73
+ if (!curHasValue && incHasValue) return true;
74
+ return false;
75
+ });
76
+ return !incomingIsStale;
77
+ },
78
+ [isChildForm]
79
+ );
80
+ const syncFormData = useCallback(
81
+ (data) => {
82
+ if (!shouldSync(data)) return;
83
+ lastSyncedExternalDataRef.current = data;
84
+ withUpdateLock(() => {
85
+ reset(applyResetStrategy(data));
86
+ updateState(data, "SYNCED");
87
+ });
88
+ },
89
+ [shouldSync, withUpdateLock, reset, applyResetStrategy, updateState, formName, isChildForm]
90
+ );
91
+ const resetFormData = useCallback(
92
+ (data) => {
93
+ if (!data || typeof data !== "object" || Array.isArray(data)) return;
94
+ lastSyncedExternalDataRef.current = data;
95
+ withUpdateLock(() => {
96
+ reset(applyResetStrategy(data));
97
+ updateState(data, "SYNCED");
98
+ });
99
+ },
100
+ [withUpdateLock, reset, applyResetStrategy, updateState]
101
+ );
102
+ const clearFormData = useCallback(
103
+ (cleanedData) => {
104
+ const dataToReset = cleanedData || {};
105
+ withUpdateLock(() => {
106
+ reset(applyResetStrategy(dataToReset));
107
+ updateState(dataToReset, "SYNCED");
108
+ });
109
+ },
110
+ [withUpdateLock, reset, applyResetStrategy, updateState]
111
+ );
112
+ const markCurrentData = useCallback((data) => {
218
113
  stateRef.current.currentData = data;
219
114
  if (stateRef.current.state === "UNINITIALIZED" && data && Object.keys(data).length > 0) {
220
115
  stateRef.current.state = "SYNCED";
221
116
  }
222
117
  }, []);
223
-
224
- /**
225
- * Check if a sync operation is in progress
226
- */
227
- var isUpdating = (0, _react.useCallback)(function () {
118
+ const isUpdating = useCallback(() => {
228
119
  return stateRef.current.isUpdating;
229
120
  }, []);
230
121
  return {
231
- currentFormData: currentFormData,
232
- syncFormData: syncFormData,
233
- resetFormData: resetFormData,
234
- clearFormData: clearFormData,
235
- markCurrentData: markCurrentData,
236
- isUpdating: isUpdating
122
+ currentFormData,
123
+ syncFormData,
124
+ resetFormData,
125
+ clearFormData,
126
+ markCurrentData,
127
+ isUpdating
237
128
  };
238
- }
129
+ }
130
+ export {
131
+ useFormDataSync
132
+ };
@@ -1,175 +1,123 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useFormOperations = useFormOperations;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
- var _react = require("react");
12
- var _utils = require("../utils");
13
- var _props = require("../props");
14
- /**
15
- * Hook for managing form CRUD operations
16
- *
17
- * Handles:
18
- * - Form reset (clearing all fields)
19
- * - Create new entry
20
- * - Edit existing entry
21
- * - Set form data programmatically
22
- * - Save and new / Save and view actions
23
- * - View mode state management
24
- */
25
- function useFormOperations(_ref) {
26
- var formName = _ref.formName,
27
- formfields = _ref.formfields,
28
- formRef = _ref.formRef,
29
- formReff = _ref.formReff,
30
- formType = _ref.formType,
31
- fullDataPath = _ref.fullDataPath,
32
- parentFormDataContext = _ref.parentFormDataContext,
33
- clearFormData = _ref.clearFormData,
34
- resetFormData = _ref.resetFormData,
35
- trigger = _ref.trigger,
36
- submit = _ref.submit,
37
- listener = _ref.listener,
38
- widgetFormType = _ref.widgetFormType,
39
- debouncedFilter = _ref.debouncedFilter;
40
- // Check if this form uses prefixed field registration (DIRECT_CHILD, LIST_CHILD)
41
- var hasPrefixedFields = (0, _props.usesPrefixedFields)(formType);
42
- var _useState = (0, _react.useState)(false),
43
- showViewMode = _useState[0],
44
- setShowViewMode = _useState[1];
45
-
46
- /**
47
- * Resets all form fields to empty/default values
48
- * Also resets all registered child forms
49
- */
50
- var formreset = (0, _react.useCallback)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
51
- var cleanedData, formNamePrefix, el;
52
- return _regenerator["default"].wrap(function _callee$(_context) {
53
- while (1) switch (_context.prev = _context.next) {
54
- case 0:
55
- cleanedData = {};
56
- formNamePrefix = "".concat(formName, ".");
57
- Object.keys(formfields).forEach(function (key) {
58
- var _formfields$key, _formfields$key2;
59
- if (formfields[key].formName !== formName) return;
60
-
61
- // Skip _formWidget suffixed keys - they are duplicates
62
- if (key.endsWith("_formWidget")) return;
63
-
64
- // For forms with prefixed field registration, handle keys correctly
65
- var fieldKey = key;
66
- if (hasPrefixedFields) {
67
- if (key.startsWith(formNamePrefix)) {
68
- fieldKey = key.substring(formNamePrefix.length);
69
- } else {
70
- return;
71
- }
72
- }
73
-
74
- // Do not reset for readonly and disabled fields
75
- if (formfields[key].readonly || formfields[key].readOnly || formfields[key].disabled) {
76
- cleanedData[fieldKey] = formfields[key].defaultvalue || formfields[key].value;
77
- } else {
78
- cleanedData[fieldKey] = "";
79
- }
80
- var isRange = ((_formfields$key = formfields[key]) === null || _formfields$key === void 0 ? void 0 : _formfields$key.isRange) === true || ((_formfields$key2 = formfields[key]) === null || _formfields$key2 === void 0 ? void 0 : _formfields$key2.isRange) === "true";
81
- if (widgetFormType === "live-filter" && isRange) {
82
- cleanedData["".concat(fieldKey, "_maxWidget")] = "";
83
- }
84
- });
85
- clearFormData(cleanedData);
86
- trigger();
87
-
88
- // For child forms, emit cleared data UP to parent form
89
- if (fullDataPath && parentFormDataContext !== null && parentFormDataContext !== void 0 && parentFormDataContext.onChildDataChange) {
90
- parentFormDataContext.onChildDataChange(fullDataPath, cleanedData);
91
- }
92
-
93
- // Dispatch event for uncontrolled widgets
94
- el = formRef.current;
95
- if (el) {
96
- el.dispatchEvent(new CustomEvent("wmformreset", {
97
- bubbles: true
98
- }));
99
- }
100
-
101
- // Reset all registered child forms
102
- if (formReff !== null && formReff !== void 0 && formReff.current) {
103
- Object.values(formReff.current).forEach(function (childForm) {
104
- var _childForm$formreset;
105
- return childForm === null || childForm === void 0 || (_childForm$formreset = childForm.formreset) === null || _childForm$formreset === void 0 ? void 0 : _childForm$formreset.call(childForm);
106
- });
107
- }
108
- case 9:
109
- case "end":
110
- return _context.stop();
1
+ import { useState, useCallback } from "react";
2
+ import { cleanNullValues, setWidgetFormData } from "../utils";
3
+ import { usesPrefixedFields } from "../props";
4
+ function useFormOperations({
5
+ formName,
6
+ formfields,
7
+ formRef,
8
+ formReff,
9
+ formType,
10
+ fullDataPath,
11
+ parentFormDataContext,
12
+ clearFormData,
13
+ resetFormData,
14
+ trigger,
15
+ submit,
16
+ listener,
17
+ widgetFormType,
18
+ debouncedFilter
19
+ }) {
20
+ const hasPrefixedFields = usesPrefixedFields(formType);
21
+ const [showViewMode, setShowViewMode] = useState(false);
22
+ const formreset = useCallback(async () => {
23
+ const cleanedData = {};
24
+ const formNamePrefix = `${formName}.`;
25
+ Object.keys(formfields).forEach((key) => {
26
+ var _a, _b;
27
+ if (formfields[key].formName !== formName) return;
28
+ if (key.endsWith("_formWidget")) return;
29
+ let fieldKey = key;
30
+ if (hasPrefixedFields) {
31
+ if (key.startsWith(formNamePrefix)) {
32
+ fieldKey = key.substring(formNamePrefix.length);
33
+ } else {
34
+ return;
35
+ }
111
36
  }
112
- }, _callee);
113
- })), [formName, formfields, hasPrefixedFields, clearFormData, trigger, fullDataPath, parentFormDataContext, formRef, formReff]);
114
-
115
- /**
116
- * Creates a new entry by resetting the form
117
- */
118
- var create = (0, _react.useCallback)(function () {
37
+ if (formfields[key].readonly || formfields[key].readOnly || formfields[key].disabled) {
38
+ cleanedData[fieldKey] = formfields[key].defaultvalue || formfields[key].value;
39
+ } else {
40
+ cleanedData[fieldKey] = "";
41
+ }
42
+ const isRange = ((_a = formfields[key]) == null ? void 0 : _a.isRange) === true || ((_b = formfields[key]) == null ? void 0 : _b.isRange) === "true";
43
+ if (widgetFormType === "live-filter" && isRange) {
44
+ cleanedData[`${fieldKey}_maxWidget`] = "";
45
+ }
46
+ });
47
+ clearFormData(cleanedData);
48
+ trigger();
49
+ if (fullDataPath && (parentFormDataContext == null ? void 0 : parentFormDataContext.onChildDataChange)) {
50
+ parentFormDataContext.onChildDataChange(fullDataPath, cleanedData);
51
+ }
52
+ const el = formRef.current;
53
+ if (el) {
54
+ el.dispatchEvent(new CustomEvent("wmformreset", { bubbles: true }));
55
+ }
56
+ if (formReff == null ? void 0 : formReff.current) {
57
+ Object.values(formReff.current).forEach((childForm) => {
58
+ var _a;
59
+ return (_a = childForm == null ? void 0 : childForm.formreset) == null ? void 0 : _a.call(childForm);
60
+ });
61
+ }
62
+ }, [
63
+ formName,
64
+ formfields,
65
+ hasPrefixedFields,
66
+ clearFormData,
67
+ trigger,
68
+ fullDataPath,
69
+ parentFormDataContext,
70
+ formRef,
71
+ formReff
72
+ ]);
73
+ const create = useCallback(() => {
119
74
  formreset();
120
75
  formreset();
121
76
  setShowViewMode(false);
122
77
  }, [formreset]);
123
-
124
- /**
125
- * Loads data for editing
126
- */
127
- var edit = (0, _react.useCallback)(function (data) {
128
- if (data) {
129
- var cleanedData = (0, _utils.cleanNullValues)(data);
78
+ const edit = useCallback(
79
+ (data) => {
80
+ if (data) {
81
+ const cleanedData = cleanNullValues(data);
82
+ resetFormData(cleanedData);
83
+ }
84
+ setShowViewMode(false);
85
+ },
86
+ [resetFormData]
87
+ );
88
+ const setFormData = useCallback(
89
+ (data) => {
90
+ if (!data || typeof data !== "object" || Array.isArray(data)) {
91
+ return;
92
+ }
93
+ const cleanedData = cleanNullValues(data);
130
94
  resetFormData(cleanedData);
131
- }
132
- setShowViewMode(false);
133
- }, [resetFormData]);
134
-
135
- /**
136
- * Sets form data programmatically
137
- */
138
- var setFormData = (0, _react.useCallback)(function (data) {
139
- if (!data || (0, _typeof2["default"])(data) !== "object" || Array.isArray(data)) {
140
- return;
141
- }
142
- var cleanedData = (0, _utils.cleanNullValues)(data);
143
- resetFormData(cleanedData);
144
- (0, _utils.setWidgetFormData)(listener, formName, cleanedData);
145
- if (widgetFormType === "live-filter" && debouncedFilter) {
146
- debouncedFilter();
147
- }
148
- }, [resetFormData, formName, widgetFormType, debouncedFilter]);
149
-
150
- /**
151
- * Saves the form and creates a new entry
152
- */
153
- var saveAndNew = (0, _react.useCallback)(function () {
95
+ setWidgetFormData(listener, formName, cleanedData);
96
+ if (widgetFormType === "live-filter" && debouncedFilter) {
97
+ debouncedFilter();
98
+ }
99
+ },
100
+ [resetFormData, formName, widgetFormType, debouncedFilter]
101
+ );
102
+ const saveAndNew = useCallback(() => {
154
103
  submit();
155
104
  clearFormData({});
156
105
  }, [submit, clearFormData]);
157
-
158
- /**
159
- * Saves the form and switches to view mode
160
- */
161
- var saveAndView = (0, _react.useCallback)(function () {
106
+ const saveAndView = useCallback(() => {
162
107
  submit();
163
108
  setShowViewMode(true);
164
109
  }, [submit]);
165
110
  return {
166
- formreset: formreset,
167
- create: create,
168
- edit: edit,
169
- setFormData: setFormData,
170
- saveAndNew: saveAndNew,
171
- saveAndView: saveAndView,
172
- showViewMode: showViewMode,
173
- setShowViewMode: setShowViewMode
111
+ formreset,
112
+ create,
113
+ edit,
114
+ setFormData,
115
+ saveAndNew,
116
+ saveAndView,
117
+ showViewMode,
118
+ setShowViewMode
174
119
  };
175
- }
120
+ }
121
+ export {
122
+ useFormOperations
123
+ };