@wavemaker-ai/react-runtime 1.0.0-rc.647502 → 1.0.0-rc.647565

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 +808 -3177
  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,276 +1,143 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- var _exportNames = {
8
- addUniqueRowIds: true,
9
- getWidgetMappingForType: true,
10
- getBooleanDataset: true,
11
- isColumnVisibleForViewport: true,
12
- parseTableColumns: true,
13
- getAggregateFunctions: true,
14
- parseTableStructureWithGroups: true,
15
- flattenTableStructure: true,
16
- parseTableRowActions: true,
17
- parseTableActions: true,
18
- parseTableRowExpansion: true,
19
- isEditAction: true,
20
- isDeleteAction: true,
21
- isAddNewAction: true,
22
- getActionButtonClass: true,
23
- getTableActionButtonClass: true,
24
- validateEditingFields: true,
25
- getButtonClasses: true,
26
- getSpacingClasses: true,
27
- shouldShowPagination: true,
28
- shouldShowPanelHeading: true,
29
- handleNewRowNavigation: true,
30
- INTERNAL_PROPERTIES: true,
31
- cleanRowData: true,
32
- parseWidth: true,
33
- getColClass: true
34
- };
35
- exports.validateEditingFields = exports.shouldShowPanelHeading = exports.shouldShowPagination = exports.parseWidth = exports.parseTableStructureWithGroups = exports.parseTableRowExpansion = exports.parseTableRowActions = exports.parseTableColumns = exports.parseTableActions = exports.isEditAction = exports.isDeleteAction = exports.isColumnVisibleForViewport = exports.isAddNewAction = exports.handleNewRowNavigation = exports.getWidgetMappingForType = exports.getTableActionButtonClass = exports.getSpacingClasses = exports.getColClass = exports.getButtonClasses = exports.getBooleanDataset = exports.getAggregateFunctions = exports.getActionButtonClass = exports.flattenTableStructure = exports.cleanRowData = exports.addUniqueRowIds = exports.INTERNAL_PROPERTIES = void 0;
36
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
37
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
38
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
39
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
40
- var _lodashEs = require("lodash-es");
41
- var _react = _interopRequireDefault(require("react"));
42
- var _constants = require("./constants");
43
- Object.keys(_constants).forEach(function (key) {
44
- if (key === "default" || key === "__esModule") return;
45
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
46
- if (key in exports && exports[key] === _constants[key]) return;
47
- Object.defineProperty(exports, key, {
48
- enumerable: true,
49
- get: function get() {
50
- return _constants[key];
51
- }
52
- });
53
- });
54
- var _renderDisplayCell = require("./renderDisplayCell");
55
- Object.keys(_renderDisplayCell).forEach(function (key) {
56
- if (key === "default" || key === "__esModule") return;
57
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
58
- if (key in exports && exports[key] === _renderDisplayCell[key]) return;
59
- Object.defineProperty(exports, key, {
60
- enumerable: true,
61
- get: function get() {
62
- return _renderDisplayCell[key];
63
- }
64
- });
65
- });
66
- var _buildSelectionColumns = require("./buildSelectionColumns");
67
- Object.keys(_buildSelectionColumns).forEach(function (key) {
68
- if (key === "default" || key === "__esModule") return;
69
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
70
- if (key in exports && exports[key] === _buildSelectionColumns[key]) return;
71
- Object.defineProperty(exports, key, {
72
- enumerable: true,
73
- get: function get() {
74
- return _buildSelectionColumns[key];
75
- }
76
- });
77
- });
78
- var _validation = require("./validation");
79
- Object.keys(_validation).forEach(function (key) {
80
- if (key === "default" || key === "__esModule") return;
81
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
82
- if (key in exports && exports[key] === _validation[key]) return;
83
- Object.defineProperty(exports, key, {
84
- enumerable: true,
85
- get: function get() {
86
- return _validation[key];
87
- }
88
- });
89
- });
90
- var _selectionUtils = require("./selectionUtils");
91
- Object.keys(_selectionUtils).forEach(function (key) {
92
- if (key === "default" || key === "__esModule") return;
93
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
94
- if (key in exports && exports[key] === _selectionUtils[key]) return;
95
- Object.defineProperty(exports, key, {
96
- enumerable: true,
97
- get: function get() {
98
- return _selectionUtils[key];
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]);
99
16
  }
100
- });
101
- });
102
- var _columnBuilder = require("./columnBuilder");
103
- Object.keys(_columnBuilder).forEach(function (key) {
104
- if (key === "default" || key === "__esModule") return;
105
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
106
- if (key in exports && exports[key] === _columnBuilder[key]) return;
107
- Object.defineProperty(exports, key, {
108
- enumerable: true,
109
- get: function get() {
110
- return _columnBuilder[key];
111
- }
112
- });
113
- });
114
- var _columnWidthDistribution = require("./columnWidthDistribution");
115
- Object.keys(_columnWidthDistribution).forEach(function (key) {
116
- if (key === "default" || key === "__esModule") return;
117
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
118
- if (key in exports && exports[key] === _columnWidthDistribution[key]) return;
119
- Object.defineProperty(exports, key, {
120
- enumerable: true,
121
- get: function get() {
122
- return _columnWidthDistribution[key];
123
- }
124
- });
125
- });
126
- var _tableHelpers = require("./table-helpers");
127
- Object.keys(_tableHelpers).forEach(function (key) {
128
- if (key === "default" || key === "__esModule") return;
129
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
130
- if (key in exports && exports[key] === _tableHelpers[key]) return;
131
- Object.defineProperty(exports, key, {
132
- enumerable: true,
133
- get: function get() {
134
- return _tableHelpers[key];
135
- }
136
- });
137
- });
138
- 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; }
139
- 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; }
140
- var formWidgets = ["WmText", "WmTextarea", "WmCheckbox", "WmSlider", "WmCurrency", "WmSwitch", "WmSelect", "WmCheckboxSet", "WmRadioSet", "WmDate", "WmTime", "WmTimestamp", "WmRating", "WmDatetime", "WmSearch", "WmChips", "WmColorPicker"];
141
- var hashString = function hashString(str, index) {
142
- var hash = 5381;
143
- for (var i = 0; i < str.length; i++) {
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import {
21
+ forEach,
22
+ entries,
23
+ size,
24
+ isEmpty,
25
+ isArray,
26
+ map,
27
+ get,
28
+ trim,
29
+ startsWith,
30
+ findIndex,
31
+ assign,
32
+ floor,
33
+ ceil,
34
+ max,
35
+ omit,
36
+ isObject,
37
+ isNil,
38
+ transform,
39
+ sum,
40
+ round,
41
+ mean,
42
+ min
43
+ } from "lodash-es";
44
+ import React from "react";
45
+ import { TABLE_CSS_CLASSES } from "./constants";
46
+ const formWidgets = [
47
+ "WmText",
48
+ "WmTextarea",
49
+ "WmCheckbox",
50
+ "WmSlider",
51
+ "WmCurrency",
52
+ "WmSwitch",
53
+ "WmSelect",
54
+ "WmCheckboxSet",
55
+ "WmRadioSet",
56
+ "WmDate",
57
+ "WmTime",
58
+ "WmTimestamp",
59
+ "WmRating",
60
+ "WmDatetime",
61
+ "WmSearch",
62
+ "WmChips",
63
+ "WmColorPicker"
64
+ ];
65
+ const hashString = (str, index) => {
66
+ let hash = 5381;
67
+ for (let i = 0; i < str.length; i++) {
144
68
  hash = (hash << 5) + hash + str.charCodeAt(i);
145
- hash = hash & hash; // Convert to 32bit integer
69
+ hash = hash & hash;
146
70
  }
147
- return "row_".concat(Math.abs(hash), "_").concat(index);
71
+ return `row_${Math.abs(hash)}_${index}`;
148
72
  };
149
- var generateDeterministicHash = function generateDeterministicHash(obj, index) {
150
- var hashSource = index.toString() + ((0, _lodashEs.isObject)(obj) ? (0, _lodashEs.transform)((0, _lodashEs.omit)(obj, "_wmTableRowId"), function (result, value, key) {
151
- if (!(0, _lodashEs.isNil)(value)) {
152
- result.push("".concat(key, ":").concat((0, _lodashEs.isObject)(value) ? JSON.stringify(value) : String(value)));
153
- }
154
- }, []).sort().join("|") : String(obj));
73
+ const generateDeterministicHash = (obj, index) => {
74
+ const hashSource = index.toString() + (isObject(obj) ? transform(
75
+ omit(obj, "_wmTableRowId"),
76
+ (result, value, key) => {
77
+ if (!isNil(value)) {
78
+ result.push(`${key}:${isObject(value) ? JSON.stringify(value) : String(value)}`);
79
+ }
80
+ },
81
+ []
82
+ ).sort().join("|") : String(obj));
155
83
  return hashString(hashSource, index);
156
84
  };
157
-
158
- /**
159
- * Adds unique row IDs to the dataset if they don't already have them.
160
- * Uses _wmTableRowId or _wmListItemId as the primary key, falling back to a generated ID.
161
- *
162
- * @param dataset - The dataset to process
163
- * @param options - Options for ID generation
164
- * @param options.type - Type of widget ('table' or 'list')
165
- * @param options.idProperty - Custom property name for the ID (defaults to _wmTableRowId for table, _wmListItemId for list)
166
- * @returns The dataset with unique row IDs added
167
- */
168
- var addUniqueRowIds = exports.addUniqueRowIds = function addUniqueRowIds(dataset) {
169
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
170
- // Handle non-array inputs (e.g., empty objects, null, undefined)
171
- if (!(0, _lodashEs.isArray)(dataset)) {
85
+ const extractDataArray = (dataset) => {
86
+ if (isArray(dataset)) return dataset;
87
+ if (dataset !== null && dataset !== void 0 && typeof dataset === "object") {
88
+ const firstArray = Object.values(dataset).find((v) => isArray(v));
89
+ return firstArray != null ? firstArray : [];
90
+ }
91
+ return [];
92
+ };
93
+ const addUniqueRowIds = (dataset, options = {}) => {
94
+ if (!isArray(dataset)) {
172
95
  return [];
173
96
  }
174
-
175
- // Determine the ID property based on type or custom property
176
- var idProperty = options.idProperty || (options.type === "list" ? "_wmListItemId" : "_wmTableRowId");
177
- var isListWidget = options.type === "list";
178
- return (0, _lodashEs.map)(dataset, function (item, index) {
179
- // If item is not an object (primitive values like strings, numbers), return as-is
180
- if ((0, _typeof2["default"])(item) !== "object" || item === null || (0, _lodashEs.isArray)(item)) {
97
+ const idProperty = options.idProperty || (options.type === "list" ? "_wmListItemId" : "_wmTableRowId");
98
+ const isListWidget = options.type === "list";
99
+ return map(dataset, (item, index) => {
100
+ if (typeof item !== "object" || item === null || isArray(item)) {
181
101
  return item;
182
102
  }
183
- var getProperty = function getProperty(propName) {
184
- return (0, _lodashEs.get)(item, propName);
103
+ const getProperty = (propName) => {
104
+ const direct = get(item, propName);
105
+ if (direct !== void 0) return direct;
106
+ const withoutArrayPrefix = propName.replace(/^[^.[]+\[\d+\]\./, "");
107
+ if (withoutArrayPrefix !== propName) {
108
+ return get(item, withoutArrayPrefix);
109
+ }
110
+ return void 0;
185
111
  };
186
-
187
- // Skip if the item already has a unique row ID
188
112
  if (item[idProperty]) {
189
- return item.getProperty ? item : _objectSpread(_objectSpread({}, item), {}, {
190
- getProperty: getProperty
191
- });
113
+ return item.getProperty ? item : __spreadProps(__spreadValues({}, item), { getProperty });
192
114
  }
193
-
194
- // Generate a unique ID based on existing id field or create a deterministic hash
195
- var rowId = item.id || item.ID || item.Id || generateDeterministicHash(item, index);
196
- var rowIdAndGetProperty = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, idProperty, rowId), "getProperty", getProperty);
115
+ const rowId = item.id || item.ID || item.Id || generateDeterministicHash(item, index);
116
+ const rowIdAndGetProperty = {
117
+ [idProperty]: rowId,
118
+ getProperty
119
+ };
197
120
  if (isListWidget) {
198
121
  Object.assign(item, rowIdAndGetProperty);
199
122
  return item;
200
123
  }
201
-
202
- // Table and other callers: immutable row copies (prior React/table behavior)
203
- return _objectSpread(_objectSpread({}, item), rowIdAndGetProperty);
124
+ return __spreadValues(__spreadValues({}, item), rowIdAndGetProperty);
204
125
  });
205
126
  };
206
-
207
- // Widget mapping utilities
208
- var getWidgetMappingForType = exports.getWidgetMappingForType = function getWidgetMappingForType(widgetType) {
209
- var widgetMappings = {
210
- text: "WmText",
211
- password: "WmPassword",
212
- textarea: "WmTextarea",
213
- number: "WmNumber",
214
- checkbox: "WmCheckbox",
215
- toggle: "WmToggle",
216
- "switch": "WmSwitch",
217
- slider: "WmSlider",
218
- richtext: "WmRichtext",
219
- richtexteditor: "WmRichtexteditor",
220
- currency: "WmCurrency",
221
- select: "WmSelect",
222
- checkboxset: "WmCheckboxset",
223
- radioset: "WmRadioset",
224
- date: "WmDate",
225
- time: "WmTime",
226
- timestamp: "WmTimestamp",
227
- datetime: "WmDatetime",
228
- rating: "WmRating",
229
- autocomplete: "WmAutocomplete",
230
- chips: "WmChips",
231
- colorpicker: "WmColorpicker",
232
- upload: "WmFileupload",
233
- label: "WmLabel",
234
- button: "WmButton",
235
- icon: "WmIcon",
236
- image: "WmPicture",
237
- anchor: "WmAnchor"
238
- };
239
- return widgetMappings[widgetType] || widgetType;
240
- };
241
- var getBooleanDataset = exports.getBooleanDataset = function getBooleanDataset() {
242
- return [{
243
- key: true,
244
- value: "Yes"
245
- }, {
246
- key: false,
247
- value: "No"
248
- }];
249
- };
250
-
251
- // Check if column should be visible based on current viewport
252
- var isColumnVisibleForViewport = exports.isColumnVisibleForViewport = function isColumnVisibleForViewport(column, viewportWidth) {
253
- // Validate inputs
127
+ import { getWidgetMappingForType, getBooleanDataset } from "./widgetMapping";
128
+ const isColumnVisibleForViewport = (column, viewportWidth) => {
254
129
  if (!column || typeof viewportWidth !== "number" || viewportWidth < 0) {
255
- return true; // Default to showing column if invalid inputs
130
+ return true;
256
131
  }
257
-
258
- // Define breakpoints (matching Bootstrap)
259
- var MOBILE_BREAKPOINT = 576;
260
- var TABLET_BREAKPOINT = 768;
261
- var DESKTOP_BREAKPOINT = 992;
262
-
263
- // Determine current device type
264
- var isMobile = viewportWidth < MOBILE_BREAKPOINT;
265
- var isTablet = viewportWidth >= MOBILE_BREAKPOINT && viewportWidth < DESKTOP_BREAKPOINT;
266
- var isDesktop = viewportWidth >= DESKTOP_BREAKPOINT;
267
-
268
- // Default all display properties to true if not explicitly set
269
- var mobiledisplay = column.mobiledisplay !== false;
270
- var tabletdisplay = column.tabletdisplay !== false;
271
- var pcdisplay = column.pcdisplay !== false;
272
-
273
- // Check visibility based on device type
132
+ const MOBILE_BREAKPOINT = 576;
133
+ const TABLET_BREAKPOINT = 768;
134
+ const DESKTOP_BREAKPOINT = 992;
135
+ const isMobile = viewportWidth < MOBILE_BREAKPOINT;
136
+ const isTablet = viewportWidth >= MOBILE_BREAKPOINT && viewportWidth < DESKTOP_BREAKPOINT;
137
+ const isDesktop = viewportWidth >= DESKTOP_BREAKPOINT;
138
+ const mobiledisplay = column.mobiledisplay !== false;
139
+ const tabletdisplay = column.tabletdisplay !== false;
140
+ const pcdisplay = column.pcdisplay !== false;
274
141
  if (isMobile && !mobiledisplay) {
275
142
  return false;
276
143
  }
@@ -284,168 +151,161 @@ var isColumnVisibleForViewport = exports.isColumnVisibleForViewport = function i
284
151
  };
285
152
  function transformExpression(exp) {
286
153
  if (typeof exp === "string") {
287
- // First replacing generic getProperty calls with rowData
288
- // Matches patterns like: fragment.row?.getProperty?.("key") -> rowData['key']
289
- var transformedExp = exp.replace(/(?:[\w$]+(?:\?\.|\.))*getProperty(?:\?\.)?\(\s*(['"])(.*?)\1\s*\)/g, function (_, quote, key) {
290
- return "rowData['".concat(key, "']");
291
- });
292
-
293
- // Regex to split by string literals (double or single quoted)
294
- var parts = transformedExp.split(/(".*?"|'.*?')/);
295
- return parts.map(function (part) {
296
- // If part is a string literal, return as is
154
+ let transformedExp = exp.replace(
155
+ /(?:[\w$]+(?:\?\.|\.))*getProperty(?:\?\.)?\(\s*(['"])(.*?)\1\s*\)/g,
156
+ (_, quote, key) => `rowData['${key}']`
157
+ );
158
+ const parts = transformedExp.split(/(".*?"|'.*?')/);
159
+ return parts.map((part) => {
297
160
  if (part.startsWith('"') || part.startsWith("'")) {
298
161
  return part;
299
162
  }
300
-
301
- // Replace identifiers that are not keywords
302
- // Identifiers start with letter, _, or $
303
- return part.replace(/\b([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g, function (match) {
304
- var keywords = ["true", "false", "null", "undefined", "NaN", "Infinity", "in", "instanceof", "typeof", "void", "new", "delete", "rowData" // Don't replace rowData if it's already there
163
+ return part.replace(/\b([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g, (match) => {
164
+ const keywords = [
165
+ "true",
166
+ "false",
167
+ "null",
168
+ "undefined",
169
+ "NaN",
170
+ "Infinity",
171
+ "in",
172
+ "instanceof",
173
+ "typeof",
174
+ "void",
175
+ "new",
176
+ "delete",
177
+ "rowData"
178
+ // Don't replace rowData if it's already there
305
179
  ];
306
180
  if (keywords.includes(match)) {
307
181
  return match;
308
182
  }
309
- return "rowData['".concat(match, "']");
183
+ return `rowData['${match}']`;
310
184
  });
311
185
  }).join("");
312
186
  }
313
187
  return exp;
314
188
  }
315
-
316
- // Table structure types for grouping
317
-
318
- // Children parsing utilities
319
- var parseTableColumns = exports.parseTableColumns = function parseTableColumns(children, dataset) {
320
- var columns = [];
321
- _react["default"].Children.forEach(children, function (child) {
189
+ const parseTableColumns = (children, dataset) => {
190
+ const columns = [];
191
+ React.Children.forEach(children, (child) => {
322
192
  if (child && child.props && child.props.name && (child.props.name.includes("wm_table_column") || child.props.name.includes("col_"))) {
323
- var props = (0, _lodashEs.get)(child, "props", {});
324
- var binding = (0, _lodashEs.get)(props, "binding");
325
- var aggregate = getAggregateFunctions(dataset, binding);
326
- columns.push(_objectSpread(_objectSpread({}, props), {}, {
327
- field: (0, _lodashEs.get)(props, "binding"),
328
- caption: (0, _lodashEs.get)(props, "caption"),
329
- displayName: (0, _lodashEs.get)(props, "caption"),
330
- show: (0, _lodashEs.get)(props, "show", true) !== false,
331
- sortable: (0, _lodashEs.get)(props, "sortable", true) !== false,
332
- textalignment: (0, _lodashEs.get)(props, "textalignment", "left"),
333
- backgroundcolor: (0, _lodashEs.get)(props, "backgroundcolor"),
334
- textcolor: (0, _lodashEs.get)(props, "textcolor"),
335
- width: (0, _lodashEs.get)(props, "width"),
336
- editWidgetType: (0, _lodashEs.get)(props, "editWidgetType", "WmText"),
337
- widgetType: (0, _lodashEs.get)(props, "widgetType", "label"),
338
- required: (0, _lodashEs.get)(props, "required") === true || (0, _lodashEs.get)(props, "required") === "true",
339
- defaultvalue: (0, _lodashEs.get)(props, "defaultvalue"),
340
- disabled: transformExpression((0, _lodashEs.get)(props, "disabled")),
341
- readonly: (0, _lodashEs.get)(props, "readonly") || (0, _lodashEs.get)(props, "readonly") === "true",
342
- placeholder: (0, _lodashEs.get)(props, "placeholder"),
343
- sortby: (0, _lodashEs.get)(props, "sortby"),
344
- aggregate: aggregate,
345
- colClass: (0, _lodashEs.get)(props, "colClass")
193
+ const props = get(child, "props", {});
194
+ const binding = get(props, "binding");
195
+ const aggregate = getAggregateFunctions(dataset, binding);
196
+ columns.push(__spreadProps(__spreadValues({}, props), {
197
+ field: get(props, "binding"),
198
+ caption: get(props, "caption"),
199
+ displayName: get(props, "caption"),
200
+ show: get(props, "show", true) !== false,
201
+ sortable: get(props, "sortable", true) !== false,
202
+ textalignment: get(props, "textalignment", "left"),
203
+ backgroundcolor: get(props, "backgroundcolor"),
204
+ textcolor: get(props, "textcolor"),
205
+ width: get(props, "width"),
206
+ editWidgetType: get(props, "editWidgetType", "WmText"),
207
+ widgetType: get(props, "widgetType", "label"),
208
+ required: get(props, "required") === true || get(props, "required") === "true",
209
+ defaultvalue: get(props, "defaultvalue"),
210
+ disabled: transformExpression(get(props, "disabled")),
211
+ readonly: get(props, "readonly") || get(props, "readonly") === "true",
212
+ placeholder: get(props, "placeholder"),
213
+ sortby: get(props, "sortby"),
214
+ aggregate,
215
+ colClass: get(props, "colClass")
346
216
  }));
347
217
  }
348
218
  });
349
219
  return columns;
350
220
  };
351
- var getAggregateFunctions = exports.getAggregateFunctions = function getAggregateFunctions(dataset, binding) {
221
+ const getAggregateFunctions = (dataset, binding) => {
352
222
  function _getColumnData() {
353
- return (0, _lodashEs.map)(dataset, binding);
223
+ return map(dataset, binding);
354
224
  }
355
- var aggregate = {
356
- sum: function sum() {
357
- return (0, _lodashEs.sum)(_getColumnData());
225
+ const aggregate = {
226
+ sum: () => {
227
+ return sum(_getColumnData());
358
228
  },
359
- average: function average() {
360
- var precision = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2;
361
- return (0, _lodashEs.round)((0, _lodashEs.mean)(_getColumnData()), precision);
229
+ average: (precision = 2) => {
230
+ return round(mean(_getColumnData()), precision);
362
231
  },
363
- count: function count() {
232
+ count: () => {
364
233
  return _getColumnData().length;
365
234
  },
366
- minimum: function minimum() {
367
- return (0, _lodashEs.min)(_getColumnData());
235
+ minimum: () => {
236
+ return min(_getColumnData());
368
237
  },
369
- maximum: function maximum() {
370
- return (0, _lodashEs.max)(_getColumnData());
238
+ maximum: () => {
239
+ return max(_getColumnData());
371
240
  },
372
- percent: function percent(value) {
373
- var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
374
- return (0, _lodashEs.round)((0, _lodashEs.sum)(_getColumnData()) / value * 100, precision);
241
+ percent: (value, precision = 2) => {
242
+ return round(sum(_getColumnData()) / value * 100, precision);
375
243
  }
376
244
  };
377
245
  return aggregate;
378
246
  };
379
- // Parse table structure with groups support
380
- var _parseTableStructureWithGroups = exports.parseTableStructureWithGroups = function parseTableStructureWithGroups(children) {
381
- var structure = [];
382
- _react["default"].Children.forEach(children, function (child) {
247
+ const parseTableStructureWithGroups = (children) => {
248
+ const structure = [];
249
+ React.Children.forEach(children, (child) => {
383
250
  if (!child || !child.props) return;
384
- var childName = (0, _lodashEs.get)(child, "props.name", "");
385
-
386
- // Handle WmTableGroup
251
+ const childName = get(child, "props.name", "");
387
252
  if (childName.includes("group")) {
388
- var props = (0, _lodashEs.get)(child, "props", {});
389
- var group = {
253
+ const props = get(child, "props", {});
254
+ const group = {
390
255
  isGroup: true,
391
- field: (0, _lodashEs.get)(props, "name", ""),
392
- displayName: (0, _lodashEs.get)(props, "caption", ""),
393
- textAlignment: (0, _lodashEs.get)(props, "textalignment"),
394
- backgroundColor: (0, _lodashEs.get)(props, "backgroundcolor"),
395
- "class": (0, _lodashEs.get)(props, "class"),
396
- colClass: (0, _lodashEs.get)(props, "col-class"),
397
- styles: (0, _lodashEs.get)(props, "styles"),
398
- columns: _parseTableStructureWithGroups(child.props.children) // Recursive for nested groups
256
+ field: get(props, "name", ""),
257
+ displayName: get(props, "caption", ""),
258
+ textAlignment: get(props, "textalignment"),
259
+ backgroundColor: get(props, "backgroundcolor"),
260
+ class: get(props, "class"),
261
+ colClass: get(props, "col-class"),
262
+ styles: get(props, "styles"),
263
+ columns: parseTableStructureWithGroups(child.props.children)
264
+ // Recursive for nested groups
399
265
  };
400
266
  structure.push(group);
401
- }
402
- // Handle WmTableColumn
403
- else if (childName.includes("wm_table_column") || childName.includes("col_")) {
404
- var _props = (0, _lodashEs.get)(child, "props", {});
405
- var column = _objectSpread({
406
- field: (0, _lodashEs.get)(_props, "binding"),
407
- caption: (0, _lodashEs.get)(_props, "caption"),
408
- displayName: (0, _lodashEs.get)(_props, "caption"),
409
- show: (0, _lodashEs.get)(_props, "show", true) !== false,
410
- sortable: (0, _lodashEs.get)(_props, "sortable", true) !== false,
411
- textalignment: (0, _lodashEs.get)(_props, "textalignment", "left"),
412
- backgroundcolor: (0, _lodashEs.get)(_props, "backgroundcolor"),
413
- textcolor: (0, _lodashEs.get)(_props, "textcolor"),
414
- width: (0, _lodashEs.get)(_props, "width"),
415
- editWidgetType: (0, _lodashEs.get)(_props, "editWidgetType", "WmText"),
416
- widgetType: (0, _lodashEs.get)(_props, "widgetType", "label"),
417
- required: (0, _lodashEs.get)(_props, "required") === true || (0, _lodashEs.get)(_props, "required") === "true",
418
- defaultvalue: (0, _lodashEs.get)(_props, "defaultvalue"),
419
- disabled: (0, _lodashEs.get)(_props, "disabled") === true || (0, _lodashEs.get)(_props, "disabled") === "true",
420
- placeholder: (0, _lodashEs.get)(_props, "placeholder"),
421
- sortby: (0, _lodashEs.get)(_props, "sortby")
422
- }, _props);
267
+ } else if (childName.includes("wm_table_column") || childName.includes("col_")) {
268
+ const props = get(child, "props", {});
269
+ const column = __spreadValues({
270
+ field: get(props, "binding"),
271
+ caption: get(props, "caption"),
272
+ displayName: get(props, "caption"),
273
+ show: get(props, "show", true) !== false,
274
+ sortable: get(props, "sortable", true) !== false,
275
+ textalignment: get(props, "textalignment", "left"),
276
+ backgroundcolor: get(props, "backgroundcolor"),
277
+ textcolor: get(props, "textcolor"),
278
+ width: get(props, "width"),
279
+ editWidgetType: get(props, "editWidgetType", "WmText"),
280
+ widgetType: get(props, "widgetType", "label"),
281
+ required: get(props, "required") === true || get(props, "required") === "true",
282
+ defaultvalue: get(props, "defaultvalue"),
283
+ disabled: get(props, "disabled") === true || get(props, "disabled") === "true",
284
+ placeholder: get(props, "placeholder"),
285
+ sortby: get(props, "sortby")
286
+ }, props);
423
287
  structure.push(column);
424
288
  }
425
289
  });
426
290
  return structure;
427
291
  };
428
-
429
- // Flatten hierarchical structure to get all columns
430
- var _flattenTableStructure = exports.flattenTableStructure = function flattenTableStructure(structure) {
431
- var columns = [];
432
- structure.forEach(function (item) {
292
+ const flattenTableStructure = (structure) => {
293
+ const columns = [];
294
+ structure.forEach((item) => {
433
295
  if ("isGroup" in item && item.isGroup) {
434
- // Recursively flatten groups
435
- columns.push.apply(columns, (0, _toConsumableArray2["default"])(_flattenTableStructure(item.columns)));
296
+ columns.push(...flattenTableStructure(item.columns));
436
297
  } else {
437
- // It's a column
438
298
  columns.push(item);
439
299
  }
440
300
  });
441
301
  return columns;
442
302
  };
443
- var parseTableRowActions = exports.parseTableRowActions = function parseTableRowActions(children) {
444
- var actions = [];
445
- _react["default"].Children.forEach(children, function (child) {
303
+ const parseTableRowActions = (children) => {
304
+ const actions = [];
305
+ React.Children.forEach(children, (child) => {
446
306
  if (child && child.props && child.props.name && child.props.name.includes("wm_table_row_action")) {
447
- var props = (0, _lodashEs.get)(child, "props", {});
448
- var actionProps = (0, _lodashEs.assign)({}, props);
307
+ const props = get(child, "props", {});
308
+ const actionProps = assign({}, props);
449
309
  if (child.key) {
450
310
  actionProps.key = child.key;
451
311
  }
@@ -454,12 +314,12 @@ var parseTableRowActions = exports.parseTableRowActions = function parseTableRow
454
314
  });
455
315
  return actions;
456
316
  };
457
- var parseTableActions = exports.parseTableActions = function parseTableActions(children) {
458
- var actions = [];
459
- _react["default"].Children.forEach(children, function (child) {
317
+ const parseTableActions = (children) => {
318
+ const actions = [];
319
+ React.Children.forEach(children, (child) => {
460
320
  if (child && child.props && child.props.name && child.props.name.includes("wm_table_action")) {
461
- var props = (0, _lodashEs.get)(child, "props", {});
462
- var actionProps = (0, _lodashEs.assign)({}, props);
321
+ const props = get(child, "props", {});
322
+ const actionProps = assign({}, props);
463
323
  if (child.key) {
464
324
  actionProps.key = child.key;
465
325
  }
@@ -468,113 +328,84 @@ var parseTableActions = exports.parseTableActions = function parseTableActions(c
468
328
  });
469
329
  return actions;
470
330
  };
471
-
472
- // Parse WmTableRow component for row expansion
473
- var parseTableRowExpansion = exports.parseTableRowExpansion = function parseTableRowExpansion(children) {
474
- var rowExpansionConfig = null;
475
- _react["default"].Children.forEach(children, function (child) {
476
- if (child && child.type && child.type.displayName === "WmTableRow") {
477
- // Check by displayName to ensure we get the right component
478
- var props = (0, _lodashEs.get)(child, "props", {});
479
- rowExpansionConfig = props;
331
+ function isTableRowComponent(child) {
332
+ if (!(child == null ? void 0 : child.type)) return false;
333
+ const name = child.type.displayName || child.type.name || "";
334
+ if (name === "WmTableRow" || name.includes("WmTableRow") && !name.includes("WmTableRowAction"))
335
+ return true;
336
+ const inner = child.type.type || child.type.render;
337
+ if (inner) {
338
+ const innerName = inner.displayName || inner.name || "";
339
+ if (innerName.includes("WmTableRow") && !innerName.includes("WmTableRowAction")) return true;
340
+ }
341
+ return false;
342
+ }
343
+ const parseTableRowExpansion = (children) => {
344
+ let rowExpansionConfig = null;
345
+ React.Children.forEach(children, (child) => {
346
+ if (isTableRowComponent(child)) {
347
+ const props = get(child, "props", {});
348
+ if (props.rowType === "expansion" || typeof props.renderPartial === "function" || props.content) {
349
+ rowExpansionConfig = props;
350
+ }
480
351
  } else if (child && child.props && child.props.name) {
481
- // Fallback: check by name but ensure it's not a row action
482
- var name = child.props.name;
483
- // Match names that start with "wm_table_row_" followed by a hash/id, but not "wm_table_row_action"
352
+ const name = child.props.name;
484
353
  if (name.startsWith("wm_table_row_") && !name.includes("_action")) {
485
- var _props2 = (0, _lodashEs.get)(child, "props", {});
486
- rowExpansionConfig = _props2;
354
+ const props = get(child, "props", {});
355
+ rowExpansionConfig = props;
487
356
  }
488
357
  }
489
358
  });
490
359
  return rowExpansionConfig;
491
360
  };
492
-
493
- // Action type checking utilities
494
- var isEditAction = exports.isEditAction = function isEditAction(actionKey) {
495
- return actionKey === "updaterow";
496
- };
497
- var isDeleteAction = exports.isDeleteAction = function isDeleteAction(actionKey) {
498
- return actionKey === "deleterow";
499
- };
500
- var isAddNewAction = exports.isAddNewAction = function isAddNewAction(actionKey) {
501
- return actionKey === "addNewRow";
502
- };
503
-
504
- // CSS class utilities
505
- var getActionButtonClass = exports.getActionButtonClass = function getActionButtonClass(action) {
506
- var actionKey = (0, _lodashEs.get)(action, "key") || (0, _lodashEs.get)(action, "name") || (0, _lodashEs.get)(action, "action");
361
+ const isEditAction = (actionKey) => actionKey === "updaterow";
362
+ const isDeleteAction = (actionKey) => actionKey === "deleterow";
363
+ const isAddNewAction = (actionKey) => actionKey === "addNewRow";
364
+ const getActionButtonClass = (action) => {
365
+ const actionKey = get(action, "key") || get(action, "name") || get(action, "action");
507
366
  if (isEditAction(actionKey)) {
508
- var updateRowClasses = (0, _lodashEs.get)(action, "className", "");
509
- return "row-action row-action-button btn-transparent edit edit-row-button ".concat(updateRowClasses);
367
+ const updateRowClasses = get(action, "className", "");
368
+ return `row-action row-action-button btn-transparent edit edit-row-button ${updateRowClasses}`;
510
369
  }
511
370
  if (isDeleteAction(actionKey) || actionKey === "delete") {
512
- var deleteRowClasses = (0, _lodashEs.get)(action, "className", "");
513
- return "row-action row-action-button btn-transparent delete delete-row-button ".concat(_constants.TABLE_CSS_CLASSES.deleteRow, " ").concat(deleteRowClasses);
371
+ const deleteRowClasses = get(action, "className", "");
372
+ return `row-action row-action-button btn-transparent delete delete-row-button ${TABLE_CSS_CLASSES.deleteRow} ${deleteRowClasses}`;
514
373
  }
515
- return "row-action row-action-button ".concat((0, _lodashEs.get)(action, "className", "btn-transparent"));
374
+ return `row-action row-action-button ${get(action, "className", "btn-transparent")}`;
516
375
  };
517
- var getTableActionButtonClass = exports.getTableActionButtonClass = function getTableActionButtonClass(action) {
518
- return "btn ".concat((0, _lodashEs.get)(action, "className", "btn-primary"), " ").concat(isAddNewAction((0, _lodashEs.get)(action, "key")) ? "add-action" : "");
376
+ const getTableActionButtonClass = (action) => {
377
+ return `btn ${get(action, "className", "btn-primary")} ${isAddNewAction(get(action, "key")) ? "add-action" : ""}`;
519
378
  };
520
-
521
- // Validation utilities for edit modes
522
-
523
- /**
524
- * Validates editing fields and focuses first invalid field if validation fails
525
- * Can be used across different edit modes (inline, dialog, quick edit)
526
- *
527
- * @param fieldRefs - Record of field references from editing form
528
- * @param editingRowId - Optional ID for logging/debugging purposes
529
- * @returns ValidationResult object with validation status and invalid elements
530
- */
531
- var validateEditingFields = exports.validateEditingFields = function validateEditingFields(fieldRefs, editingRowId) {
532
- var invalidElements = [];
533
- var invalidFieldKeys = [];
534
-
535
- // Helper to determine if a field needs validation based on the rowId prefix
536
- var shouldValidateField = function shouldValidateField(fieldKey) {
537
- if (!editingRowId) return true; // Validate all if no rowId provided
538
- return (0, _lodashEs.startsWith)(fieldKey, "".concat(editingRowId, "_"));
379
+ const validateEditingFields = (fieldRefs, editingRowId) => {
380
+ const invalidElements = [];
381
+ const invalidFieldKeys = [];
382
+ const shouldValidateField = (fieldKey) => {
383
+ if (!editingRowId) return true;
384
+ return startsWith(fieldKey, `${editingRowId}_`);
539
385
  };
540
-
541
- // Check each field reference for validity
542
- (0, _lodashEs.forEach)((0, _lodashEs.entries)(fieldRefs), function (_ref) {
543
- var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
544
- fieldKey = _ref2[0],
545
- fieldElement = _ref2[1];
546
- // Skip fields that don't belong to the current editing row
386
+ forEach(entries(fieldRefs), ([fieldKey, fieldElement]) => {
547
387
  if (!shouldValidateField(fieldKey) || !fieldElement) {
548
388
  return;
549
389
  }
550
- var isInvalid = false;
551
-
552
- // First check for HTML5 validation
553
- var inputs = fieldElement.querySelectorAll("input, select, textarea");
554
- (0, _lodashEs.forEach)(inputs, function (input) {
555
- // Check HTML5 validation
390
+ let isInvalid = false;
391
+ const inputs = fieldElement.querySelectorAll("input, select, textarea");
392
+ forEach(inputs, (input) => {
556
393
  if (input && !input.validity.valid && input.hasAttribute("required")) {
557
394
  invalidElements.push(input);
558
395
  isInvalid = true;
559
396
  }
560
-
561
- // Check for custom validation classes
562
397
  if (input && input.classList.contains("ng-invalid")) {
563
398
  invalidElements.push(input);
564
399
  isInvalid = true;
565
400
  }
566
-
567
- // Check for required fields that are empty
568
- if (input && input.hasAttribute("required") && !(0, _lodashEs.trim)(input.value)) {
401
+ if (input && input.hasAttribute("required") && !trim(input.value)) {
569
402
  invalidElements.push(input);
570
403
  isInvalid = true;
571
404
  }
572
405
  });
573
-
574
- // Then check for "required" attribute on the field element itself
575
406
  if (fieldElement.hasAttribute("required")) {
576
- var inputEl = fieldElement.querySelector("input, textarea, select");
577
- if (inputEl && !(0, _lodashEs.trim)(inputEl.value)) {
407
+ const inputEl = fieldElement.querySelector("input, textarea, select");
408
+ if (inputEl && !trim(inputEl.value)) {
578
409
  invalidElements.push(inputEl);
579
410
  isInvalid = true;
580
411
  }
@@ -583,217 +414,140 @@ var validateEditingFields = exports.validateEditingFields = function validateEdi
583
414
  invalidFieldKeys.push(fieldKey);
584
415
  }
585
416
  });
586
-
587
- // If invalid elements found, focus the first one
588
- if ((0, _lodashEs.size)(invalidElements) > 0) {
589
- var logPrefix = editingRowId ? "[".concat(editingRowId, "]") : "[Validation]";
590
- console.log("".concat(logPrefix, " Validation failed: Found ").concat((0, _lodashEs.size)(invalidElements), " invalid elements"));
591
-
592
- // Focus the first invalid element
593
- var firstInvalidElement = (0, _lodashEs.get)(invalidElements, "[0]");
417
+ if (size(invalidElements) > 0) {
418
+ const logPrefix = editingRowId ? `[${editingRowId}]` : "[Validation]";
419
+ console.log(`${logPrefix} Validation failed: Found ${size(invalidElements)} invalid elements`);
420
+ const firstInvalidElement = get(invalidElements, "[0]");
594
421
  if (firstInvalidElement) {
595
- // Find the closest container cell
596
- var cell = firstInvalidElement.closest("td, .app-datagrid-cell, .form-field");
422
+ const cell = firstInvalidElement.closest("td, .app-datagrid-cell, .form-field");
597
423
  if (cell) {
598
- // Try to find a specific focus-target, or fallback to the input itself
599
- var focusTarget = cell.querySelector("[focus-target], input, textarea, select");
424
+ const focusTarget = cell.querySelector(
425
+ "[focus-target], input, textarea, select"
426
+ );
600
427
  if (focusTarget) {
601
- setTimeout(function () {
428
+ setTimeout(() => {
602
429
  focusTarget.focus();
603
- console.log("".concat(logPrefix, " Focused first invalid field:"), focusTarget);
430
+ console.log(`${logPrefix} Focused first invalid field:`, focusTarget);
604
431
  }, 0);
605
432
  }
606
433
  } else {
607
- // If we can't find a container, try to focus the element directly
608
- setTimeout(function () {
434
+ setTimeout(() => {
609
435
  firstInvalidElement.focus();
610
436
  }, 0);
611
437
  }
612
438
  }
613
439
  }
614
440
  return {
615
- isValid: (0, _lodashEs.isEmpty)(invalidElements),
616
- invalidElements: invalidElements,
617
- invalidFieldKeys: invalidFieldKeys,
618
- firstInvalidElement: (0, _lodashEs.size)(invalidElements) > 0 ? (0, _lodashEs.get)(invalidElements, "[0]") : undefined
441
+ isValid: isEmpty(invalidElements),
442
+ invalidElements,
443
+ invalidFieldKeys,
444
+ firstInvalidElement: size(invalidElements) > 0 ? get(invalidElements, "[0]") : void 0
619
445
  };
620
446
  };
621
-
622
- // Panel and button styling utilities
623
- var getButtonClasses = exports.getButtonClasses = function getButtonClasses(action) {
624
- var spacing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "normal";
625
- var isGridEditMode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
626
- var isLoading = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
627
- var baseClass = "btn ".concat((0, _lodashEs.get)(action, "className", "btn-primary"), " ").concat(isAddNewAction((0, _lodashEs.get)(action, "key")) ? "add-action" : "");
628
- var spacingClass = spacing === "condensed" ? "btn-sm" : "";
629
- var disabledClass = (0, _lodashEs.get)(action, "key") === "addNewRow" && (isGridEditMode || isLoading) ? "disabled-new" : "";
630
- return (0, _lodashEs.trim)("".concat(baseClass, " ").concat(spacingClass, " ").concat(disabledClass));
447
+ const getButtonClasses = (action, spacing = "normal", isGridEditMode = false, isLoading = false) => {
448
+ const baseClass = `btn ${get(action, "className", "btn-primary")} ${isAddNewAction(get(action, "key")) ? "add-action" : ""}`;
449
+ const spacingClass = spacing === "condensed" ? "btn-sm" : "";
450
+ const disabledClass = get(action, "key") === "addNewRow" && (isGridEditMode || isLoading) ? "disabled-new" : "";
451
+ return trim(`${baseClass} ${spacingClass} ${disabledClass}`);
631
452
  };
632
- var getSpacingClasses = exports.getSpacingClasses = function getSpacingClasses() {
633
- var spacing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "normal";
634
- var classes = [];
453
+ const getSpacingClasses = (spacing = "normal") => {
454
+ const classes = [];
635
455
  if (spacing === "condensed") {
636
456
  classes.push("table-condensed");
637
457
  }
638
458
  return classes.join(" ");
639
459
  };
640
-
641
- // Pagination display logic
642
- var shouldShowPagination = exports.shouldShowPagination = function shouldShowPagination(_ref3) {
643
- var _datasource$paginatio;
644
- var shownavigation = _ref3.shownavigation,
645
- onDemandLoad = _ref3.onDemandLoad,
646
- internalDataset = _ref3.internalDataset,
647
- pagesize = _ref3.pagesize,
648
- allowpagesizechange = _ref3.allowpagesizechange,
649
- datasource = _ref3.datasource,
650
- _ref3$showrecordcount = _ref3.showrecordcount,
651
- showrecordcount = _ref3$showrecordcount === void 0 ? false : _ref3$showrecordcount;
652
- // If shownavigation is false, don't show pagination
460
+ const shouldShowPagination = ({
461
+ shownavigation,
462
+ onDemandLoad,
463
+ internalDataset,
464
+ pagesize,
465
+ allowpagesizechange,
466
+ datasource,
467
+ showrecordcount = false
468
+ }) => {
469
+ var _a;
653
470
  if (!shownavigation) return false;
654
-
655
- // If datasource has pagination metadata, show pagination
656
- if ((datasource === null || datasource === void 0 || (_datasource$paginatio = datasource.pagination) === null || _datasource$paginatio === void 0 ? void 0 : _datasource$paginatio.totalElements) > 0) return true;
657
-
658
- // If allowpagesizechange is true, always show pagination
471
+ if (((_a = datasource == null ? void 0 : datasource.pagination) == null ? void 0 : _a.totalElements) > 0) return true;
659
472
  if (allowpagesizechange) return true;
660
-
661
- // Show footer (including total records) when record count is enabled, even on a single page
662
473
  if (showrecordcount) return true;
663
-
664
- // If using on-demand load or if dataset is larger than page size, show pagination
665
- return onDemandLoad || (0, _lodashEs.size)(internalDataset) > pagesize;
474
+ return onDemandLoad || size(internalDataset) > pagesize;
666
475
  };
667
-
668
- // Panel structure utilities
669
- var shouldShowPanelHeading = exports.shouldShowPanelHeading = function shouldShowPanelHeading(title, subheading, iconclass) {
670
- var exportformat = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
671
- var headerActions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
672
- return !(0, _lodashEs.isEmpty)(title) || !(0, _lodashEs.isEmpty)(subheading) || !(0, _lodashEs.isEmpty)(iconclass) || (0, _lodashEs.size)(exportformat) > 0 || (0, _lodashEs.size)(headerActions) > 0;
476
+ const shouldShowPanelHeading = (title, subheading, iconclass, exportformat = [], headerActions = []) => {
477
+ return !isEmpty(title) || !isEmpty(subheading) || !isEmpty(iconclass) || size(exportformat) > 0 || size(headerActions) > 0;
673
478
  };
674
-
675
- /**
676
- * Utility function to handle navigation after a new row is added to the table
677
- * Used by both inline edit and quick edit modes
678
- */
679
- var handleNewRowNavigation = exports.handleNewRowNavigation = function handleNewRowNavigation(tableRef, newRecord, internalDataset) {
680
- if (!(0, _lodashEs.get)(tableRef, "current")) return;
681
- var table = (0, _lodashEs.get)(tableRef, "current");
682
- var sortingState = (0, _lodashEs.get)(table.getState(), "sorting");
683
- var hasSorting = sortingState && (0, _lodashEs.size)(sortingState) > 0;
479
+ const handleNewRowNavigation = (tableRef, newRecord, internalDataset) => {
480
+ if (!get(tableRef, "current")) return;
481
+ const table = get(tableRef, "current");
482
+ const sortingState = get(table.getState(), "sorting");
483
+ const hasSorting = sortingState && size(sortingState) > 0;
684
484
  if (hasSorting) {
685
- // If sorting is active, find where the new record ends up
686
- setTimeout(function () {
687
- var sortedRows = (0, _lodashEs.get)(table.getSortedRowModel(), "rows", []);
688
- var newRecordIndex = (0, _lodashEs.findIndex)(sortedRows, function (row) {
689
- return (0, _lodashEs.get)(row, "original._wmTableRowId") === (0, _lodashEs.get)(newRecord, "_wmTableRowId");
690
- });
485
+ setTimeout(() => {
486
+ const sortedRows = get(table.getSortedRowModel(), "rows", []);
487
+ const newRecordIndex = findIndex(
488
+ sortedRows,
489
+ (row) => get(row, "original._wmTableRowId") === get(newRecord, "_wmTableRowId")
490
+ );
691
491
  if (newRecordIndex !== -1) {
692
- var currentPageSize = (0, _lodashEs.get)(table.getState(), "pagination.pageSize");
693
- var targetPage = (0, _lodashEs.floor)(newRecordIndex / currentPageSize);
492
+ const currentPageSize = get(table.getState(), "pagination.pageSize");
493
+ const targetPage = floor(newRecordIndex / currentPageSize);
694
494
  table.setPageIndex(targetPage);
695
495
  }
696
496
  }, 0);
697
497
  } else {
698
- // If no sorting, navigate to the last page
699
- var currentPageSize = (0, _lodashEs.get)(table.getState(), "pagination.pageSize");
700
- // Add 1 because the new record hasn't been added to internalDataset state yet
701
- var newDatasetLength = (0, _lodashEs.size)(internalDataset) + 1;
702
- var totalPages = (0, _lodashEs.ceil)(newDatasetLength / currentPageSize);
703
- table.setPageIndex((0, _lodashEs.max)([0, totalPages - 1]));
498
+ const currentPageSize = get(table.getState(), "pagination.pageSize");
499
+ const newDatasetLength = size(internalDataset) + 1;
500
+ const totalPages = ceil(newDatasetLength / currentPageSize);
501
+ table.setPageIndex(max([0, totalPages - 1]));
704
502
  }
705
503
  };
706
-
707
- /**
708
- * List of internal properties that should be removed from row data
709
- * before passing to external handlers or form data
710
- */
711
- var INTERNAL_PROPERTIES = exports.INTERNAL_PROPERTIES = ["_wmTableRowId",
712
- // Internal row identifier
713
- "getProperty",
714
- // Helper function to get property values
715
- "rowOperations",
716
- // Internal column for row action buttons
717
- "rowActions",
718
- // Internal row actions property
719
- "_wmListItemId",
720
- // Internal list item identifier
721
- "selected",
722
- // Internal selected property
723
- "_wm"];
724
-
725
- /**
726
- * Patterns for internal field names that should be excluded from cleaned data
727
- */
728
- var INTERNAL_FIELD_SUFFIXES = ["_formWidget"];
729
-
730
- /**
731
- * Cleans row data by removing internal properties
732
- * Handles both single objects and arrays of objects
733
- * Removes:
734
- * - Exact matches from INTERNAL_PROPERTIES list
735
- * - Fields ending with internal suffixes (e.g., _formWidget)
736
- * - Recursively cleans nested objects
737
- * @param data The raw data - can be a single object, array of objects, or primitive
738
- * @returns The cleaned data without internal properties
739
- */
740
- var _cleanRowData = exports.cleanRowData = function cleanRowData(data) {
504
+ const INTERNAL_PROPERTIES = [
505
+ "_wmTableRowId",
506
+ // Internal row identifier
507
+ "getProperty",
508
+ // Helper function to get property values
509
+ "rowOperations",
510
+ // Internal column for row action buttons
511
+ "rowActions",
512
+ // Internal row actions property
513
+ "_wmListItemId",
514
+ // Internal list item identifier
515
+ "selected",
516
+ // Internal selected property
517
+ "_wm"
518
+ ];
519
+ const INTERNAL_FIELD_SUFFIXES = ["_formWidget"];
520
+ const cleanRowData = (data) => {
741
521
  if (!data) return data;
742
-
743
- // For arrays, clean each item
744
- if ((0, _lodashEs.isArray)(data)) {
745
- return data.map(function (item) {
746
- return _cleanRowData(item);
747
- });
522
+ if (isArray(data)) {
523
+ return data.map((item) => cleanRowData(item));
748
524
  }
749
-
750
- // For objects, remove internal properties and clean nested objects
751
- if ((0, _typeof2["default"])(data) === "object") {
752
- var result = {};
753
- var _loop = function _loop() {
754
- var key = _Object$keys[_i];
755
- // Skip exact matches from INTERNAL_PROPERTIES
756
- if (INTERNAL_PROPERTIES.includes(key)) {
757
- return 0; // continue
758
- }
759
-
760
- // Skip fields ending with internal suffixes
761
- if (INTERNAL_FIELD_SUFFIXES.some(function (suffix) {
762
- return key.endsWith(suffix);
763
- })) {
764
- return 0; // continue
765
- }
766
-
767
- // Recursively clean nested objects/arrays
768
- var value = data[key];
769
- if (value && (0, _typeof2["default"])(value) === "object") {
770
- result[key] = _cleanRowData(value);
771
- } else {
772
- result[key] = value;
773
- }
774
- },
775
- _ret;
776
- for (var _i = 0, _Object$keys = Object.keys(data); _i < _Object$keys.length; _i++) {
777
- _ret = _loop();
778
- if (_ret === 0) continue;
525
+ if (typeof data === "object") {
526
+ const result = {};
527
+ for (const key of Object.keys(data)) {
528
+ if (INTERNAL_PROPERTIES.includes(key)) {
529
+ continue;
530
+ }
531
+ if (INTERNAL_FIELD_SUFFIXES.some((suffix) => key.endsWith(suffix))) {
532
+ continue;
533
+ }
534
+ const value = data[key];
535
+ if (value && typeof value === "object") {
536
+ result[key] = cleanRowData(value);
537
+ } else {
538
+ result[key] = value;
539
+ }
779
540
  }
780
541
  return result;
781
542
  }
782
-
783
- // For primitive types, return as is
784
543
  return data;
785
544
  };
786
-
787
- // Helper function to parse width values
788
- var parseWidth = exports.parseWidth = function parseWidth(width) {
789
- var fallbackSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 150;
790
- var columnSize = fallbackSize;
791
- var styleWidth = width;
545
+ const parseWidth = (width, fallbackSize = 150) => {
546
+ let columnSize = fallbackSize;
547
+ const styleWidth = width;
792
548
  if (typeof styleWidth === "string") {
793
- // Convert percentage to a pixel value (assuming viewport width)
794
549
  if (styleWidth.endsWith("%")) {
795
- var percentage = parseFloat(styleWidth);
796
- // Use a base width of 1200px for percentage calculations
550
+ const percentage = parseFloat(styleWidth);
797
551
  columnSize = Math.round(percentage / 100 * 1200);
798
552
  } else if (styleWidth.endsWith("px")) {
799
553
  columnSize = parseInt(styleWidth);
@@ -803,47 +557,73 @@ var parseWidth = exports.parseWidth = function parseWidth(width) {
803
557
  }
804
558
  return columnSize;
805
559
  };
806
- var getColClass = exports.getColClass = function getColClass(colClass, rowData, columnName) {
807
- // Return empty string if colClass is not provided or not a string
560
+ const getColClass = (colClass, rowData, columnName) => {
808
561
  if (!colClass || typeof colClass !== "string") {
809
562
  return "";
810
563
  }
811
-
812
- // Trim whitespace
813
- var trimmedClass = (0, _lodashEs.trim)(colClass);
564
+ const trimmedClass = trim(colClass);
814
565
  if (!trimmedClass) {
815
566
  return "";
816
567
  }
817
- var hasExpressionOperators = /[?&|<>!=]/.test(trimmedClass) || trimmedClass.includes("(") || trimmedClass.includes("&&") || trimmedClass.includes("||") || trimmedClass.includes("===") || trimmedClass.includes("!==");
818
- var hasRowDataReference = trimmedClass.includes("rowData");
819
- var hasColumnNameReference = trimmedClass.includes("columnName");
820
- var isExpression = hasExpressionOperators || hasRowDataReference || hasColumnNameReference;
821
-
822
- // If it's not an expression, return as-is
568
+ const hasExpressionOperators = /[?&|<>!=]/.test(trimmedClass) || trimmedClass.includes("(") || trimmedClass.includes("&&") || trimmedClass.includes("||") || trimmedClass.includes("===") || trimmedClass.includes("!==");
569
+ const hasRowDataReference = trimmedClass.includes("rowData");
570
+ const hasColumnNameReference = trimmedClass.includes("columnName");
571
+ const isExpression = hasExpressionOperators || hasRowDataReference || hasColumnNameReference;
823
572
  if (!isExpression) {
824
573
  return trimmedClass;
825
574
  }
826
-
827
- // Evaluate the expression using Function constructor
828
575
  try {
829
- var expressionToEvaluate = trimmedClass;
830
- var evaluated = new Function("rowData", "columnName", "return ".concat(expressionToEvaluate))(rowData, columnName);
831
-
832
- // Convert result to string (handles boolean, number, null, undefined)
833
- if (evaluated === null || evaluated === undefined) {
576
+ let expressionToEvaluate = trimmedClass;
577
+ const evaluated = new Function("rowData", "columnName", `return ${expressionToEvaluate}`)(
578
+ rowData,
579
+ columnName
580
+ );
581
+ if (evaluated === null || evaluated === void 0) {
834
582
  return "";
835
583
  }
836
-
837
- // If it's a boolean, return empty string (falsy) or convert to string
838
584
  if (typeof evaluated === "boolean") {
839
585
  return evaluated ? String(evaluated) : "";
840
586
  }
841
587
  return String(evaluated);
842
588
  } catch (error) {
843
589
  console.warn("Failed to evaluate colClass expression:", trimmedClass, error);
844
- // Return empty string on error to prevent breaking the UI
845
590
  return "";
846
591
  }
847
592
  };
848
-
849
- // Export utilities
593
+ export * from "./constants";
594
+ export * from "./renderDisplayCell";
595
+ export * from "./buildSelectionColumns";
596
+ export * from "./validation";
597
+ export * from "./selectionUtils";
598
+ export * from "./columnBuilder";
599
+ export * from "./columnWidthDistribution";
600
+ export * from "./table-helpers";
601
+ export {
602
+ INTERNAL_PROPERTIES,
603
+ addUniqueRowIds,
604
+ cleanRowData,
605
+ extractDataArray,
606
+ flattenTableStructure,
607
+ getActionButtonClass,
608
+ getAggregateFunctions,
609
+ getBooleanDataset,
610
+ getButtonClasses,
611
+ getColClass,
612
+ getSpacingClasses,
613
+ getTableActionButtonClass,
614
+ getWidgetMappingForType,
615
+ handleNewRowNavigation,
616
+ isAddNewAction,
617
+ isColumnVisibleForViewport,
618
+ isDeleteAction,
619
+ isEditAction,
620
+ parseTableActions,
621
+ parseTableColumns,
622
+ parseTableRowActions,
623
+ parseTableRowExpansion,
624
+ parseTableStructureWithGroups,
625
+ parseWidth,
626
+ shouldShowPagination,
627
+ shouldShowPanelHeading,
628
+ validateEditingFields
629
+ };