@wavemaker-ai/react-runtime 1.0.0-rc.312 → 1.0.0-rc.317

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 (593) 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.d.ts +1 -0
  6. package/actions/navigation-action.js +275 -345
  7. package/actions/notification-action.js +121 -149
  8. package/actions/timer-action.js +95 -151
  9. package/actions/toast-provider.js +62 -76
  10. package/actions/toast.js +95 -91
  11. package/actions/toast.service.js +59 -79
  12. package/actions/types/index.js +6 -9
  13. package/components/advanced/carousel/index.js +358 -366
  14. package/components/advanced/carousel/props.js +0 -5
  15. package/components/advanced/carousel/template.js +102 -80
  16. package/components/advanced/login/index.js +227 -285
  17. package/components/advanced/login/props.js +0 -5
  18. package/components/advanced/marquee/index.js +169 -163
  19. package/components/advanced/marquee/props.js +0 -5
  20. package/components/auth/RoleAuthGuard.d.ts +6 -0
  21. package/components/auth/RoleAuthGuard.js +65 -0
  22. package/components/basic/anchor/index.js +207 -187
  23. package/components/basic/anchor/props.js +0 -5
  24. package/components/basic/audio/index.js +110 -72
  25. package/components/basic/audio/props.js +0 -5
  26. package/components/basic/html/index.js +163 -203
  27. package/components/basic/html/props.js +0 -5
  28. package/components/basic/html/utils.js +30 -28
  29. package/components/basic/icon/index.js +98 -84
  30. package/components/basic/icon/props.js +0 -5
  31. package/components/basic/iframe/iframe.utils.js +7 -16
  32. package/components/basic/iframe/index.js +97 -103
  33. package/components/basic/iframe/props.js +0 -5
  34. package/components/basic/label/index.js +156 -134
  35. package/components/basic/label/props.js +0 -5
  36. package/components/basic/message/index.js +129 -113
  37. package/components/basic/message/props.js +0 -5
  38. package/components/basic/picture/index.js +156 -127
  39. package/components/basic/picture/props.js +0 -5
  40. package/components/basic/progress-bar/index.js +240 -176
  41. package/components/basic/progress-bar/props.js +5 -31
  42. package/components/basic/progress-circle/index.js +166 -183
  43. package/components/basic/progress-circle/props.js +14 -34
  44. package/components/basic/richtexteditor/index.js +430 -396
  45. package/components/basic/richtexteditor/props.js +0 -5
  46. package/components/basic/search/index.js +813 -931
  47. package/components/basic/search/props.js +0 -5
  48. package/components/basic/search/providers.js +233 -380
  49. package/components/basic/spinner/index.js +210 -200
  50. package/components/basic/spinner/props.js +4 -22
  51. package/components/basic/tile/index.js +73 -81
  52. package/components/basic/tile/props.js +0 -5
  53. package/components/basic/tree/Components/TreeNodeComponent.d.ts +1 -1
  54. package/components/basic/tree/Components/TreeNodeComponent.js +244 -170
  55. package/components/basic/tree/hooks/useTreePartialNodeApi.js +143 -135
  56. package/components/basic/tree/hooks/useTreePersistedState.d.ts +3 -0
  57. package/components/basic/tree/hooks/useTreePersistedState.js +38 -0
  58. package/components/basic/tree/index.d.ts +1 -0
  59. package/components/basic/tree/index.js +453 -454
  60. package/components/basic/tree/props.d.ts +18 -1
  61. package/components/basic/tree/props.js +0 -5
  62. package/components/basic/tree/utils.d.ts +16 -1
  63. package/components/basic/tree/utils.js +240 -185
  64. package/components/basic/video/index.js +161 -107
  65. package/components/basic/video/props.js +0 -5
  66. package/components/chart/index.js +42 -50
  67. package/components/chart/props.js +31 -37
  68. package/components/chart/src/ChartRenderer.js +172 -154
  69. package/components/chart/src/chart.js +391 -213
  70. package/components/chart/src/chartStyles.generated.js +6 -14
  71. package/components/chart/src/chartUtils.js +228 -272
  72. package/components/chart/src/constants.d.ts +13 -0
  73. package/components/chart/src/constants.js +316 -90
  74. package/components/chart/src/d3Setup.js +11 -30
  75. package/components/chart/src/dataUtils.js +363 -447
  76. package/components/chart/src/formatUtils.js +47 -38
  77. package/components/chart/src/index.js +11 -19
  78. package/components/chart/src/nvd3Source.generated.js +5 -13
  79. package/components/chart/src/pieDonutResponsiveLayout.d.ts +5 -0
  80. package/components/chart/src/pieDonutResponsiveLayout.js +76 -96
  81. package/components/chart/src/types.js +0 -5
  82. package/components/common/AppSpinner.js +17 -33
  83. package/components/common/app-spinner.js +11 -22
  84. package/components/common/customTemplate/index.d.ts +3 -0
  85. package/components/common/customTemplate/index.js +6 -0
  86. package/components/common/customTemplate/props.d.ts +20 -0
  87. package/components/common/customTemplate/props.js +0 -0
  88. package/components/common/customTemplate/template.d.ts +3 -0
  89. package/components/common/customTemplate/template.js +27 -0
  90. package/components/common/customTemplate/useCustomTemplate.d.ts +8 -0
  91. package/components/common/customTemplate/useCustomTemplate.js +17 -0
  92. package/components/common/customTemplate/utils.d.ts +6 -0
  93. package/components/common/customTemplate/utils.js +12 -0
  94. package/components/common/index.js +4 -12
  95. package/components/constants.js +81 -77
  96. package/components/container/accordion/accordion-pane/index.js +105 -118
  97. package/components/container/accordion/accordion-pane/props.js +5 -21
  98. package/components/container/accordion/index.js +225 -243
  99. package/components/container/accordion/props.js +5 -16
  100. package/components/container/index.js +210 -155
  101. package/components/container/layout-grid/grid-column/index.js +69 -43
  102. package/components/container/layout-grid/grid-column/props.js +0 -5
  103. package/components/container/layout-grid/grid-row/index.js +12 -29
  104. package/components/container/layout-grid/grid-row/props.js +0 -5
  105. package/components/container/layout-grid/index.js +53 -38
  106. package/components/container/layout-grid/props.js +0 -5
  107. package/components/container/linear-layout/index.js +56 -60
  108. package/components/container/linear-layout/linear-layout-item/index.js +43 -47
  109. package/components/container/linear-layout/linear-layout-item/props.js +0 -5
  110. package/components/container/linear-layout/props.js +0 -5
  111. package/components/container/panel/components/panel-content/index.js +7 -16
  112. package/components/container/panel/components/panel-header/index.js +166 -146
  113. package/components/container/panel/components/panel-header/props.js +0 -5
  114. package/components/container/panel/hooks.js +76 -102
  115. package/components/container/panel/index.js +289 -252
  116. package/components/container/panel/props.js +0 -5
  117. package/components/container/props.js +0 -5
  118. package/components/container/repeat-template/index.js +65 -44
  119. package/components/container/repeat-template/props.js +0 -5
  120. package/components/container/tabs/index.js +517 -526
  121. package/components/container/tabs/props.js +5 -28
  122. package/components/container/tabs/tab-pane/index.js +105 -100
  123. package/components/container/tabs/tab-pane/props.js +0 -5
  124. package/components/container/tabs/utils.js +30 -35
  125. package/components/container/wizard/WizardContext.js +9 -11
  126. package/components/container/wizard/components/StepComponents.js +76 -99
  127. package/components/container/wizard/components/WizardStep.js +107 -85
  128. package/components/container/wizard/index.js +791 -921
  129. package/components/container/wizard/props.js +0 -5
  130. package/components/container/wizard/utils.js +97 -131
  131. package/components/container/wizard/wizard-action/index.js +41 -81
  132. package/components/container/wizard/wizard-step/index.js +140 -120
  133. package/components/data/card/card-actions/index.js +13 -31
  134. package/components/data/card/card-content/index.js +27 -36
  135. package/components/data/card/card-footer/index.js +13 -31
  136. package/components/data/card/index.js +192 -199
  137. package/components/data/card/props.js +0 -5
  138. package/components/data/form/base-form/constant.js +5 -8
  139. package/components/data/form/base-form/hooks/index.js +26 -77
  140. package/components/data/form/base-form/hooks/useFormDataSync.js +106 -212
  141. package/components/data/form/base-form/hooks/useFormOperations.js +109 -161
  142. package/components/data/form/base-form/hooks/useFormSubmission.js +220 -280
  143. package/components/data/form/base-form/hooks/useFormValidation.js +119 -168
  144. package/components/data/form/base-form/hooks/useParentFormRelationship.js +67 -103
  145. package/components/data/form/base-form/index.js +534 -647
  146. package/components/data/form/base-form/props.js +74 -151
  147. package/components/data/form/base-form/utils.js +210 -323
  148. package/components/data/form/dynamic-fields/constant.js +43 -53
  149. package/components/data/form/dynamic-fields/index.js +135 -144
  150. package/components/data/form/dynamic-fields/props.js +0 -5
  151. package/components/data/form/dynamic-fields/utils.js +99 -158
  152. package/components/data/form/form-action/index.js +107 -85
  153. package/components/data/form/form-body/index.js +52 -26
  154. package/components/data/form/form-context.js +43 -59
  155. package/components/data/form/form-controller/hooks/index.js +43 -57
  156. package/components/data/form/form-controller/props.js +5 -8
  157. package/components/data/form/form-controller/utils.js +54 -49
  158. package/components/data/form/form-controller/validation-contrustor.js +203 -426
  159. package/components/data/form/form-controller/withFormController.js +320 -274
  160. package/components/data/form/form-dynamic-section/index.js +47 -41
  161. package/components/data/form/form-dynamic-section/props.js +0 -5
  162. package/components/data/form/form-field/base-field.js +97 -109
  163. package/components/data/form/form-field/index.js +91 -82
  164. package/components/data/form/form-field/props.js +0 -5
  165. package/components/data/form/form-footer/index.js +52 -25
  166. package/components/data/form/form-header/index.js +61 -58
  167. package/components/data/form/index.js +95 -74
  168. package/components/data/form/props.js +0 -5
  169. package/components/data/list/components/GroupHeader.js +34 -33
  170. package/components/data/list/components/GroupedListItems.js +108 -104
  171. package/components/data/list/components/ListContainer.js +22 -27
  172. package/components/data/list/components/ListDND.js +193 -185
  173. package/components/data/list/components/ListHeader.js +32 -49
  174. package/components/data/list/components/ListItem.js +153 -146
  175. package/components/data/list/components/ListItemWithTemplate.js +87 -105
  176. package/components/data/list/components/ListItems.js +180 -194
  177. package/components/data/list/components/ListPagination.js +127 -153
  178. package/components/data/list/components/LoadMoreButton.js +25 -33
  179. package/components/data/list/components/NoDataMessage.js +9 -22
  180. package/components/data/list/components/StandardListItems.js +79 -85
  181. package/components/data/list/components/index.js +31 -119
  182. package/components/data/list/components/props.js +0 -5
  183. package/components/data/list/hooks/index.js +22 -75
  184. package/components/data/list/hooks/props.js +0 -5
  185. package/components/data/list/hooks/useCurrentPageItems.js +20 -38
  186. package/components/data/list/hooks/useGroupedData.js +19 -33
  187. package/components/data/list/hooks/useListData.js +17 -47
  188. package/components/data/list/hooks/useListEffects.js +168 -237
  189. package/components/data/list/hooks/useListEventHandlers.js +301 -285
  190. package/components/data/list/hooks/useListPagination.js +90 -136
  191. package/components/data/list/hooks/useListState.js +49 -91
  192. package/components/data/list/hooks/useListStateManager.js +104 -159
  193. package/components/data/list/hooks/usePaginatedGroupedData.js +74 -110
  194. package/components/data/list/index.d.ts +1 -0
  195. package/components/data/list/index.js +579 -621
  196. package/components/data/list/props.d.ts +4 -0
  197. package/components/data/list/props.js +0 -5
  198. package/components/data/list/templates/media-template.js +29 -50
  199. package/components/data/list/utils/constants.js +20 -32
  200. package/components/data/list/utils/list-helpers.d.ts +2 -1
  201. package/components/data/list/utils/list-helpers.js +71 -115
  202. package/components/data/list/utils/list-widget-methods.js +56 -76
  203. package/components/data/list/utils/widget-instance-utils.js +20 -57
  204. package/components/data/live-filter/index.js +219 -271
  205. package/components/data/live-filter/props.js +5 -12
  206. package/components/data/live-form/index.js +68 -91
  207. package/components/data/live-form/props.js +5 -12
  208. package/components/data/pagination/components/BasicPagination.js +124 -104
  209. package/components/data/pagination/components/ClassicPagination.js +167 -190
  210. package/components/data/pagination/components/InlinePagination.js +97 -98
  211. package/components/data/pagination/components/LoadingComponent.js +17 -30
  212. package/components/data/pagination/components/PageSizeSelector.js +176 -169
  213. package/components/data/pagination/components/PagerNavigation.js +84 -105
  214. package/components/data/pagination/components/TotalRecords.js +48 -47
  215. package/components/data/pagination/components/index.js +14 -47
  216. package/components/data/pagination/components/props.js +0 -5
  217. package/components/data/pagination/hooks/index.js +6 -19
  218. package/components/data/pagination/hooks/props.js +0 -5
  219. package/components/data/pagination/hooks/useNavigationSize.js +12 -21
  220. package/components/data/pagination/hooks/usePagination.js +701 -905
  221. package/components/data/pagination/index.js +336 -389
  222. package/components/data/table/components/AddNewRow.js +122 -154
  223. package/components/data/table/components/EditableCell.js +68 -75
  224. package/components/data/table/components/FieldValidationError.js +19 -20
  225. package/components/data/table/components/RowCells.js +97 -80
  226. package/components/data/table/components/RowExpansionButton.js +43 -39
  227. package/components/data/table/components/SummaryCell.js +54 -88
  228. package/components/data/table/components/SummaryRow.js +45 -52
  229. package/components/data/table/components/SummaryRowFooter.js +35 -42
  230. package/components/data/table/components/TableBody.js +222 -218
  231. package/components/data/table/components/TableDataRow.js +113 -106
  232. package/components/data/table/components/TableFilters.js +391 -390
  233. package/components/data/table/components/TableFooterActions.js +25 -32
  234. package/components/data/table/components/TableHeader.js +460 -435
  235. package/components/data/table/components/TablePanelHeading.js +157 -181
  236. package/components/data/table/components/index.js +27 -95
  237. package/components/data/table/hooks/index.js +21 -230
  238. package/components/data/table/hooks/use-edited-rows.js +59 -94
  239. package/components/data/table/hooks/useCellState.js +58 -83
  240. package/components/data/table/hooks/useCustomExpressionColumns.js +65 -86
  241. package/components/data/table/hooks/useDynamicColumns.js +59 -92
  242. package/components/data/table/hooks/useEditingState.js +30 -41
  243. package/components/data/table/hooks/useFormWidget.js +163 -172
  244. package/components/data/table/hooks/usePaginationState.js +67 -77
  245. package/components/data/table/hooks/usePanelStructure.js +47 -41
  246. package/components/data/table/hooks/useResponsiveColumns.js +14 -20
  247. package/components/data/table/hooks/useRowExpansion.js +131 -127
  248. package/components/data/table/hooks/useRowHandlers.js +56 -69
  249. package/components/data/table/hooks/useRowSelection.js +249 -329
  250. package/components/data/table/hooks/useServerSideSorting.js +109 -175
  251. package/components/data/table/hooks/useTableColumns.js +322 -331
  252. package/components/data/table/hooks/useTableData.js +111 -166
  253. package/components/data/table/hooks/useTableEdit.js +526 -564
  254. package/components/data/table/hooks/useTableEffects.js +60 -107
  255. package/components/data/table/hooks/useTableFilter.js +244 -237
  256. package/components/data/table/hooks/useTableInitialization.js +44 -76
  257. package/components/data/table/hooks/useTableState.js +39 -61
  258. package/components/data/table/hooks/useTableStateManager.js +295 -468
  259. package/components/data/table/index.js +1556 -1713
  260. package/components/data/table/live-table/index.js +157 -219
  261. package/components/data/table/props.js +0 -5
  262. package/components/data/table/table-action/index.js +97 -75
  263. package/components/data/table/table-column/index.js +48 -42
  264. package/components/data/table/table-group/index.js +7 -25
  265. package/components/data/table/table-row/index.js +63 -55
  266. package/components/data/table/table-row-action/index.js +102 -77
  267. package/components/data/table/utils/buildSelectionColumns.js +86 -137
  268. package/components/data/table/utils/columnBuilder.d.ts +1 -1
  269. package/components/data/table/utils/columnBuilder.js +121 -160
  270. package/components/data/table/utils/columnProxy.js +48 -66
  271. package/components/data/table/utils/columnWidthDistribution.js +40 -64
  272. package/components/data/table/utils/constants.js +92 -40
  273. package/components/data/table/utils/crud-handlers.js +292 -473
  274. package/components/data/table/utils/dynamic-columns.js +99 -144
  275. package/components/data/table/utils/groupHeaderUtils.js +36 -61
  276. package/components/data/table/utils/index.d.ts +17 -13
  277. package/components/data/table/utils/index.js +483 -639
  278. package/components/data/table/utils/renderDisplayCell.js +127 -169
  279. package/components/data/table/utils/script-page-size-broadcast.js +17 -29
  280. package/components/data/table/utils/selectionUtils.js +59 -113
  281. package/components/data/table/utils/table-helpers.js +38 -74
  282. package/components/data/table/utils/validation.js +35 -78
  283. package/components/data/table/utils/widgetMapping.d.ts +5 -0
  284. package/components/data/table/utils/widgetMapping.js +41 -0
  285. package/components/data/types.js +112 -112
  286. package/components/data/utils/field-data-utils.js +38 -42
  287. package/components/data/utils/filter-field-util.js +42 -44
  288. package/components/data/utils/index.js +112 -111
  289. package/components/dialogs/alert-dialog/index.js +83 -78
  290. package/components/dialogs/alert-dialog/props.js +0 -5
  291. package/components/dialogs/confirm-dialog/index.js +102 -92
  292. package/components/dialogs/confirm-dialog/props.js +0 -5
  293. package/components/dialogs/dialog/index.js +93 -69
  294. package/components/dialogs/dialog/props.js +0 -5
  295. package/components/dialogs/dialog-actions/index.js +12 -26
  296. package/components/dialogs/dialog-actions/props.js +0 -5
  297. package/components/dialogs/dialog-body/index.js +13 -30
  298. package/components/dialogs/dialog-body/props.js +0 -5
  299. package/components/dialogs/dialog-content/index.js +48 -41
  300. package/components/dialogs/dialog-content/props.js +0 -5
  301. package/components/dialogs/dialog-header/index.js +88 -101
  302. package/components/dialogs/dialog-header/props.js +0 -5
  303. package/components/dialogs/iframe-dialog/index.js +136 -128
  304. package/components/dialogs/iframe-dialog/props.js +0 -5
  305. package/components/dialogs/index.js +104 -101
  306. package/components/dialogs/login-dialog/index.js +285 -347
  307. package/components/dialogs/login-dialog/props.js +0 -5
  308. package/components/dialogs/page-dialog/index.js +95 -86
  309. package/components/dialogs/page-dialog/props.js +0 -5
  310. package/components/dialogs/props.js +0 -5
  311. package/components/dialogs/withDialogWrapper.js +110 -83
  312. package/components/form/button/index.js +296 -245
  313. package/components/form/button/props.js +0 -5
  314. package/components/form/button-group/index.js +80 -69
  315. package/components/form/button-group/props.js +0 -5
  316. package/components/input/calendar/index.js +409 -362
  317. package/components/input/calendar/props.js +0 -5
  318. package/components/input/calendar/utils.js +164 -172
  319. package/components/input/chips/SortableChip/index.js +109 -100
  320. package/components/input/chips/SortableChip/props.js +0 -5
  321. package/components/input/chips/index.js +663 -570
  322. package/components/input/chips/props.js +0 -5
  323. package/components/input/chips/utils.js +131 -122
  324. package/components/input/color-picker/index.js +536 -594
  325. package/components/input/color-picker/props.js +0 -5
  326. package/components/input/composite/index.js +71 -110
  327. package/components/input/composite/props.js +0 -5
  328. package/components/input/currency/index.js +277 -224
  329. package/components/input/currency/props.js +0 -5
  330. package/components/input/default/checkbox/index.js +329 -250
  331. package/components/input/default/checkbox/props.js +0 -5
  332. package/components/input/default/checkboxset/index.d.ts +2 -0
  333. package/components/input/default/checkboxset/index.js +529 -446
  334. package/components/input/default/checkboxset/props.d.ts +4 -0
  335. package/components/input/default/checkboxset/props.js +0 -5
  336. package/components/input/default/checkboxset/utils.js +15 -25
  337. package/components/input/default/radioset/index.d.ts +2 -0
  338. package/components/input/default/radioset/index.js +409 -350
  339. package/components/input/default/radioset/props.d.ts +6 -0
  340. package/components/input/default/radioset/props.js +0 -5
  341. package/components/input/default/switch/index.js +494 -458
  342. package/components/input/default/switch/prop.js +0 -5
  343. package/components/input/epoch/date/components/DatePickerPopover.js +242 -193
  344. package/components/input/epoch/date/index.js +638 -518
  345. package/components/input/epoch/date/props.js +0 -5
  346. package/components/input/epoch/date/styled.js +61 -70
  347. package/components/input/epoch/date/utils.js +67 -115
  348. package/components/input/epoch/datetime/index.js +758 -695
  349. package/components/input/epoch/datetime/props.js +0 -5
  350. package/components/input/epoch/datetime/utils.js +121 -186
  351. package/components/input/epoch/time/index.js +441 -415
  352. package/components/input/epoch/time/props.js +0 -5
  353. package/components/input/epoch/time/utils.js +101 -112
  354. package/components/input/fileupload/Utils.js +70 -97
  355. package/components/input/fileupload/components/ListItems.js +132 -130
  356. package/components/input/fileupload/components/MultiUpload.js +80 -77
  357. package/components/input/fileupload/components/SingleUpload.js +57 -57
  358. package/components/input/fileupload/index.js +253 -178
  359. package/components/input/fileupload/props.js +0 -5
  360. package/components/input/fileupload/useFileUpload.js +209 -258
  361. package/components/input/number/index.js +434 -393
  362. package/components/input/number/props.js +0 -5
  363. package/components/input/rating/index.js +401 -394
  364. package/components/input/rating/props.js +0 -5
  365. package/components/input/select/index.js +408 -463
  366. package/components/input/select/props.js +0 -5
  367. package/components/input/slider/index.js +339 -332
  368. package/components/input/slider/props.js +0 -5
  369. package/components/input/text/index.d.ts +3 -3
  370. package/components/input/text/index.js +438 -475
  371. package/components/input/text/props.d.ts +1 -1
  372. package/components/input/text/props.js +0 -5
  373. package/components/input/text/util.js +82 -222
  374. package/components/input/textarea/index.js +322 -358
  375. package/components/input/textarea/props.js +0 -5
  376. package/components/input/upload/index.js +135 -131
  377. package/components/input/upload/props.js +0 -5
  378. package/components/input/util/index.js +9 -11
  379. package/components/layout/footer/index.js +12 -35
  380. package/components/layout/footer/props.js +0 -5
  381. package/components/layout/header/index.js +12 -38
  382. package/components/layout/header/props.js +0 -5
  383. package/components/layout/leftnav/index.js +57 -44
  384. package/components/layout/leftnav/props.d.ts +9 -0
  385. package/components/layout/leftnav/props.js +0 -5
  386. package/components/layout/leftnav/utils/page-class-util.d.ts +9 -0
  387. package/components/layout/leftnav/utils/page-class-util.js +28 -0
  388. package/components/layout/rightnav/index.js +12 -36
  389. package/components/layout/rightnav/props.js +0 -5
  390. package/components/layout/topnav/index.js +24 -38
  391. package/components/layout/topnav/props.js +0 -5
  392. package/components/navbar/index.js +119 -98
  393. package/components/navbar/nav/index.js +236 -232
  394. package/components/navbar/nav/props.js +0 -5
  395. package/components/navbar/nav-item/index.js +74 -65
  396. package/components/navbar/nav-item/props.js +0 -5
  397. package/components/navigation/breadcrumb/index.js +38 -61
  398. package/components/navigation/breadcrumb/props.js +0 -5
  399. package/components/navigation/menu/components/ListItems.js +76 -67
  400. package/components/navigation/menu/constants.js +27 -42
  401. package/components/navigation/menu/hooks/useHoverState.hook.js +20 -47
  402. package/components/navigation/menu/hooks/useKeyboardMovements.hook.js +34 -28
  403. package/components/navigation/menu/hooks/useTransformedDataset.hook.js +21 -14
  404. package/components/navigation/menu/index.js +911 -846
  405. package/components/navigation/menu/props.js +0 -5
  406. package/components/navigation/menu/utils/action-task.js +6 -9
  407. package/components/navigation/menu/utils/role-filter.js +41 -56
  408. package/components/navigation/popover/index.js +192 -205
  409. package/components/navigation/popover/props.js +5 -8
  410. package/components/page/content/index.js +9 -31
  411. package/components/page/content/props.js +0 -5
  412. package/components/page/error-boundary/index.js +115 -105
  413. package/components/page/error-boundary/props.js +0 -5
  414. package/components/page/index.js +100 -102
  415. package/components/page/page-content/index.js +21 -30
  416. package/components/page/page-content/props.js +0 -5
  417. package/components/page/page-context.d.ts +4 -0
  418. package/components/page/page-context.js +5 -0
  419. package/components/page/partial/index.js +50 -45
  420. package/components/page/partial/props.js +0 -5
  421. package/components/page/partial-container/index.js +78 -107
  422. package/components/page/partial-container/props.d.ts +1 -1
  423. package/components/page/partial-container/props.js +0 -5
  424. package/components/page/props.js +0 -5
  425. package/components/page/toast-container/index.js +20 -41
  426. package/components/page/toast-container/props.js +0 -5
  427. package/components/prefab/container/index.js +60 -53
  428. package/components/prefab/container/props.js +0 -5
  429. package/components/prefab/index.js +76 -61
  430. package/components/prefab/props.js +0 -5
  431. package/context/AppContext.d.ts +1 -1
  432. package/context/AppContext.js +17 -18
  433. package/context/AppSpinnerProvider.js +19 -34
  434. package/context/LayoutProvider.js +54 -57
  435. package/context/LocalizationProvider.js +34 -49
  436. package/context/PrefabContext.js +68 -119
  437. package/context/WidgetProvider.js +160 -166
  438. package/core/app-config.js +0 -1
  439. package/core/app.service.js +200 -327
  440. package/core/appVariablesStore.js +10 -15
  441. package/core/appstore.js +37 -53
  442. package/core/constants/currency-constant.js +81 -83
  443. package/core/constants/events.js +34 -44
  444. package/core/constants/index.js +21 -31
  445. package/core/dialog.service.js +52 -72
  446. package/core/event-notifier.js +94 -131
  447. package/core/formatter/array-formatters.js +18 -32
  448. package/core/formatter/date-formatters.js +140 -204
  449. package/core/formatter/index.js +64 -117
  450. package/core/formatter/number-formatters.js +115 -159
  451. package/core/formatter/security-formatters.js +233 -283
  452. package/core/formatter/string-formatters.js +23 -45
  453. package/core/formatter/types.js +12 -18
  454. package/core/formatters.js +6 -24
  455. package/core/proxy-service.js +242 -306
  456. package/core/script-registry.js +87 -134
  457. package/core/security.service.js +8 -11
  458. package/core/util/compare.js +13 -25
  459. package/core/util/dom.js +32 -63
  460. package/core/util/index.js +92 -98
  461. package/core/util/safe-is-equal.js +42 -94
  462. package/core/util/security.js +114 -153
  463. package/core/util/utils.d.ts +4 -1
  464. package/core/util/utils.js +88 -159
  465. package/core/widget-observer.js +34 -61
  466. package/higherOrder/BaseApp.js +328 -502
  467. package/higherOrder/BaseAppProps.d.ts +1 -0
  468. package/higherOrder/BaseAppProps.js +0 -5
  469. package/higherOrder/BaseDateTime.js +277 -231
  470. package/higherOrder/BasePage.js +474 -740
  471. package/higherOrder/BasePartial.js +87 -114
  472. package/higherOrder/BasePrefab.js +190 -206
  473. package/higherOrder/DataNav.js +287 -302
  474. package/higherOrder/helper.js +62 -48
  475. package/higherOrder/props.js +0 -5
  476. package/higherOrder/withBaseWrapper.js +123 -168
  477. package/higherOrder/withStandalone.js +28 -26
  478. package/hooks/useAccess.js +113 -289
  479. package/hooks/useAppConfig.js +15 -40
  480. package/hooks/useAuth.js +256 -495
  481. package/hooks/useDataSourceSubscription.d.ts +3 -3
  482. package/hooks/useDataSourceSubscription.js +99 -109
  483. package/hooks/useDebounce.js +28 -56
  484. package/hooks/useDeviceVisibility.js +14 -23
  485. package/hooks/useHttp.d.ts +1 -0
  486. package/hooks/useHttp.js +314 -493
  487. package/libs/index.js +4 -13
  488. package/libs/prefab/index.js +6 -20
  489. package/mui-config/theme-provider.js +9 -17
  490. package/mui-config/theme.js +6 -9
  491. package/package-lock.json +816 -3207
  492. package/package.json +3 -19
  493. package/providers/AppProviders.js +21 -24
  494. package/runtime-dynamic/App.js +65 -93
  495. package/runtime-dynamic/app-initializer.js +193 -411
  496. package/runtime-dynamic/components/ErrorBoundary.js +59 -76
  497. package/runtime-dynamic/components/PageWrapper.js +23 -35
  498. package/runtime-dynamic/components/PrefabPreview.js +40 -69
  499. package/runtime-dynamic/components/partial-content.d.ts +2 -3
  500. package/runtime-dynamic/components/partial-content.js +66 -45
  501. package/runtime-dynamic/components/prefab-content.js +37 -30
  502. package/runtime-dynamic/components/use-dynamic-component.js +55 -157
  503. package/runtime-dynamic/factories/build-base-page-like-component.d.ts +1 -1
  504. package/runtime-dynamic/factories/build-base-page-like-component.js +44 -58
  505. package/runtime-dynamic/factories/dynamic-component.d.ts +9 -0
  506. package/runtime-dynamic/factories/dynamic-component.js +91 -0
  507. package/runtime-dynamic/factories/prefab-factory.d.ts +1 -1
  508. package/runtime-dynamic/factories/prefab-factory.js +60 -81
  509. package/runtime-dynamic/factories/startup-info.js +12 -25
  510. package/runtime-dynamic/factories/utils.d.ts +2 -10
  511. package/runtime-dynamic/factories/utils.js +47 -129
  512. package/runtime-dynamic/index.js +56 -191
  513. package/runtime-dynamic/main.js +42 -70
  514. package/runtime-dynamic/preview-mode.js +14 -29
  515. package/runtime-dynamic/preview-navigation.js +21 -30
  516. package/runtime-dynamic/preview-path.d.ts +5 -0
  517. package/runtime-dynamic/preview-path.js +13 -0
  518. package/runtime-dynamic/preview-resource-base.js +15 -31
  519. package/runtime-dynamic/registry/component-registry.js +269 -334
  520. package/runtime-dynamic/registry/custom-widget-registry.js +11 -15
  521. package/runtime-dynamic/registry/index.js +24 -63
  522. package/runtime-dynamic/registry/store.d.ts +1 -0
  523. package/runtime-dynamic/registry/store.js +18 -23
  524. package/runtime-dynamic/routes.js +53 -81
  525. package/runtime-dynamic/services/app-extension-provider.js +17 -44
  526. package/runtime-dynamic/services/autolayout-inject.d.ts +4 -0
  527. package/runtime-dynamic/services/autolayout-inject.js +27 -0
  528. package/runtime-dynamic/services/compile-render.d.ts +9 -0
  529. package/runtime-dynamic/services/compile-render.js +142 -0
  530. package/runtime-dynamic/services/component-ref-provider.d.ts +18 -3
  531. package/runtime-dynamic/services/component-ref-provider.js +52 -129
  532. package/runtime-dynamic/services/css-scoping.js +23 -28
  533. package/runtime-dynamic/services/fragment-url.js +37 -50
  534. package/runtime-dynamic/services/index.d.ts +2 -3
  535. package/runtime-dynamic/services/index.js +31 -152
  536. package/runtime-dynamic/services/markup-transpiler.d.ts +2 -2
  537. package/runtime-dynamic/services/markup-transpiler.js +39 -231
  538. package/runtime-dynamic/services/prefab-resources.js +40 -118
  539. package/runtime-dynamic/services/resource-manager.d.ts +2 -2
  540. package/runtime-dynamic/services/resource-manager.js +24 -65
  541. package/runtime-dynamic/services/script-executor.js +46 -63
  542. package/runtime-dynamic/services/variable-factory.js +141 -184
  543. package/runtime-dynamic/services/variable-registry.js +65 -115
  544. package/runtime-dynamic/services/variable-transpiler.js +73 -103
  545. package/runtime-dynamic/shims/next-image.js +79 -50
  546. package/runtime-dynamic/shims/next-link.js +58 -32
  547. package/runtime-dynamic/shims/next-navigation.js +17 -34
  548. package/runtime-dynamic/utils/index.js +15 -30
  549. package/store/bindActions/i18nActions.js +16 -18
  550. package/store/index.js +29 -35
  551. package/store/middleware/navigationMiddleware.js +25 -45
  552. package/store/middleware/pendingTabNavigationIntentMiddleware.js +20 -25
  553. package/store/slices/appConfigSlice.js +65 -94
  554. package/store/slices/authSlice.js +317 -471
  555. package/store/slices/i18nSlice.js +169 -168
  556. package/store/slices/navigationSlice.js +22 -20
  557. package/store/util/resolve-path.d.ts +1 -0
  558. package/store/util/resolve-path.js +7 -0
  559. package/store/viewport.service.js +150 -194
  560. package/types/index.js +10 -15
  561. package/utils/attr.js +191 -41
  562. package/utils/custom-expression/index.js +58 -151
  563. package/utils/custom-expression/parser.js +108 -182
  564. package/utils/dataset-util.js +113 -154
  565. package/utils/eval-expression.js +10 -19
  566. package/utils/form-state.util.js +60 -118
  567. package/utils/form-utils.js +49 -190
  568. package/utils/format-util.js +113 -184
  569. package/utils/layoutsize-util.js +11 -17
  570. package/utils/lib-error-skipper.js +54 -52
  571. package/utils/page-params-util.js +50 -40
  572. package/utils/pending-tab-navigation-intent.js +7 -17
  573. package/utils/resource-url.js +8 -19
  574. package/utils/state-persistance.d.ts +1 -1
  575. package/utils/state-persistance.js +136 -253
  576. package/utils/style-utils.js +24 -78
  577. package/utils/transformedDataset-utils.js +353 -381
  578. package/utils/widget-cleanup-util.js +42 -74
  579. package/utils/widgets.js +19 -31
  580. package/variables/base-variable.js +117 -166
  581. package/variables/constants.js +5 -8
  582. package/variables/crud-variable.js +150 -181
  583. package/variables/live-variable.d.ts +1 -1
  584. package/variables/live-variable.js +140 -174
  585. package/variables/metadata.service.js +74 -116
  586. package/variables/model-variable.js +68 -78
  587. package/variables/service-variable.js +171 -285
  588. package/wm-namespace.js +11 -14
  589. package/components/chart/src/css.d.js +0 -1
  590. package/runtime-dynamic/services/cache.d.ts +0 -29
  591. package/runtime-dynamic/services/cache.js +0 -57
  592. package/tsconfig.declaration.tsbuildinfo +0 -1
  593. 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
+ };