@wavemaker-ai/react-runtime 1.0.0-rc.647499 → 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,428 +1,348 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useRowSelection = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
- var _react = require("react");
10
- var _selectionUtils = require("../utils/selectionUtils");
11
- var _tableHelpers = require("../utils/table-helpers");
12
- var _utils = require("../utils");
13
- var useRowSelection = exports.useRowSelection = function useRowSelection(_ref) {
14
- var _ref$radioselect = _ref.radioselect,
15
- radioselect = _ref$radioselect === void 0 ? false : _ref$radioselect,
16
- _ref$multiselect = _ref.multiselect,
17
- multiselect = _ref$multiselect === void 0 ? false : _ref$multiselect,
18
- _ref$gridfirstrowsele = _ref.gridfirstrowselect,
19
- gridfirstrowselect = _ref$gridfirstrowsele === void 0 ? false : _ref$gridfirstrowsele,
20
- internalDataset = _ref.internalDataset,
21
- cellState = _ref.cellState,
22
- name = _ref.name,
23
- statehandler = _ref.statehandler,
24
- initialActualPageSize = _ref.initialActualPageSize,
25
- getTableCurrentState = _ref.getTableState,
26
- onRowselect = _ref.onRowselect,
27
- onRowdeselect = _ref.onRowdeselect,
28
- listener = _ref.listener,
29
- _ref$navigation = _ref.navigation,
30
- navigation = _ref$navigation === void 0 ? "Basic" : _ref$navigation,
31
- onSyncSelectedItems = _ref.onSyncSelectedItems;
32
- // Keep a ref to always have the latest dataset
33
- var datasetRef = (0, _react.useRef)(internalDataset);
34
- (0, _react.useEffect)(function () {
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import {
3
+ isInteractiveElement,
4
+ getRowIdsFromDataset,
5
+ rowExistsInDataset,
6
+ selectionStateHelpers
7
+ } from "../utils/selectionUtils";
8
+ import { saveTableState, getTableState } from "../utils/table-helpers";
9
+ import { cleanRowData, UNSUPPORTED_STATE_PERSISTENCE_TYPES } from "../utils";
10
+ const useRowSelection = ({
11
+ radioselect = false,
12
+ multiselect = false,
13
+ gridfirstrowselect = false,
14
+ internalDataset,
15
+ cellState,
16
+ name,
17
+ statehandler,
18
+ initialActualPageSize,
19
+ getTableState: getTableCurrentState,
20
+ onRowselect,
21
+ onRowdeselect,
22
+ listener,
23
+ navigation = "Basic",
24
+ onSyncSelectedItems
25
+ }) => {
26
+ const datasetRef = useRef(internalDataset);
27
+ useEffect(() => {
35
28
  datasetRef.current = internalDataset;
36
29
  }, [internalDataset]);
37
-
38
- // Track if initial first row selection has been done (for gridfirstrowselect)
39
- var initialSelectionDoneRef = (0, _react.useRef)(false);
40
-
41
- // State only for forcing updates when needed
42
- var _useState = (0, _react.useState)({}),
43
- updateTrigger = _useState[0],
44
- forceUpdate = _useState[1];
45
-
46
- // Priority rule: If both radioselect and multiselect are true, multiselect takes precedence
47
- var useMultiSelect = multiselect;
48
- var useRadioSelect = radioselect && !multiselect;
49
-
50
- // Determine if any selection mode is active
51
- var hasSelectionMode = useRadioSelect || useMultiSelect;
52
-
53
- // Helper function to save state immediately
54
- var saveStateImmediate = (0, _react.useCallback)(function () {
30
+ const initialSelectionDoneRef = useRef(false);
31
+ const [updateTrigger, forceUpdate] = useState({});
32
+ const useMultiSelect = multiselect;
33
+ const useRadioSelect = radioselect && !multiselect;
34
+ const hasSelectionMode = useRadioSelect || useMultiSelect;
35
+ const saveStateImmediate = useCallback(() => {
55
36
  if (!statehandler || !getTableCurrentState) {
56
37
  return;
57
38
  }
58
- var _getTableCurrentState = getTableCurrentState(),
59
- currentPage = _getTableCurrentState.currentPage,
60
- currentPageSize = _getTableCurrentState.currentPageSize;
61
-
62
- // Get current selections from the unified array
63
- var selectedIds = _selectionUtils.selectionStateHelpers.getSelection(cellState);
64
-
65
- // Find selected indices in current dataset
66
- var selectedIndices = [];
67
- selectedIds.forEach(function (rowId) {
68
- var index = internalDataset.findIndex(function (row) {
69
- return row._wmTableRowId === rowId || row.id === rowId;
70
- });
39
+ const { currentPage, currentPageSize } = getTableCurrentState();
40
+ const selectedIds = selectionStateHelpers.getSelection(cellState);
41
+ const selectedIndices = [];
42
+ selectedIds.forEach((rowId) => {
43
+ const index = internalDataset.findIndex(
44
+ (row) => row._wmTableRowId === rowId || row.id === rowId
45
+ );
71
46
  if (index >= 0) {
72
47
  selectedIndices.push(index);
73
48
  }
74
49
  });
75
-
76
- // Build selected items with page info
77
- var selectedItemsWithPage = selectedIndices.map(function (idx) {
78
- return {
79
- page: currentPage,
80
- index: idx
81
- };
82
- });
83
- var stateToSave = {
50
+ const selectedItemsWithPage = selectedIndices.map((idx) => ({
51
+ page: currentPage,
52
+ index: idx
53
+ }));
54
+ const stateToSave = {
84
55
  pagination: currentPage,
85
56
  selectedItem: selectedItemsWithPage
86
57
  };
87
-
88
- // Include actualPageSize if available
89
- if (initialActualPageSize !== undefined) {
58
+ if (initialActualPageSize !== void 0) {
90
59
  stateToSave.actualpagesize = initialActualPageSize;
91
60
  }
92
-
93
- // Check if this is default state
94
- var isDefaultState = currentPage === 1 && selectedIds.length === 0;
61
+ const isDefaultState = currentPage === 1 && selectedIds.length === 0;
95
62
  if (isDefaultState) {
96
- // Clear state if returning to default
97
- (0, _tableHelpers.saveTableState)(name, statehandler, {});
63
+ saveTableState(name, statehandler, {});
98
64
  } else {
99
- // Get existing state
100
- var existingState = (0, _tableHelpers.getTableState)(name, statehandler);
101
-
102
- // For radio select, don't merge - just replace with current selection
65
+ const existingState = getTableState(name, statehandler);
103
66
  if (useRadioSelect) {
104
67
  stateToSave.selectedItem = selectedItemsWithPage;
105
68
  } else if (useMultiSelect) {
106
- // For multi-select, merge selected items from different pages
107
69
  if (existingState && existingState.selectedItem) {
108
- var otherPageSelections = existingState.selectedItem.filter(function (item) {
109
- return item.page !== currentPage;
110
- });
111
- stateToSave.selectedItem = [].concat((0, _toConsumableArray2["default"])(otherPageSelections), (0, _toConsumableArray2["default"])(selectedItemsWithPage));
70
+ const otherPageSelections = existingState.selectedItem.filter(
71
+ (item) => item.page !== currentPage
72
+ );
73
+ stateToSave.selectedItem = [...otherPageSelections, ...selectedItemsWithPage];
112
74
  }
113
75
  }
114
-
115
- // Preserve pagesize if exists
116
- if (existingState !== null && existingState !== void 0 && existingState.pagesize) {
76
+ if (existingState == null ? void 0 : existingState.pagesize) {
117
77
  stateToSave.pagesize = existingState.pagesize;
118
78
  }
119
-
120
- // Preserve actualpagesize if exists and not in new state
121
- if (!stateToSave.actualpagesize && existingState !== null && existingState !== void 0 && existingState.actualpagesize) {
79
+ if (!stateToSave.actualpagesize && (existingState == null ? void 0 : existingState.actualpagesize)) {
122
80
  stateToSave.actualpagesize = existingState.actualpagesize;
123
81
  }
124
- (0, _tableHelpers.saveTableState)(name, statehandler, stateToSave);
82
+ saveTableState(name, statehandler, stateToSave);
125
83
  }
126
- }, [statehandler, getTableCurrentState, name, useMultiSelect, useRadioSelect, cellState, internalDataset, initialActualPageSize]);
127
-
128
- // Helper to get widget reference
129
- var getWidgetRef = (0, _react.useCallback)(function () {
130
- var _listener$Widgets;
131
- return listener === null || listener === void 0 || (_listener$Widgets = listener.Widgets) === null || _listener$Widgets === void 0 ? void 0 : _listener$Widgets[name];
84
+ }, [
85
+ statehandler,
86
+ getTableCurrentState,
87
+ name,
88
+ useMultiSelect,
89
+ useRadioSelect,
90
+ cellState,
91
+ internalDataset,
92
+ initialActualPageSize
93
+ ]);
94
+ const getWidgetRef = useCallback(() => {
95
+ var _a;
96
+ return (_a = listener == null ? void 0 : listener.Widgets) == null ? void 0 : _a[name];
132
97
  }, [name]);
133
-
134
- // Helper to trigger selection callbacks
135
- var triggerSelectionCallback = (0, _react.useCallback)(function (event, rowData, callback) {
136
- if (callback && rowData) {
137
- // Sync selectedItems into the widget proxy BEFORE firing the user callback so
138
- // that Page.Widgets.<table>.selectedItems is up-to-date when the handler runs.
139
- onSyncSelectedItems === null || onSyncSelectedItems === void 0 || onSyncSelectedItems(_selectionUtils.selectionStateHelpers.getSelection(cellState));
140
- var cleanedRow = (0, _utils.cleanRowData)([rowData])[0];
141
- callback(event, getWidgetRef(), cleanedRow);
142
- }
143
- }, [getWidgetRef, onSyncSelectedItems, cellState]);
144
-
145
- // Handle selection for radio mode (replaces previous selection)
146
- var handleRadioSelection = (0, _react.useCallback)(function (rowId, rowData) {
147
- // Get the currently selected row (if any) before changing selection
148
- var previousSelection = _selectionUtils.selectionStateHelpers.getSelection(cellState);
149
- var previousRowId = previousSelection.length > 0 ? previousSelection[0] : null;
150
-
151
- // Find the previously selected row data if it exists and is different
152
- var previousRowData = null;
153
- if (previousRowId && previousRowId !== rowId && onRowdeselect) {
154
- previousRowData = internalDataset.find(function (row) {
155
- return row._wmTableRowId === previousRowId || row.id === previousRowId;
156
- });
157
- }
158
-
159
- // Set the new selection
160
- _selectionUtils.selectionStateHelpers.setSelection(cellState, rowId);
161
- forceUpdate({});
162
- saveStateImmediate();
163
-
164
- // Trigger callbacks in order: deselect previous, then select new
165
- if (previousRowData) {
166
- triggerSelectionCallback(null, previousRowData, onRowdeselect);
167
- }
168
- triggerSelectionCallback(null, rowData, onRowselect);
169
- }, [cellState, saveStateImmediate, onRowselect, onRowdeselect, internalDataset, triggerSelectionCallback]);
170
-
171
- // Handle selection for multiselect mode (add/remove from selection)
172
- var handleMultiSelection = (0, _react.useCallback)(function (rowId, rowData, isSelected) {
173
- if (isSelected) {
174
- _selectionUtils.selectionStateHelpers.addToSelection(cellState, rowId);
175
- } else {
176
- _selectionUtils.selectionStateHelpers.removeFromSelection(cellState, rowId);
177
- }
178
- forceUpdate({});
179
- saveStateImmediate();
180
-
181
- // Trigger appropriate callback
182
- triggerSelectionCallback(null, rowData, isSelected ? onRowselect : onRowdeselect);
183
- }, [cellState, saveStateImmediate, onRowselect, onRowdeselect, triggerSelectionCallback]);
184
-
185
- // Toggle all rows selection for multiselect
186
- var handleSelectAll = (0, _react.useCallback)(function (isSelected) {
187
- var newIds = [];
188
- if (isSelected) {
189
- // Use ref to ensure we always have the latest dataset
190
- newIds = (0, _selectionUtils.getRowIdsFromDataset)(datasetRef.current);
191
- _selectionUtils.selectionStateHelpers.setAllSelection(cellState, newIds);
192
- } else {
193
- _selectionUtils.selectionStateHelpers.clearSelection(cellState);
194
- }
195
- forceUpdate({});
196
- saveStateImmediate();
197
-
198
- // Sync selectedItems to proxy once (so Page.Widgets.<table>.selectedItems is up-to-date
199
- // for any onRowselect/onRowdeselect callbacks that fire below).
200
- onSyncSelectedItems === null || onSyncSelectedItems === void 0 || onSyncSelectedItems(newIds);
201
-
202
- // Fire per-row callbacks so user scripts (e.g. onRowselect updating a label) are triggered.
203
- // onSyncSelectedItems is intentionally NOT called inside each iteration — we already synced
204
- // the full selection above, avoiding O(N) redundant proxy writes.
205
- var rows = datasetRef.current;
206
- var callback = isSelected ? onRowselect : onRowdeselect;
207
- if (callback && rows.length > 0) {
208
- rows.forEach(function (row) {
209
- var cleanedRow = (0, _utils.cleanRowData)([row])[0];
210
- callback(null, getWidgetRef(), cleanedRow);
211
- });
212
- }
213
- }, [cellState, saveStateImmediate, onSyncSelectedItems, onRowselect, onRowdeselect, getWidgetRef]);
214
-
215
- // Handle row selection on click - unified handler
216
- var handleRowSelectionClick = (0, _react.useCallback)(function (event, rowId, rowData) {
217
- // If clicking on an interactive element, don't handle row selection
218
- if ((0, _selectionUtils.isInteractiveElement)(event)) {
219
- return false;
220
- }
221
-
222
- // Handle based on selection mode
223
- if (useMultiSelect) {
224
- // Check if row is currently selected and toggle
225
- var isCurrentlySelected = _selectionUtils.selectionStateHelpers.isRowSelected(cellState, rowId);
226
- var willBeSelected = !isCurrentlySelected;
227
- _selectionUtils.selectionStateHelpers.toggleSelection(cellState, rowId);
98
+ const triggerSelectionCallback = useCallback(
99
+ (event, rowData, callback) => {
100
+ if (callback && rowData) {
101
+ onSyncSelectedItems == null ? void 0 : onSyncSelectedItems(selectionStateHelpers.getSelection(cellState));
102
+ const cleanedRow = cleanRowData([rowData])[0];
103
+ callback(event, getWidgetRef(), cleanedRow);
104
+ }
105
+ },
106
+ [getWidgetRef, onSyncSelectedItems, cellState]
107
+ );
108
+ const handleRadioSelection = useCallback(
109
+ (rowId, rowData) => {
110
+ const previousSelection = selectionStateHelpers.getSelection(cellState);
111
+ const previousRowId = previousSelection.length > 0 ? previousSelection[0] : null;
112
+ let previousRowData = null;
113
+ if (previousRowId && previousRowId !== rowId && onRowdeselect) {
114
+ previousRowData = internalDataset.find(
115
+ (row) => row._wmTableRowId === previousRowId || row.id === previousRowId
116
+ );
117
+ }
118
+ selectionStateHelpers.setSelection(cellState, rowId);
228
119
  forceUpdate({});
229
120
  saveStateImmediate();
230
-
231
- // Trigger appropriate callback based on new selection state
232
- triggerSelectionCallback(event, rowData, willBeSelected ? onRowselect : onRowdeselect);
233
- return true;
234
- } else {
235
- // Replace selection for radio select (or default mode)
236
- handleRadioSelection(rowId, rowData);
237
- return true;
238
- }
239
- }, [useMultiSelect, handleRadioSelection, cellState, saveStateImmediate, triggerSelectionCallback, onRowselect, onRowdeselect]);
240
-
241
- // First row selection logic - only runs once on initial render
242
- (0, _react.useEffect)(function () {
243
- // Skip if initial selection has already been done
121
+ if (previousRowData) {
122
+ triggerSelectionCallback(null, previousRowData, onRowdeselect);
123
+ }
124
+ triggerSelectionCallback(null, rowData, onRowselect);
125
+ },
126
+ [
127
+ cellState,
128
+ saveStateImmediate,
129
+ onRowselect,
130
+ onRowdeselect,
131
+ internalDataset,
132
+ triggerSelectionCallback
133
+ ]
134
+ );
135
+ const handleMultiSelection = useCallback(
136
+ (rowId, rowData, isSelected) => {
137
+ if (isSelected) {
138
+ selectionStateHelpers.addToSelection(cellState, rowId);
139
+ } else {
140
+ selectionStateHelpers.removeFromSelection(cellState, rowId);
141
+ }
142
+ forceUpdate({});
143
+ saveStateImmediate();
144
+ triggerSelectionCallback(null, rowData, isSelected ? onRowselect : onRowdeselect);
145
+ },
146
+ [cellState, saveStateImmediate, onRowselect, onRowdeselect, triggerSelectionCallback]
147
+ );
148
+ const handleSelectAll = useCallback(
149
+ (isSelected) => {
150
+ let newIds = [];
151
+ if (isSelected) {
152
+ newIds = getRowIdsFromDataset(datasetRef.current);
153
+ selectionStateHelpers.setAllSelection(cellState, newIds);
154
+ } else {
155
+ selectionStateHelpers.clearSelection(cellState);
156
+ }
157
+ forceUpdate({});
158
+ saveStateImmediate();
159
+ onSyncSelectedItems == null ? void 0 : onSyncSelectedItems(newIds);
160
+ const rows = datasetRef.current;
161
+ const callback = isSelected ? onRowselect : onRowdeselect;
162
+ if (callback && rows.length > 0) {
163
+ rows.forEach((row) => {
164
+ const cleanedRow = cleanRowData([row])[0];
165
+ callback(null, getWidgetRef(), cleanedRow);
166
+ });
167
+ }
168
+ },
169
+ [cellState, saveStateImmediate, onSyncSelectedItems, onRowselect, onRowdeselect, getWidgetRef]
170
+ );
171
+ const handleRowSelectionClick = useCallback(
172
+ (event, rowId, rowData) => {
173
+ if (isInteractiveElement(event)) {
174
+ return false;
175
+ }
176
+ if (useMultiSelect) {
177
+ const isCurrentlySelected = selectionStateHelpers.isRowSelected(cellState, rowId);
178
+ const willBeSelected = !isCurrentlySelected;
179
+ selectionStateHelpers.toggleSelection(cellState, rowId);
180
+ forceUpdate({});
181
+ saveStateImmediate();
182
+ triggerSelectionCallback(event, rowData, willBeSelected ? onRowselect : onRowdeselect);
183
+ return true;
184
+ } else {
185
+ handleRadioSelection(rowId, rowData);
186
+ return true;
187
+ }
188
+ },
189
+ [
190
+ useMultiSelect,
191
+ handleRadioSelection,
192
+ cellState,
193
+ saveStateImmediate,
194
+ triggerSelectionCallback,
195
+ onRowselect,
196
+ onRowdeselect
197
+ ]
198
+ );
199
+ useEffect(() => {
244
200
  if (initialSelectionDoneRef.current) {
245
201
  return;
246
202
  }
247
-
248
- // Only proceed if gridfirstrowselect is true and we have data
249
203
  if (gridfirstrowselect && internalDataset.length > 0) {
250
- var firstRowData = internalDataset[0];
251
- var firstRowId = firstRowData._wmTableRowId || String(firstRowData.id) || String(0);
252
-
253
- // Check if any row is currently selected
254
- var currentSelection = _selectionUtils.selectionStateHelpers.getSelection(cellState);
204
+ const firstRowData = internalDataset[0];
205
+ const firstRowId = firstRowData._wmTableRowId || String(firstRowData.id) || String(0);
206
+ const currentSelection = selectionStateHelpers.getSelection(cellState);
255
207
  if (currentSelection.length === 0) {
256
- // No selection - select the first row
257
208
  if (useMultiSelect) {
258
- _selectionUtils.selectionStateHelpers.addToSelection(cellState, firstRowId);
209
+ selectionStateHelpers.addToSelection(cellState, firstRowId);
259
210
  } else {
260
- _selectionUtils.selectionStateHelpers.setSelection(cellState, firstRowId);
211
+ selectionStateHelpers.setSelection(cellState, firstRowId);
261
212
  }
262
213
  forceUpdate({});
263
214
  initialSelectionDoneRef.current = true;
264
215
  } else if (!useMultiSelect) {
265
- // For radio select, check if the selected row still exists
266
- var selectedId = currentSelection[0];
267
- if (!(0, _selectionUtils.rowExistsInDataset)(selectedId, internalDataset)) {
268
- _selectionUtils.selectionStateHelpers.setSelection(cellState, firstRowId);
216
+ const selectedId = currentSelection[0];
217
+ if (!rowExistsInDataset(selectedId, internalDataset)) {
218
+ selectionStateHelpers.setSelection(cellState, firstRowId);
269
219
  forceUpdate({});
270
220
  initialSelectionDoneRef.current = true;
271
221
  }
272
222
  }
273
223
  }
274
224
  }, [gridfirstrowselect, internalDataset, useMultiSelect, cellState]);
275
-
276
- // Page change selection logic - runs when page changes
277
- (0, _react.useEffect)(function () {
278
- var _savedState$selectedI;
279
- // Only proceed if gridfirstrowselect is true and we have data
225
+ useEffect(() => {
226
+ var _a;
280
227
  if (!gridfirstrowselect || internalDataset.length === 0 || !initialSelectionDoneRef.current) {
281
228
  return;
282
229
  }
283
-
284
- // Get current page number
285
- var currentPage = (getTableCurrentState === null || getTableCurrentState === void 0 ? void 0 : getTableCurrentState().currentPage) || 1;
286
-
287
- // Check if there are already selected items on the current page
288
- var savedState = (0, _tableHelpers.getTableState)(name, statehandler);
289
- var selectedIdsInCurrentPage = (savedState === null || savedState === void 0 || (_savedState$selectedI = savedState.selectedItem) === null || _savedState$selectedI === void 0 ? void 0 : _savedState$selectedI.filter(function (item) {
290
- return item.page === currentPage;
291
- }).map(function (item) {
292
- return item.index;
293
- })) || [];
230
+ const currentPage = (getTableCurrentState == null ? void 0 : getTableCurrentState().currentPage) || 1;
231
+ const savedState = getTableState(name, statehandler);
232
+ const selectedIdsInCurrentPage = ((_a = savedState == null ? void 0 : savedState.selectedItem) == null ? void 0 : _a.filter((item) => item.page === currentPage).map((item) => item.index)) || [];
294
233
  if (selectedIdsInCurrentPage.length > 0) {
295
234
  return;
296
235
  }
297
-
298
- // Check if there's a selection for this page in current dataset
299
- var currentSelection = _selectionUtils.selectionStateHelpers.getSelection(cellState);
300
- var hasSelectionInCurrentPage = currentSelection.some(function (selectedId) {
301
- return (0, _selectionUtils.rowExistsInDataset)(selectedId, internalDataset);
302
- });
303
-
304
- // Select first row if no selection exists on this page
236
+ const currentSelection = selectionStateHelpers.getSelection(cellState);
237
+ const hasSelectionInCurrentPage = currentSelection.some(
238
+ (selectedId) => rowExistsInDataset(selectedId, internalDataset)
239
+ );
305
240
  if (!hasSelectionInCurrentPage) {
306
- var firstRowData = internalDataset[0];
307
- var firstRowId = firstRowData._wmTableRowId || String(firstRowData.id) || String(0);
241
+ const firstRowData = internalDataset[0];
242
+ const firstRowId = firstRowData._wmTableRowId || String(firstRowData.id) || String(0);
308
243
  if (useMultiSelect) {
309
- _selectionUtils.selectionStateHelpers.addToSelection(cellState, firstRowId);
244
+ selectionStateHelpers.addToSelection(cellState, firstRowId);
310
245
  } else {
311
- _selectionUtils.selectionStateHelpers.setSelection(cellState, firstRowId);
246
+ selectionStateHelpers.setSelection(cellState, firstRowId);
312
247
  }
313
248
  forceUpdate({});
314
-
315
- // Trigger onRowselect callback for the first row
316
249
  if (onRowselect) {
317
250
  triggerSelectionCallback(null, firstRowData, onRowselect);
318
251
  }
319
252
  }
320
- }, [gridfirstrowselect, internalDataset, useMultiSelect, cellState, getTableCurrentState, name, statehandler, onRowselect, triggerSelectionCallback]);
321
-
322
- // Check if a row is selected - memoized
323
- var isRowSelected = (0, _react.useCallback)(function (rowId) {
324
- return _selectionUtils.selectionStateHelpers.isRowSelected(cellState, rowId);
325
- }, [cellState]);
326
-
327
- // Get selected row IDs - unified array that works for both modes
328
- // For radio select: contains at most 1 item
329
- // For multiselect: can contain multiple items
330
- // Always track selections regardless of selection mode for state persistence purposes
331
- // (internally treat as radioselect if no mode is specified)
332
- var selectedRowIds = (0, _react.useMemo)(function () {
333
- return _selectionUtils.selectionStateHelpers.getSelection(cellState);
253
+ }, [
254
+ gridfirstrowselect,
255
+ internalDataset,
256
+ useMultiSelect,
257
+ cellState,
258
+ getTableCurrentState,
259
+ name,
260
+ statehandler,
261
+ onRowselect,
262
+ triggerSelectionCallback
263
+ ]);
264
+ const isRowSelected = useCallback(
265
+ (rowId) => {
266
+ return selectionStateHelpers.isRowSelected(cellState, rowId);
267
+ },
268
+ [cellState]
269
+ );
270
+ const selectedRowIds = useMemo(() => {
271
+ return selectionStateHelpers.getSelection(cellState);
334
272
  }, [cellState, updateTrigger]);
335
-
336
- // Restore selections when page changes (after initial restoration)
337
- (0, _react.useEffect)(function () {
338
- // Skip if no state handler or unsupported navigation
339
- if (!statehandler || _utils.UNSUPPORTED_STATE_PERSISTENCE_TYPES.includes(navigation)) {
273
+ useEffect(() => {
274
+ if (!statehandler || UNSUPPORTED_STATE_PERSISTENCE_TYPES.includes(navigation)) {
340
275
  return;
341
276
  }
342
-
343
- // Skip if not yet initialized (wait for initial selection logic to complete)
344
277
  if (!initialSelectionDoneRef.current) {
345
278
  return;
346
279
  }
347
-
348
- // Get current page
349
- var currentPage = (getTableCurrentState === null || getTableCurrentState === void 0 ? void 0 : getTableCurrentState().currentPage) || 1;
350
-
351
- // Get saved state
352
- var savedState = (0, _tableHelpers.getTableState)(name, statehandler);
280
+ const currentPage = (getTableCurrentState == null ? void 0 : getTableCurrentState().currentPage) || 1;
281
+ const savedState = getTableState(name, statehandler);
353
282
  if (!savedState || !savedState.selectedItem || savedState.selectedItem.length === 0) {
354
283
  return;
355
284
  }
356
-
357
- // Check if there's an active filter - don't restore if filtering
358
- var hasActiveFilter = savedState.search && savedState.search.length > 0;
285
+ const hasActiveFilter = savedState.search && savedState.search.length > 0;
359
286
  if (hasActiveFilter) {
360
287
  return;
361
288
  }
362
-
363
- // Get selections for current page from saved state
364
- var currentPageSelections = savedState.selectedItem.filter(function (item) {
365
- return item.page === currentPage;
366
- }).map(function (item) {
367
- return item.index;
368
- });
369
-
370
- // If there are selections for this page, restore them
289
+ const currentPageSelections = savedState.selectedItem.filter((item) => item.page === currentPage).map((item) => item.index);
371
290
  if (currentPageSelections.length > 0 && internalDataset.length > 0) {
372
- // Check if these selections are already applied
373
- var currentSelection = _selectionUtils.selectionStateHelpers.getSelection(cellState);
374
-
375
- // Build expected row IDs from indices
376
- var expectedRowIds = [];
377
- currentPageSelections.forEach(function (index) {
291
+ const currentSelection = selectionStateHelpers.getSelection(cellState);
292
+ const expectedRowIds = [];
293
+ currentPageSelections.forEach((index) => {
378
294
  if (index >= 0 && index < internalDataset.length) {
379
- var row = internalDataset[index];
295
+ const row = internalDataset[index];
380
296
  if (row && row._wmTableRowId) {
381
297
  expectedRowIds.push(row._wmTableRowId);
382
298
  }
383
299
  }
384
300
  });
385
-
386
- // Check if current selection matches expected
387
- var isAlreadyRestored = expectedRowIds.length === currentSelection.length && expectedRowIds.every(function (id) {
388
- return currentSelection.includes(id);
389
- });
301
+ const isAlreadyRestored = expectedRowIds.length === currentSelection.length && expectedRowIds.every((id) => currentSelection.includes(id));
390
302
  if (!isAlreadyRestored && expectedRowIds.length > 0) {
391
- // Apply restored selections
392
303
  if (useMultiSelect) {
393
- // For multiselect, clear and add all restored items
394
- _selectionUtils.selectionStateHelpers.clearSelection(cellState);
395
- currentPageSelections.forEach(function (index) {
304
+ selectionStateHelpers.clearSelection(cellState);
305
+ currentPageSelections.forEach((index) => {
396
306
  if (index >= 0 && index < internalDataset.length) {
397
- var row = internalDataset[index];
307
+ const row = internalDataset[index];
398
308
  if (row && row._wmTableRowId) {
399
- _selectionUtils.selectionStateHelpers.addToSelection(cellState, row._wmTableRowId);
309
+ selectionStateHelpers.addToSelection(cellState, row._wmTableRowId);
400
310
  }
401
311
  }
402
312
  });
403
313
  } else {
404
- // For radio select, only restore the first selection
405
- var firstIndex = currentPageSelections[0];
314
+ const firstIndex = currentPageSelections[0];
406
315
  if (firstIndex >= 0 && firstIndex < internalDataset.length) {
407
- var row = internalDataset[firstIndex];
316
+ const row = internalDataset[firstIndex];
408
317
  if (row && row._wmTableRowId) {
409
- _selectionUtils.selectionStateHelpers.setSelection(cellState, row._wmTableRowId);
318
+ selectionStateHelpers.setSelection(cellState, row._wmTableRowId);
410
319
  }
411
320
  }
412
321
  }
413
322
  forceUpdate({});
414
323
  }
415
324
  }
416
- }, [getTableCurrentState, name, statehandler, navigation, internalDataset, cellState, useMultiSelect]);
325
+ }, [
326
+ getTableCurrentState,
327
+ name,
328
+ statehandler,
329
+ navigation,
330
+ internalDataset,
331
+ cellState,
332
+ useMultiSelect
333
+ ]);
417
334
  return {
418
- selectedRowIds: selectedRowIds,
419
- useMultiSelect: useMultiSelect,
420
- useRadioSelect: useRadioSelect,
421
- handleRadioSelection: handleRadioSelection,
422
- handleMultiSelection: handleMultiSelection,
423
- handleSelectAll: handleSelectAll,
424
- handleRowSelectionClick: handleRowSelectionClick,
425
- isRowSelected: isRowSelected,
426
- isInteractiveElement: _selectionUtils.isInteractiveElement
335
+ selectedRowIds,
336
+ useMultiSelect,
337
+ useRadioSelect,
338
+ handleRadioSelection,
339
+ handleMultiSelection,
340
+ handleSelectAll,
341
+ handleRowSelectionClick,
342
+ isRowSelected,
343
+ isInteractiveElement
427
344
  };
428
- };
345
+ };
346
+ export {
347
+ useRowSelection
348
+ };