@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,30 +1,32 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.usePagination = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
- var _react = require("react");
11
- var _lodash = require("lodash");
12
- var _utils = require("../../table/utils");
13
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
- // Utility function to check if the datasource has paging capability
16
- var isDataSourceHasPaging = function isDataSourceHasPaging(datasource) {
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import { useState, useCallback, useEffect, useRef, useMemo } from "react";
21
+ import { isArray, isEmpty, isNull } from "lodash-es";
22
+ import { addUniqueRowIds, extractDataArray } from "../../table/utils";
23
+ const isDataSourceHasPaging = (datasource) => {
17
24
  return datasource && typeof datasource.execute === "function" && datasource.execute("IS_PAGEABLE");
18
25
  };
19
-
20
- // Utility function to calculate paging values
21
- var calculatePagingValues = function calculatePagingValues(dataSize, maxResults) {
26
+ const calculatePagingValues = (dataSize, maxResults) => {
22
27
  return dataSize > maxResults ? Math.ceil(dataSize / maxResults) : dataSize < 0 ? 0 : 1;
23
28
  };
24
-
25
- // Utility function to create a dummy synthetic event when no event is available
26
- var createDummyEvent = function createDummyEvent() {
27
- var eventName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "synthetic";
29
+ const createDummyEvent = (eventName = "synthetic") => {
28
30
  return {
29
31
  bubbles: false,
30
32
  cancelable: false,
@@ -37,451 +39,360 @@ var createDummyEvent = function createDummyEvent() {
37
39
  timeStamp: Date.now(),
38
40
  type: eventName,
39
41
  // Dynamic type based on the event being triggered
40
- isDefaultPrevented: function isDefaultPrevented() {
41
- return false;
42
+ isDefaultPrevented: () => false,
43
+ isPropagationStopped: () => false,
44
+ persist: () => {
42
45
  },
43
- isPropagationStopped: function isPropagationStopped() {
44
- return false;
46
+ preventDefault: () => {
45
47
  },
46
- persist: function persist() {},
47
- preventDefault: function preventDefault() {},
48
- stopPropagation: function stopPropagation() {}
48
+ stopPropagation: () => {
49
+ }
49
50
  };
50
51
  };
51
- var usePagination = exports.usePagination = function usePagination(_ref) {
52
- var _listener$Widgets;
53
- var dataset = _ref.dataset,
54
- _ref$maxResults = _ref.maxResults,
55
- maxResults = _ref$maxResults === void 0 ? 10 : _ref$maxResults,
56
- initialPage = _ref.currentPage,
57
- navigation = _ref.navigation,
58
- name = _ref.name,
59
- listener = _ref.listener,
60
- onPaginationChange = _ref.onPaginationChange,
61
- onSetRecord = _ref.onSetRecord,
62
- onPageSizeChange = _ref.onPageSizeChange,
63
- paginationMeta = _ref.paginationMeta,
64
- totalItems = _ref.totalItems,
65
- datasource = _ref.datasource,
66
- setIsLoadingMore = _ref.setIsLoadingMore,
67
- _ref$isServerSidePagi = _ref.isServerSidePagination,
68
- isServerSidePagination = _ref$isServerSidePagi === void 0 ? false : _ref$isServerSidePagi,
69
- listDirection = _ref.listDirection,
70
- scrollContainerRef = _ref.scrollContainerRef,
71
- sentinelRefProp = _ref.sentinelRef,
72
- datasourceInvokeOptions = _ref.datasourceInvokeOptions;
73
- // Extract onPageSizeChange from listener if not provided directly
74
- var pageSizeChangeHandler = onPageSizeChange || (listener === null || listener === void 0 ? void 0 : listener.onPageSizeChange);
75
- var widgetInstance = listener === null || listener === void 0 || (_listener$Widgets = listener.Widgets) === null || _listener$Widgets === void 0 ? void 0 : _listener$Widgets[name];
76
- // Consolidated pagination state
77
- var _useState = (0, _react.useState)({
78
- currentPage: initialPage || 1,
79
- pageCount: 0,
80
- dataSize: 0,
81
- currentMaxResults: (paginationMeta === null || paginationMeta === void 0 ? void 0 : paginationMeta.size) || maxResults,
82
- error: null
83
- }),
84
- paginationState = _useState[0],
85
- setPaginationState = _useState[1];
86
-
87
- // Data state
88
- var _useState2 = (0, _react.useState)({
89
- fullData: [],
90
- result: []
91
- }),
92
- dataState = _useState2[0],
93
- setDataState = _useState2[1];
94
-
95
- // Accumulated data state - used for both Scroll and On-Demand navigation
96
- // Both modes need to accumulate data as user loads more pages
97
- var _useState3 = (0, _react.useState)({
98
- accumulatedData: [],
99
- lastLoadedPage: 0,
100
- isAccumulating: navigation === "Scroll" || navigation === "On-Demand",
101
- isInitialized: false
102
- }),
103
- accumulatingState = _useState3[0],
104
- setAccumulatingState = _useState3[1];
105
-
106
- // Navigation disable states - consolidated for better performance
107
- var _useState4 = (0, _react.useState)({
108
- isDisableNext: true,
109
- isDisablePrevious: true,
110
- isDisableFirst: true,
111
- isDisableLast: true,
112
- isDisableCurrent: false,
113
- isDisableCount: false
114
- }),
115
- disableStates = _useState4[0],
116
- setDisableStates = _useState4[1];
117
- var isFetchingRef = (0, _react.useRef)(false);
118
- var isResettingRef = (0, _react.useRef)(false); // Track if we're currently resetting accumulated data
119
-
120
- // Refs for accumulated data (Scroll and On-Demand)
121
- var observerRef = (0, _react.useRef)(null);
122
- var internalSentinelRef = (0, _react.useRef)(null);
123
- var sentinelRef = sentinelRefProp !== undefined ? sentinelRefProp : internalSentinelRef;
124
- var accumulatingStateRef = (0, _react.useRef)(accumulatingState);
125
- var sentinelHasLeftViewportRef = (0, _react.useRef)(true); // Track if sentinel has left viewport after View Less
126
-
127
- // Keep ref in sync with state
128
- (0, _react.useEffect)(function () {
52
+ const usePagination = ({
53
+ dataset,
54
+ maxResults = 10,
55
+ currentPage: initialPage,
56
+ navigation,
57
+ name,
58
+ listener,
59
+ onPaginationChange,
60
+ onSetRecord,
61
+ onPageSizeChange,
62
+ paginationMeta,
63
+ totalItems,
64
+ datasource,
65
+ setIsLoadingMore,
66
+ isServerSidePagination = false,
67
+ listDirection,
68
+ scrollContainerRef,
69
+ sentinelRef: sentinelRefProp,
70
+ datasourceInvokeOptions
71
+ }) => {
72
+ var _a;
73
+ const pageSizeChangeHandler = onPageSizeChange || (listener == null ? void 0 : listener.onPageSizeChange);
74
+ const widgetInstance = (_a = listener == null ? void 0 : listener.Widgets) == null ? void 0 : _a[name];
75
+ const [paginationState, setPaginationState] = useState({
76
+ currentPage: initialPage || 1,
77
+ pageCount: 0,
78
+ dataSize: 0,
79
+ currentMaxResults: (paginationMeta == null ? void 0 : paginationMeta.size) || maxResults,
80
+ error: null
81
+ });
82
+ const [dataState, setDataState] = useState({
83
+ fullData: [],
84
+ result: []
85
+ });
86
+ const [accumulatingState, setAccumulatingState] = useState({
87
+ accumulatedData: [],
88
+ lastLoadedPage: 0,
89
+ isAccumulating: navigation === "Scroll" || navigation === "On-Demand",
90
+ isInitialized: false
91
+ });
92
+ const [disableStates, setDisableStates] = useState({
93
+ isDisableNext: true,
94
+ isDisablePrevious: true,
95
+ isDisableFirst: true,
96
+ isDisableLast: true,
97
+ isDisableCurrent: false,
98
+ isDisableCount: false
99
+ });
100
+ const isFetchingRef = useRef(false);
101
+ const isResettingRef = useRef(false);
102
+ const observerRef = useRef(null);
103
+ const internalSentinelRef = useRef(null);
104
+ const sentinelRef = sentinelRefProp !== void 0 ? sentinelRefProp : internalSentinelRef;
105
+ const accumulatingStateRef = useRef(accumulatingState);
106
+ const sentinelHasLeftViewportRef = useRef(true);
107
+ useEffect(() => {
129
108
  accumulatingStateRef.current = accumulatingState;
130
109
  }, [accumulatingState]);
131
-
132
- // Memoized computed values for better performance
133
- var isFirstPage = (0, _react.useMemo)(function () {
134
- // First check pagination metadata if available
135
- if (paginationMeta && paginationMeta.first !== undefined) {
110
+ const isFirstPage = useMemo(() => {
111
+ if (paginationMeta && paginationMeta.first !== void 0) {
136
112
  return paginationMeta.first;
137
113
  }
138
- // Fall back to calculation
139
114
  return paginationState.currentPage === 1 || !paginationState.currentPage;
140
115
  }, [paginationState.currentPage, paginationMeta]);
141
- var isLastPage = (0, _react.useMemo)(function () {
142
- // First check pagination metadata if available
143
- if (paginationMeta && paginationMeta.last !== undefined) {
116
+ const isLastPage = useMemo(() => {
117
+ if (paginationMeta && paginationMeta.last !== void 0) {
144
118
  return paginationMeta.last;
145
119
  }
146
- // Fall back to calculation
147
120
  return paginationState.currentPage === paginationState.pageCount;
148
121
  }, [paginationState.currentPage, paginationState.pageCount, paginationMeta]);
149
-
150
- // Navigation controls
151
- var allowedNavControls = ["Basic", "Classic", "Pager", "Scroll", "On-Demand"];
152
- var getValidNavControl = function getValidNavControl(nav) {
122
+ const allowedNavControls = ["Basic", "Classic", "Pager", "Scroll", "On-Demand"];
123
+ const getValidNavControl = (nav) => {
153
124
  return allowedNavControls.includes(nav) ? nav : "Basic";
154
125
  };
155
- var _useState5 = (0, _react.useState)(getValidNavControl(navigation)),
156
- navcontrols = _useState5[0],
157
- setNavcontrols = _useState5[1];
158
-
159
- // Function to invoke datasource for API-based pagination
160
- var datasourceInvoke = (0, _react.useCallback)(function (page, size) {
161
- var isScrollMode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
162
- // Only invoke datasource if server-side pagination is enabled
163
- if (isServerSidePagination && datasource && typeof datasource.invoke === "function") {
164
- // Prevent concurrent requests
165
- if (isFetchingRef.current) {
166
- return Promise.resolve();
167
- }
168
- isFetchingRef.current = true;
169
- setPaginationState(function (prev) {
170
- return _objectSpread(_objectSpread({}, prev), {}, {
171
- error: null
172
- });
173
- });
174
- try {
175
- // Prepare invoke options with page and optionally size
176
- var invokeOptions = {
177
- page: page
178
- };
179
- if (size !== undefined) {
180
- invokeOptions.size = size;
181
- }
182
-
183
- // Include additional invoke options if provided (for table sorting/filtering)
184
- if (datasourceInvokeOptions) {
185
- // Merge the additional options with page/size
186
- Object.assign(invokeOptions, datasourceInvokeOptions);
126
+ const [navcontrols, setNavcontrols] = useState(getValidNavControl(navigation));
127
+ const getPaginationStartIndex = () => {
128
+ var _a2, _b;
129
+ const startIndex = (_a2 = datasource == null ? void 0 : datasource._paginationConfig) == null ? void 0 : _a2.paginationStartIndex;
130
+ return startIndex !== void 0 && ((_b = datasource._paginationConfig) == null ? void 0 : _b.type) === "page" ? Number(startIndex) : 1;
131
+ };
132
+ const datasourceInvoke = useCallback(
133
+ (page, size, isScrollMode = false) => {
134
+ if (isServerSidePagination && datasource && typeof datasource.invoke === "function") {
135
+ if (isFetchingRef.current) {
136
+ return Promise.resolve();
187
137
  }
188
-
189
- // Wrap the result in Promise.resolve to handle cases where invoke doesn't return a Promise
190
- var result = datasource.invoke(invokeOptions);
191
- return Promise.resolve(result).then(function (response) {
192
- isFetchingRef.current = false;
193
-
194
- // For accumulating mode (Scroll/On-Demand), we need to accumulate data instead of replacing
195
- if (isScrollMode && response && response.data) {
196
- // Get the new accumulated data using ref to avoid circular dependency
197
- var currentAccumulatedData = accumulatingStateRef.current.accumulatedData;
198
-
199
- // Ensure unique row IDs using the existing utility
200
- var newDataWithIds = (0, _utils.addUniqueRowIds)(response.data);
201
- var newAccumulatedData = [].concat((0, _toConsumableArray2["default"])(currentAccumulatedData), (0, _toConsumableArray2["default"])(newDataWithIds));
202
- setAccumulatingState(function (prev) {
203
- return _objectSpread(_objectSpread({}, prev), {}, {
138
+ isFetchingRef.current = true;
139
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { error: null }));
140
+ try {
141
+ const invokeOptions = { page };
142
+ if (size !== void 0) {
143
+ invokeOptions.size = size;
144
+ }
145
+ if (datasourceInvokeOptions) {
146
+ Object.assign(invokeOptions, datasourceInvokeOptions);
147
+ }
148
+ invokeOptions.page = page - 1 + getPaginationStartIndex();
149
+ const result = datasource.invoke(invokeOptions);
150
+ return Promise.resolve(result).then((response) => {
151
+ isFetchingRef.current = false;
152
+ if (isScrollMode && response && response.data) {
153
+ const currentAccumulatedData = accumulatingStateRef.current.accumulatedData;
154
+ const newDataWithIds = addUniqueRowIds(response.data);
155
+ const newAccumulatedData = [...currentAccumulatedData, ...newDataWithIds];
156
+ setAccumulatingState((prev) => __spreadProps(__spreadValues({}, prev), {
204
157
  accumulatedData: newAccumulatedData,
205
158
  lastLoadedPage: page
206
- });
207
- });
208
-
209
- // Immediately update the data state with accumulated data
210
- setDataState(function (prev) {
211
- return _objectSpread(_objectSpread({}, prev), {}, {
159
+ }));
160
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
212
161
  fullData: newAccumulatedData,
213
162
  result: newAccumulatedData
214
- });
215
- });
216
- }
217
- return response;
218
- })["catch"](function (error) {
219
- isFetchingRef.current = false;
220
- console.error("Error fetching page data:", error);
221
- setPaginationState(function (prev) {
222
- return _objectSpread(_objectSpread({}, prev), {}, {
163
+ }));
164
+ }
165
+ return response;
166
+ }).catch((error) => {
167
+ isFetchingRef.current = false;
168
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), {
223
169
  error: error.message || "Failed to fetch page data"
224
- });
170
+ }));
171
+ return Promise.reject(error);
225
172
  });
226
- return Promise.reject(error);
227
- });
228
- } catch (error) {
229
- isFetchingRef.current = false;
230
- console.error("Error invoking datasource:", error);
231
- setPaginationState(function (prev) {
232
- return _objectSpread(_objectSpread({}, prev), {}, {
173
+ } catch (error) {
174
+ isFetchingRef.current = false;
175
+ console.error("Error invoking datasource:", error);
176
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), {
233
177
  error: error.message || "Failed to invoke datasource"
234
- });
235
- });
236
- return Promise.reject(error);
178
+ }));
179
+ return Promise.reject(error);
180
+ }
237
181
  }
238
- }
239
- return Promise.resolve();
240
- }, [datasource, isServerSidePagination, datasourceInvokeOptions]);
241
-
242
- // Function to load more data for Scroll and On-Demand navigation
243
- var loadMoreData = (0, _react.useCallback)(function (event) {
244
- // Support both Scroll and On-Demand navigation
245
- var isAccumulatingMode = navigation === "Scroll" || navigation === "On-Demand";
246
- if (!isAccumulatingMode || isLastPage || isFetchingRef.current) {
247
- return;
248
- }
249
-
250
- // For client-side pagination (non-server), just show more items
251
- if (!isServerSidePagination) {
252
- var currentVisible = accumulatingStateRef.current.accumulatedData.length;
253
- var totalAvailable = dataState.fullData.length;
254
- var nextBatchSize = paginationState.currentMaxResults;
255
- var newVisibleCount = Math.min(currentVisible + nextBatchSize, totalAvailable);
256
-
257
- // Get next batch of data
258
- var nextBatch = dataState.fullData.slice(currentVisible, newVisibleCount);
259
- var newAccumulatedData = [].concat((0, _toConsumableArray2["default"])(accumulatingStateRef.current.accumulatedData), (0, _toConsumableArray2["default"])(nextBatch));
260
- setAccumulatingState(function (prev) {
261
- return _objectSpread(_objectSpread({}, prev), {}, {
182
+ return Promise.resolve();
183
+ },
184
+ [datasource, isServerSidePagination, datasourceInvokeOptions]
185
+ );
186
+ const loadMoreData = useCallback(
187
+ (event) => {
188
+ const isAccumulatingMode = navigation === "Scroll" || navigation === "On-Demand";
189
+ if (!isAccumulatingMode || isLastPage || isFetchingRef.current) {
190
+ return;
191
+ }
192
+ if (!isServerSidePagination) {
193
+ const currentVisible = accumulatingStateRef.current.accumulatedData.length;
194
+ const totalAvailable = dataState.fullData.length;
195
+ const nextBatchSize = paginationState.currentMaxResults;
196
+ const newVisibleCount = Math.min(currentVisible + nextBatchSize, totalAvailable);
197
+ const nextBatch = dataState.fullData.slice(currentVisible, newVisibleCount);
198
+ const newAccumulatedData = [...accumulatingStateRef.current.accumulatedData, ...nextBatch];
199
+ setAccumulatingState((prev) => __spreadProps(__spreadValues({}, prev), {
262
200
  accumulatedData: newAccumulatedData,
263
201
  lastLoadedPage: prev.lastLoadedPage + 1
264
- });
265
- });
266
-
267
- // Update the result to show accumulated data
268
- setDataState(function (prev) {
269
- return _objectSpread(_objectSpread({}, prev), {}, {
202
+ }));
203
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
270
204
  result: newAccumulatedData
271
- });
272
- });
273
-
274
- // Update current page
275
- var _nextPage = accumulatingStateRef.current.lastLoadedPage + 1;
276
- setPaginationState(function (prev) {
277
- return _objectSpread(_objectSpread({}, prev), {}, {
278
- currentPage: _nextPage
279
- });
280
- });
281
- if (onPaginationChange) {
282
- onPaginationChange(event || createDummyEvent("paginationchange"), widgetInstance, _nextPage);
283
- }
284
- return;
285
- }
286
-
287
- // Server-side pagination
288
- var nextPage = accumulatingStateRef.current.lastLoadedPage + 1;
289
- if (setIsLoadingMore) {
290
- setIsLoadingMore(true);
291
- }
292
- datasourceInvoke(nextPage, paginationState.currentMaxResults, true).then(function () {
293
- setPaginationState(function (prev) {
294
- return _objectSpread(_objectSpread({}, prev), {}, {
295
- currentPage: nextPage
296
- });
297
- });
298
- if (onPaginationChange) {
299
- onPaginationChange(event || createDummyEvent("paginationchange"), widgetInstance, nextPage);
300
- }
301
- if (setIsLoadingMore) {
302
- setIsLoadingMore(false);
303
- }
304
- })["catch"](function () {
305
- if (setIsLoadingMore) {
306
- setIsLoadingMore(false);
205
+ }));
206
+ const nextPage2 = accumulatingStateRef.current.lastLoadedPage + 1;
207
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { currentPage: nextPage2 }));
208
+ if (onPaginationChange) {
209
+ onPaginationChange(
210
+ event || createDummyEvent("paginationchange"),
211
+ widgetInstance,
212
+ nextPage2
213
+ );
214
+ }
215
+ return;
307
216
  }
308
- });
309
- }, [navigation, isServerSidePagination, isLastPage, setIsLoadingMore, datasourceInvoke, paginationState.currentMaxResults, onPaginationChange, widgetInstance, dataState.fullData]);
310
-
311
- // Function to reset accumulated data (for View Less button in On-Demand navigation)
312
- var resetAccumulatedData = (0, _react.useCallback)(function (event) {
313
- if (navigation === "Scroll") {
314
- sentinelHasLeftViewportRef.current = false;
315
- }
316
-
317
- // Set resetting flag to prevent dataset prop from overwriting our reset
318
- isResettingRef.current = true;
319
-
320
- // Reset to initial state
321
- setAccumulatingState({
322
- accumulatedData: [],
323
- lastLoadedPage: 0,
324
- isAccumulating: navigation === "Scroll" || navigation === "On-Demand",
325
- isInitialized: false
326
- });
327
-
328
- // Immediately clear the result data to trigger UI update
329
- setDataState(function (prev) {
330
- return _objectSpread(_objectSpread({}, prev), {}, {
331
- result: []
332
- });
333
- });
334
-
335
- // Reset current page to 1
336
- setPaginationState(function (prev) {
337
- return _objectSpread(_objectSpread({}, prev), {}, {
338
- currentPage: 1
339
- });
340
- });
341
-
342
- // Immediately trigger pagination change callback to reset table's page index
343
- if (onPaginationChange) {
344
- onPaginationChange(event || createDummyEvent(), widgetInstance, 1);
345
- }
346
-
347
- // For client-side, reset result to first page
348
- if (!isServerSidePagination && dataState.fullData.length > 0) {
349
- var firstPageData = dataState.fullData.slice(0, paginationState.currentMaxResults);
350
- setDataState(function (prev) {
351
- return _objectSpread(_objectSpread({}, prev), {}, {
352
- result: firstPageData
353
- });
354
- });
355
-
356
- // Re-initialize with first page data
357
- setTimeout(function () {
358
- setAccumulatingState({
359
- accumulatedData: firstPageData,
360
- lastLoadedPage: 1,
361
- isAccumulating: true,
362
- isInitialized: true
363
- });
364
- }, 0);
365
- }
366
-
367
- // For server-side, refetch first page
368
- if (isServerSidePagination && datasource && typeof datasource.invoke === "function") {
217
+ const nextPage = accumulatingStateRef.current.lastLoadedPage + 1;
369
218
  if (setIsLoadingMore) {
370
219
  setIsLoadingMore(true);
371
220
  }
372
- var invokeOptions = {
373
- page: 1
374
- };
375
-
376
- // Include additional options if provided
377
- if (datasourceInvokeOptions) {
378
- Object.assign(invokeOptions, datasourceInvokeOptions);
379
- }
380
- var result = datasource.invoke(invokeOptions);
381
- Promise.resolve(result).then(function (response) {
382
- if (response && response.data) {
383
- var newDataWithIds = (0, _utils.addUniqueRowIds)(response.data);
384
- setAccumulatingState({
385
- accumulatedData: newDataWithIds,
386
- lastLoadedPage: 1,
387
- isAccumulating: true,
388
- isInitialized: true
389
- });
390
- setDataState(function (prev) {
391
- return _objectSpread(_objectSpread({}, prev), {}, {
392
- fullData: newDataWithIds,
393
- result: newDataWithIds
394
- });
395
- });
396
- // Clear resetting flag after successfully setting new data
397
- isResettingRef.current = false;
221
+ datasourceInvoke(nextPage, paginationState.currentMaxResults, true).then(() => {
222
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { currentPage: nextPage }));
223
+ if (onPaginationChange) {
224
+ onPaginationChange(
225
+ event || createDummyEvent("paginationchange"),
226
+ widgetInstance,
227
+ nextPage
228
+ );
398
229
  }
399
230
  if (setIsLoadingMore) {
400
231
  setIsLoadingMore(false);
401
232
  }
402
- })["catch"](function () {
403
- // Clear resetting flag on error
404
- isResettingRef.current = false;
233
+ }).catch(() => {
405
234
  if (setIsLoadingMore) {
406
235
  setIsLoadingMore(false);
407
236
  }
408
237
  });
409
- } else {
410
- // For client-side, clear resetting flag after setTimeout
411
- setTimeout(function () {
412
- isResettingRef.current = false;
413
- }, 0);
414
- }
415
-
416
- // Note: Pagination change callback is already called above when resetting state
417
- }, [navigation, isServerSidePagination, datasource, datasourceInvokeOptions, dataState.fullData, paginationState.currentMaxResults, setIsLoadingMore, onPaginationChange, widgetInstance]);
418
-
419
- // Vertical/column: sentinel in footer, root = viewport (null). Row/horizontal: sentinel inside list, root = list scroll container.
420
- var isRowScroll = navigation === "Scroll" && (listDirection === "row" || listDirection === "horizontal");
421
-
422
- // Single IntersectionObserver for both directions: root = viewport (vertical) or list scroll container (row)
423
- var setupInfiniteScrollObserver = (0, _react.useCallback)(function (sentinel, scrollRoot) {
424
- if (observerRef.current) {
425
- observerRef.current.disconnect();
426
- observerRef.current = null;
427
- }
428
- if (!sentinel || navigation !== "Scroll" || !accumulatingStateRef.current.isInitialized) {
429
- return;
430
- }
431
- if (isRowScroll && !scrollRoot) {
432
- return; // Row needs list container as root; sentinel is inside list
433
- }
434
- observerRef.current = new IntersectionObserver(function (entries) {
435
- var entry = entries[0];
436
- if (!entry.isIntersecting && sentinelHasLeftViewportRef.current === false) {
437
- sentinelHasLeftViewportRef.current = true;
438
- }
439
- if (entry.isIntersecting && accumulatingStateRef.current.isInitialized && !isLastPage && !isFetchingRef.current && sentinelHasLeftViewportRef.current) {
440
- loadMoreData();
238
+ },
239
+ [
240
+ navigation,
241
+ isServerSidePagination,
242
+ isLastPage,
243
+ setIsLoadingMore,
244
+ datasourceInvoke,
245
+ paginationState.currentMaxResults,
246
+ onPaginationChange,
247
+ widgetInstance,
248
+ dataState.fullData
249
+ ]
250
+ );
251
+ const resetAccumulatedData = useCallback(
252
+ (event) => {
253
+ if (navigation === "Scroll") {
441
254
  sentinelHasLeftViewportRef.current = false;
442
255
  }
443
- }, {
444
- root: scrollRoot !== null && scrollRoot !== void 0 ? scrollRoot : null,
445
- rootMargin: isRowScroll ? "0px" : "100px",
446
- threshold: 0.1
447
- });
448
- observerRef.current.observe(sentinel);
449
- }, [navigation, isLastPage, loadMoreData, listDirection, isRowScroll]);
450
-
451
- // Function to reset the paging values to default
452
-
453
- // Function to calculate the paging values
454
-
455
- // Function to set default values to the paging parameters
456
- var setDefaultPagingValues = (0, _react.useCallback)(function (newDataSize, newMaxResults, currentPage) {
457
- setPaginationState(function (prev) {
458
- // If neither 'dataSize' nor 'maxResults' is set, then set default values to the paging parameters
459
- if (!newDataSize && !newMaxResults) {
460
- return _objectSpread(_objectSpread({}, prev), {}, {
461
- pageCount: 1,
462
- dataSize: newDataSize,
463
- currentPage: currentPage !== undefined ? currentPage : prev.currentPage
256
+ isResettingRef.current = true;
257
+ setAccumulatingState({
258
+ accumulatedData: [],
259
+ lastLoadedPage: 0,
260
+ isAccumulating: navigation === "Scroll" || navigation === "On-Demand",
261
+ isInitialized: false
262
+ });
263
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
264
+ result: []
265
+ }));
266
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { currentPage: 1 }));
267
+ if (onPaginationChange) {
268
+ onPaginationChange(event || createDummyEvent(), widgetInstance, 1);
269
+ }
270
+ if (!isServerSidePagination && dataState.fullData.length > 0) {
271
+ const firstPageData = dataState.fullData.slice(0, paginationState.currentMaxResults);
272
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
273
+ result: firstPageData
274
+ }));
275
+ setTimeout(() => {
276
+ setAccumulatingState({
277
+ accumulatedData: firstPageData,
278
+ lastLoadedPage: 1,
279
+ isAccumulating: true,
280
+ isInitialized: true
281
+ });
282
+ }, 0);
283
+ }
284
+ if (isServerSidePagination && datasource && typeof datasource.invoke === "function") {
285
+ if (setIsLoadingMore) {
286
+ setIsLoadingMore(true);
287
+ }
288
+ const invokeOptions = {
289
+ page: 1
290
+ };
291
+ if (datasourceInvokeOptions) {
292
+ Object.assign(invokeOptions, datasourceInvokeOptions);
293
+ }
294
+ const result = datasource.invoke(invokeOptions);
295
+ Promise.resolve(result).then((response) => {
296
+ if (response && response.data) {
297
+ const newDataWithIds = addUniqueRowIds(response.data);
298
+ setAccumulatingState({
299
+ accumulatedData: newDataWithIds,
300
+ lastLoadedPage: 1,
301
+ isAccumulating: true,
302
+ isInitialized: true
303
+ });
304
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
305
+ fullData: newDataWithIds,
306
+ result: newDataWithIds
307
+ }));
308
+ isResettingRef.current = false;
309
+ }
310
+ if (setIsLoadingMore) {
311
+ setIsLoadingMore(false);
312
+ }
313
+ }).catch(() => {
314
+ isResettingRef.current = false;
315
+ if (setIsLoadingMore) {
316
+ setIsLoadingMore(false);
317
+ }
464
318
  });
465
319
  } else {
466
- // Else, set the specified values and recalculate paging parameters
467
- var updatedMaxResults = newMaxResults || prev.currentMaxResults;
468
- var updatedDataSize = newDataSize !== undefined ? newDataSize : prev.dataSize;
469
- var updatedCurrentPage = currentPage !== undefined ? currentPage : prev.currentPage;
470
-
471
- // Calculate page count based on updated values
472
- // Use paginationMeta.totalPages if available
473
- var newPageCount = (paginationMeta === null || paginationMeta === void 0 ? void 0 : paginationMeta.totalPages) !== undefined && (paginationMeta === null || paginationMeta === void 0 ? void 0 : paginationMeta.totalPages) > 1 ? paginationMeta.totalPages : updatedDataSize > updatedMaxResults ? Math.ceil(updatedDataSize / updatedMaxResults) : updatedDataSize < 0 ? 0 : 1;
474
- return _objectSpread(_objectSpread({}, prev), {}, {
475
- currentPage: updatedCurrentPage,
476
- dataSize: updatedDataSize,
477
- pageCount: newPageCount
478
- });
320
+ setTimeout(() => {
321
+ isResettingRef.current = false;
322
+ }, 0);
479
323
  }
480
- });
481
- }, [paginationMeta]);
482
-
483
- // Function to disable navigation based on the current and total pages
484
- var disableNavigation = (0, _react.useCallback)(function () {
324
+ },
325
+ [
326
+ navigation,
327
+ isServerSidePagination,
328
+ datasource,
329
+ datasourceInvokeOptions,
330
+ dataState.fullData,
331
+ paginationState.currentMaxResults,
332
+ setIsLoadingMore,
333
+ onPaginationChange,
334
+ widgetInstance
335
+ ]
336
+ );
337
+ const isRowScroll = navigation === "Scroll" && (listDirection === "row" || listDirection === "horizontal");
338
+ const setupInfiniteScrollObserver = useCallback(
339
+ (sentinel, scrollRoot) => {
340
+ if (observerRef.current) {
341
+ observerRef.current.disconnect();
342
+ observerRef.current = null;
343
+ }
344
+ if (!sentinel || navigation !== "Scroll" || !accumulatingStateRef.current.isInitialized) {
345
+ return;
346
+ }
347
+ if (isRowScroll && !scrollRoot) {
348
+ return;
349
+ }
350
+ observerRef.current = new IntersectionObserver(
351
+ (entries) => {
352
+ const entry = entries[0];
353
+ if (!entry.isIntersecting && sentinelHasLeftViewportRef.current === false) {
354
+ sentinelHasLeftViewportRef.current = true;
355
+ }
356
+ if (entry.isIntersecting && accumulatingStateRef.current.isInitialized && !isLastPage && !isFetchingRef.current && sentinelHasLeftViewportRef.current) {
357
+ loadMoreData();
358
+ sentinelHasLeftViewportRef.current = false;
359
+ }
360
+ },
361
+ {
362
+ root: scrollRoot != null ? scrollRoot : null,
363
+ rootMargin: isRowScroll ? "0px" : "100px",
364
+ threshold: 0.1
365
+ }
366
+ );
367
+ observerRef.current.observe(sentinel);
368
+ },
369
+ [navigation, isLastPage, loadMoreData, listDirection, isRowScroll]
370
+ );
371
+ const setDefaultPagingValues = useCallback(
372
+ (newDataSize, newMaxResults, currentPage) => {
373
+ setPaginationState((prev) => {
374
+ if (!newDataSize && !newMaxResults) {
375
+ return __spreadProps(__spreadValues({}, prev), {
376
+ pageCount: 1,
377
+ dataSize: newDataSize,
378
+ currentPage: currentPage !== void 0 ? currentPage : prev.currentPage
379
+ });
380
+ } else {
381
+ const updatedMaxResults = newMaxResults || prev.currentMaxResults;
382
+ const updatedDataSize = newDataSize !== void 0 ? newDataSize : prev.dataSize;
383
+ const updatedCurrentPage = currentPage !== void 0 ? currentPage : prev.currentPage;
384
+ const newPageCount = (paginationMeta == null ? void 0 : paginationMeta.totalPages) !== void 0 && (paginationMeta == null ? void 0 : paginationMeta.totalPages) > 1 ? paginationMeta.totalPages : updatedDataSize > updatedMaxResults ? Math.ceil(updatedDataSize / updatedMaxResults) : updatedDataSize < 0 ? 0 : 1;
385
+ return __spreadProps(__spreadValues({}, prev), {
386
+ currentPage: updatedCurrentPage,
387
+ dataSize: updatedDataSize,
388
+ pageCount: newPageCount
389
+ });
390
+ }
391
+ });
392
+ },
393
+ [paginationMeta]
394
+ );
395
+ const disableNavigation = useCallback(() => {
485
396
  setDisableStates({
486
397
  isDisableFirst: isFirstPage,
487
398
  isDisablePrevious: isFirstPage,
@@ -491,363 +402,298 @@ var usePagination = exports.usePagination = function usePagination(_ref) {
491
402
  isDisableCount: false
492
403
  });
493
404
  }, [isFirstPage, isLastPage]);
494
-
495
- // Set non-pageable data
496
- var setNonPageableData = (0, _react.useCallback)(function (newVal) {
497
- var newDataSize, newMaxResults, currentPage, startIndex;
498
-
499
- // For server-side pagination, use totalItems or paginationMeta.totalElements as dataSize
500
- // This represents the total count of all records, not just the current page
501
- if (isServerSidePagination) {
502
- var serverTotalCount = totalItems !== null && totalItems !== void 0 ? totalItems : paginationMeta === null || paginationMeta === void 0 ? void 0 : paginationMeta.totalElements;
503
- newDataSize = serverTotalCount !== undefined && serverTotalCount >= 0 ? serverTotalCount : (0, _lodash.isArray)(newVal) ? newVal.length : (0, _lodash.isEmpty)(newVal) ? 0 : 1;
504
- } else {
505
- // For client-side pagination, use the array length
506
- newDataSize = (0, _lodash.isArray)(newVal) ? newVal.length : (0, _lodash.isEmpty)(newVal) ? 0 : 1;
507
- }
508
- newMaxResults = paginationState.currentMaxResults || newDataSize;
509
- // Don't default to 1 if currentPage exists
510
- currentPage = paginationState.currentPage;
511
- setDefaultPagingValues(newDataSize, newMaxResults, currentPage);
512
- disableNavigation();
513
- startIndex = (currentPage - 1) * newMaxResults;
514
- setDataState(function (prev) {
515
- return _objectSpread(_objectSpread({}, prev), {}, {
516
- result: (0, _lodash.isArray)(newVal) ? newVal.slice(startIndex, startIndex + newMaxResults) : newVal
517
- });
518
- });
519
- }, [paginationState.currentPage, paginationState.currentMaxResults, disableNavigation, setDefaultPagingValues, isServerSidePagination, totalItems, paginationMeta]);
520
-
521
- // Set pagination values
522
- var setPagingValues = (0, _react.useCallback)(function (newVal) {
523
- // Check if we're in accumulating mode (Scroll or On-Demand with server-side pagination)
524
- var isAccumulatingMode = (navigation === "Scroll" || navigation === "On-Demand") && isServerSidePagination;
525
- if (isAccumulatingMode) {
526
- // Use ref to check accumulated data to avoid circular dependency
527
- var currentAccumulatedData = accumulatingStateRef.current.accumulatedData;
528
-
529
- // Only update on initial load (when accumulated data is empty)
530
- if (currentAccumulatedData.length === 0 && (0, _lodash.isArray)(newVal)) {
531
- // Ensure initial data has unique IDs using the existing utility
532
- var initialDataWithIds = (0, _utils.addUniqueRowIds)(newVal);
533
- setAccumulatingState(function (prev) {
534
- return _objectSpread(_objectSpread({}, prev), {}, {
405
+ const setNonPageableData = useCallback(
406
+ (newVal) => {
407
+ let newDataSize, newMaxResults, currentPage, startIndex;
408
+ if (isServerSidePagination) {
409
+ const serverTotalCount = totalItems != null ? totalItems : paginationMeta == null ? void 0 : paginationMeta.totalElements;
410
+ newDataSize = serverTotalCount !== void 0 && serverTotalCount >= 0 ? serverTotalCount : isArray(newVal) ? newVal.length : isEmpty(newVal) ? 0 : 1;
411
+ } else {
412
+ newDataSize = isArray(newVal) ? newVal.length : isEmpty(newVal) ? 0 : 1;
413
+ }
414
+ newMaxResults = paginationState.currentMaxResults || newDataSize;
415
+ currentPage = paginationState.currentPage;
416
+ setDefaultPagingValues(newDataSize, newMaxResults, currentPage);
417
+ disableNavigation();
418
+ startIndex = (currentPage - 1) * newMaxResults;
419
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
420
+ result: isArray(newVal) ? newVal.slice(startIndex, startIndex + newMaxResults) : newVal
421
+ }));
422
+ },
423
+ [
424
+ paginationState.currentPage,
425
+ paginationState.currentMaxResults,
426
+ disableNavigation,
427
+ setDefaultPagingValues,
428
+ isServerSidePagination,
429
+ totalItems,
430
+ paginationMeta
431
+ ]
432
+ );
433
+ const setPagingValues = useCallback(
434
+ (newVal) => {
435
+ const isAccumulatingMode = (navigation === "Scroll" || navigation === "On-Demand") && isServerSidePagination;
436
+ if (isAccumulatingMode) {
437
+ const currentAccumulatedData = accumulatingStateRef.current.accumulatedData;
438
+ if (currentAccumulatedData.length === 0 && isArray(newVal)) {
439
+ const initialDataWithIds = addUniqueRowIds(newVal);
440
+ setAccumulatingState((prev) => __spreadProps(__spreadValues({}, prev), {
535
441
  accumulatedData: initialDataWithIds,
536
442
  lastLoadedPage: 1,
537
443
  isInitialized: true
538
- });
539
- });
540
- setDataState(function (prev) {
541
- return _objectSpread(_objectSpread({}, prev), {}, {
444
+ }));
445
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
542
446
  fullData: initialDataWithIds,
543
447
  result: initialDataWithIds
544
- });
545
- });
546
- } else if (currentAccumulatedData.length > 0) {
547
- // For subsequent updates in accumulating mode, always use accumulated data
548
- setDataState(function (prev) {
549
- return _objectSpread(_objectSpread({}, prev), {}, {
448
+ }));
449
+ } else if (currentAccumulatedData.length > 0) {
450
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
550
451
  fullData: currentAccumulatedData,
551
452
  result: currentAccumulatedData
552
- });
553
- });
453
+ }));
454
+ }
455
+ return;
554
456
  }
555
- // Always return early for accumulating mode to prevent normal pagination logic
556
- return;
557
- }
558
-
559
- // For On-Demand with client-side pagination
560
- if (navigation === "On-Demand" && !isServerSidePagination) {
561
- // Store the full data
562
- setDataState(function (prev) {
563
- return _objectSpread(_objectSpread({}, prev), {}, {
564
- fullData: (0, _lodash.isArray)(newVal) ? newVal : []
565
- });
566
- });
567
- var _currentAccumulatedData = accumulatingStateRef.current.accumulatedData;
568
-
569
- // Initialize accumulated data with first page if empty
570
- if (_currentAccumulatedData.length === 0 && (0, _lodash.isArray)(newVal) && newVal.length > 0) {
571
- var firstPageData = newVal.slice(0, paginationState.currentMaxResults);
572
- setAccumulatingState(function (prev) {
573
- return _objectSpread(_objectSpread({}, prev), {}, {
457
+ if (navigation === "On-Demand" && !isServerSidePagination) {
458
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
459
+ fullData: isArray(newVal) ? newVal : []
460
+ }));
461
+ const currentAccumulatedData = accumulatingStateRef.current.accumulatedData;
462
+ if (currentAccumulatedData.length === 0 && isArray(newVal) && newVal.length > 0) {
463
+ const firstPageData = newVal.slice(0, paginationState.currentMaxResults);
464
+ setAccumulatingState((prev) => __spreadProps(__spreadValues({}, prev), {
574
465
  accumulatedData: firstPageData,
575
466
  lastLoadedPage: 1,
576
467
  isInitialized: true
577
- });
578
- });
579
- setDataState(function (prev) {
580
- return _objectSpread(_objectSpread({}, prev), {}, {
468
+ }));
469
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
581
470
  result: firstPageData
582
- });
583
- });
584
- } else if (_currentAccumulatedData.length > 0) {
585
- // Use accumulated data for result
586
- setDataState(function (prev) {
587
- return _objectSpread(_objectSpread({}, prev), {}, {
588
- result: _currentAccumulatedData
589
- });
590
- });
471
+ }));
472
+ } else if (currentAccumulatedData.length > 0) {
473
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
474
+ result: currentAccumulatedData
475
+ }));
476
+ }
477
+ if (isArray(newVal)) {
478
+ setDefaultPagingValues(newVal.length, paginationState.currentMaxResults, 1);
479
+ }
480
+ return;
591
481
  }
592
-
593
- // Update dataSize for proper pagination calculation
594
- if ((0, _lodash.isArray)(newVal)) {
595
- setDefaultPagingValues(newVal.length, paginationState.currentMaxResults, 1);
482
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), {
483
+ fullData: isArray(newVal) ? newVal : []
484
+ }));
485
+ if (newVal && !isArray(newVal)) {
486
+ setNonPageableData(newVal);
487
+ } else if (newVal) {
488
+ setNonPageableData(newVal);
489
+ } else {
490
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), { result: newVal }));
491
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { pageCount: 0, dataSize: 0 }));
596
492
  }
597
- return;
598
- }
599
-
600
- // Standard pagination logic
601
- // Store the data in fullData. This is used for client side searching without modifying the actual dataset
602
- setDataState(function (prev) {
603
- return _objectSpread(_objectSpread({}, prev), {}, {
604
- fullData: (0, _lodash.isArray)(newVal) ? newVal : []
605
- });
606
- });
607
- if (newVal && !(0, _lodash.isArray)(newVal)) {
608
- setNonPageableData(newVal);
609
- } else if (newVal) {
610
- setNonPageableData(newVal);
611
- } else {
612
- setDataState(function (prev) {
613
- return _objectSpread(_objectSpread({}, prev), {}, {
614
- result: newVal
615
- });
616
- });
617
- // Don't reset page navigation when dataset is empty - just update counts
618
- setPaginationState(function (prev) {
619
- return _objectSpread(_objectSpread({}, prev), {}, {
620
- pageCount: 0,
621
- dataSize: 0
622
- });
623
- });
624
- }
625
- }, [setNonPageableData, navigation, isServerSidePagination, paginationState.currentMaxResults, setDefaultPagingValues]);
626
-
627
- // Validate current page
628
- var validateCurrentPage = (0, _react.useCallback)(function (event) {
629
- var currentPage = paginationState.currentPage,
630
- pageCount = paginationState.pageCount;
631
- // If the value entered is greater than the last page number or invalid value, then update the page
632
- if (event && (isNaN(currentPage) || currentPage <= 0 || pageCount && (currentPage > pageCount || (0, _lodash.isNull)(currentPage)))) {
633
- if (currentPage <= 0) {
634
- setPaginationState(function (prev) {
635
- return _objectSpread(_objectSpread({}, prev), {}, {
636
- currentPage: 1
637
- });
638
- });
639
- } else if (currentPage > pageCount) {
640
- setPaginationState(function (prev) {
641
- return _objectSpread(_objectSpread({}, prev), {}, {
642
- currentPage: pageCount
643
- });
644
- });
493
+ },
494
+ [
495
+ setNonPageableData,
496
+ navigation,
497
+ isServerSidePagination,
498
+ paginationState.currentMaxResults,
499
+ setDefaultPagingValues
500
+ ]
501
+ );
502
+ const validateCurrentPage = useCallback(
503
+ (event) => {
504
+ const { currentPage, pageCount } = paginationState;
505
+ if (event && (isNaN(currentPage) || currentPage <= 0 || pageCount && (currentPage > pageCount || isNull(currentPage)))) {
506
+ if (currentPage <= 0) {
507
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { currentPage: 1 }));
508
+ } else if (currentPage > pageCount) {
509
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { currentPage: pageCount }));
510
+ }
511
+ return false;
645
512
  }
646
- return false;
647
- }
648
- return true;
649
- }, [paginationState]);
650
-
651
- // Go to page
652
- var goToPage = (0, _react.useCallback)(function () {
653
- var currentPage = paginationState.currentPage,
654
- currentMaxResults = paginationState.currentMaxResults;
655
- var fullData = dataState.fullData;
656
- var firstRow = (currentPage - 1) * currentMaxResults;
657
- var startIndex = firstRow;
658
- var data = (0, _lodash.isArray)(fullData) ? fullData.slice(startIndex, startIndex + currentMaxResults) : fullData;
659
- setDataState(function (prev) {
660
- return _objectSpread(_objectSpread({}, prev), {}, {
661
- result: data
662
- });
663
- });
513
+ return true;
514
+ },
515
+ [paginationState]
516
+ );
517
+ const goToPage = useCallback(() => {
518
+ const { currentPage, currentMaxResults } = paginationState;
519
+ const { fullData } = dataState;
520
+ const firstRow = (currentPage - 1) * currentMaxResults;
521
+ const startIndex = firstRow;
522
+ const data = isArray(fullData) ? fullData.slice(startIndex, startIndex + currentMaxResults) : fullData;
523
+ setDataState((prev) => __spreadProps(__spreadValues({}, prev), { result: data }));
664
524
  disableNavigation();
665
525
  }, [paginationState, dataState.fullData, disableNavigation]);
666
-
667
- // Shared function for common pagination logic
668
- var performPageNavigation = (0, _react.useCallback)(function (newPage, previousPage, event) {
669
- // Set loading state if available
670
- if (setIsLoadingMore) {
671
- setIsLoadingMore(true);
672
- }
673
-
674
- // Always update the current page immediately for better UX
675
- setPaginationState(function (prev) {
676
- return _objectSpread(_objectSpread({}, prev), {}, {
677
- currentPage: newPage
678
- });
679
- });
680
-
681
- // If server-side pagination is enabled, use API-based pagination
682
- if (isServerSidePagination) {
683
- datasourceInvoke(newPage).then(function () {
684
- // Only trigger callbacks on successful data fetch
526
+ const performPageNavigation = useCallback(
527
+ (newPage, previousPage, event) => {
528
+ if (setIsLoadingMore) {
529
+ setIsLoadingMore(true);
530
+ }
531
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { currentPage: newPage }));
532
+ if (isServerSidePagination) {
533
+ datasourceInvoke(newPage).then(() => {
534
+ if (onPaginationChange) {
535
+ onPaginationChange(
536
+ event || createDummyEvent("paginationchange"),
537
+ widgetInstance,
538
+ newPage
539
+ );
540
+ }
541
+ if (onSetRecord) {
542
+ const firstRow = (newPage - 1) * paginationState.currentMaxResults;
543
+ const startIndex = firstRow;
544
+ const data = isArray(dataState.fullData) ? dataState.fullData.slice(
545
+ startIndex,
546
+ startIndex + paginationState.currentMaxResults
547
+ ) : dataState.fullData;
548
+ const pageInfo = {
549
+ currentPage: newPage,
550
+ size: paginationState.currentMaxResults,
551
+ totalElements: (paginationMeta == null ? void 0 : paginationMeta.totalElements) || dataState.fullData.length,
552
+ totalPages: paginationState.pageCount
553
+ };
554
+ onSetRecord(event || createDummyEvent("setrecord"), widgetInstance, data, pageInfo);
555
+ }
556
+ if (setIsLoadingMore) {
557
+ setIsLoadingMore(false);
558
+ }
559
+ }).catch(() => {
560
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), {
561
+ currentPage: previousPage || paginationState.currentPage
562
+ }));
563
+ if (setIsLoadingMore) {
564
+ setIsLoadingMore(false);
565
+ }
566
+ });
567
+ } else {
685
568
  if (onPaginationChange) {
686
- onPaginationChange(event || createDummyEvent("paginationchange"), widgetInstance, newPage);
569
+ onPaginationChange(
570
+ event || createDummyEvent("paginationchange"),
571
+ widgetInstance,
572
+ newPage
573
+ );
687
574
  }
688
-
689
- // Call onSetRecord with the new page data
690
575
  if (onSetRecord) {
691
- var firstRow = (newPage - 1) * paginationState.currentMaxResults;
692
- var startIndex = firstRow;
693
- var data = (0, _lodash.isArray)(dataState.fullData) ? dataState.fullData.slice(startIndex, startIndex + paginationState.currentMaxResults) : dataState.fullData;
694
- var pageInfo = {
576
+ const firstRow = (newPage - 1) * paginationState.currentMaxResults;
577
+ const startIndex = firstRow;
578
+ const data = isArray(dataState.fullData) ? dataState.fullData.slice(startIndex, startIndex + paginationState.currentMaxResults) : dataState.fullData;
579
+ const pageInfo = {
695
580
  currentPage: newPage,
696
581
  size: paginationState.currentMaxResults,
697
- totalElements: (paginationMeta === null || paginationMeta === void 0 ? void 0 : paginationMeta.totalElements) || dataState.fullData.length,
582
+ totalElements: (paginationMeta == null ? void 0 : paginationMeta.totalElements) || dataState.fullData.length,
698
583
  totalPages: paginationState.pageCount
699
584
  };
700
585
  onSetRecord(event || createDummyEvent("setrecord"), widgetInstance, data, pageInfo);
701
586
  }
702
-
703
- // Clear loading state immediately for better UX
704
- if (setIsLoadingMore) {
705
- setIsLoadingMore(false);
706
- }
707
- })["catch"](function () {
708
- // If the data fetch fails, revert to the previous page
709
- setPaginationState(function (prev) {
710
- return _objectSpread(_objectSpread({}, prev), {}, {
711
- currentPage: previousPage || paginationState.currentPage
712
- });
713
- });
714
-
715
- // Clear loading state
716
587
  if (setIsLoadingMore) {
717
588
  setIsLoadingMore(false);
718
589
  }
719
- });
720
- } else {
721
- // Client-side pagination - no API call needed
722
- // Just trigger the callbacks directly
723
- if (onPaginationChange) {
724
- onPaginationChange(event || createDummyEvent("paginationchange"), widgetInstance, newPage);
725
590
  }
726
-
727
- // Call onSetRecord with the new page data
728
- if (onSetRecord) {
729
- var firstRow = (newPage - 1) * paginationState.currentMaxResults;
730
- var startIndex = firstRow;
731
- var data = (0, _lodash.isArray)(dataState.fullData) ? dataState.fullData.slice(startIndex, startIndex + paginationState.currentMaxResults) : dataState.fullData;
732
- var pageInfo = {
733
- currentPage: newPage,
734
- size: paginationState.currentMaxResults,
735
- totalElements: (paginationMeta === null || paginationMeta === void 0 ? void 0 : paginationMeta.totalElements) || dataState.fullData.length,
736
- totalPages: paginationState.pageCount
737
- };
738
- onSetRecord(event || createDummyEvent("setrecord"), widgetInstance, data, pageInfo);
591
+ },
592
+ [
593
+ isServerSidePagination,
594
+ datasourceInvoke,
595
+ onPaginationChange,
596
+ onSetRecord,
597
+ widgetInstance,
598
+ paginationState,
599
+ dataState.fullData,
600
+ setIsLoadingMore,
601
+ paginationMeta
602
+ ]
603
+ );
604
+ const navigatePage = useCallback(
605
+ (index, event, isRefresh = false) => {
606
+ const currentPage = +paginationState.currentPage;
607
+ let newPage = currentPage;
608
+ switch (index) {
609
+ case "first":
610
+ if (!isFirstPage) {
611
+ newPage = 1;
612
+ } else if (isRefresh) {
613
+ goToPage();
614
+ return;
615
+ } else {
616
+ return;
617
+ }
618
+ break;
619
+ case "prev":
620
+ if (isFirstPage || !validateCurrentPage(event)) {
621
+ return;
622
+ }
623
+ newPage = currentPage - 1;
624
+ break;
625
+ case "next":
626
+ if (isLastPage || !validateCurrentPage(event)) {
627
+ return;
628
+ }
629
+ newPage = currentPage + 1;
630
+ break;
631
+ case "last":
632
+ if (!isLastPage) {
633
+ newPage = paginationState.pageCount;
634
+ } else if (isRefresh) {
635
+ goToPage();
636
+ return;
637
+ } else {
638
+ return;
639
+ }
640
+ break;
641
+ default:
642
+ return;
739
643
  }
740
-
741
- // Clear loading state immediately - no delay needed for client-side pagination
742
- if (setIsLoadingMore) {
743
- setIsLoadingMore(false);
644
+ if (newPage !== currentPage) {
645
+ performPageNavigation(newPage, currentPage, event);
744
646
  }
745
- }
746
- }, [isServerSidePagination, datasourceInvoke, onPaginationChange, onSetRecord, widgetInstance, paginationState, dataState.fullData, setIsLoadingMore, paginationMeta]);
747
-
748
- // Navigate to page
749
- var navigatePage = (0, _react.useCallback)(function (index, event) {
750
- var isRefresh = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
751
- // Convert the current page to a valid page number
752
- var currentPage = +paginationState.currentPage;
753
- var newPage = currentPage;
754
- switch (index) {
755
- case "first":
756
- if (!isFirstPage) {
757
- newPage = 1;
758
- } else if (isRefresh) {
759
- goToPage();
760
- return;
761
- } else {
762
- return;
763
- }
764
- break;
765
- case "prev":
766
- // Return if already on the first page or invalid page
767
- if (isFirstPage || !validateCurrentPage(event)) {
768
- return;
769
- }
770
- // Decrement the current page by 1
771
- newPage = currentPage - 1;
772
- break;
773
- case "next":
774
- // Return if already on the last page or invalid page
775
- if (isLastPage || !validateCurrentPage(event)) {
776
- return;
777
- }
778
- // Increment the current page by 1
779
- newPage = currentPage + 1;
780
- break;
781
- case "last":
782
- if (!isLastPage) {
783
- newPage = paginationState.pageCount;
784
- } else if (isRefresh) {
785
- goToPage();
786
- return;
787
- } else {
788
- return;
789
- }
790
- break;
791
- default:
792
- return;
793
- }
794
-
795
- // Call handlers only when page actually changes
796
- if (newPage !== currentPage) {
797
- performPageNavigation(newPage, currentPage, event);
798
- }
799
- }, [paginationState, isFirstPage, isLastPage, validateCurrentPage, goToPage, performPageNavigation]);
800
-
801
- // Handle page change for basic pagination
802
- var handlePageChange = (0, _react.useCallback)(function (event, page) {
803
- // Do not call goToPage if page has not changed
804
- if (page !== paginationState.currentPage) {
805
- // Save current page to restore in case of error
806
- var previousPage = paginationState.currentPage;
807
- performPageNavigation(page, previousPage, event);
808
- }
809
- }, [paginationState.currentPage, performPageNavigation]);
810
-
811
- // Handle input change for classic pagination
812
- var handleInputChange = (0, _react.useCallback)(function (event) {
813
- var value = parseInt(event.target.value, 10);
647
+ },
648
+ [paginationState, isFirstPage, isLastPage, validateCurrentPage, goToPage, performPageNavigation]
649
+ );
650
+ const handlePageChange = useCallback(
651
+ (event, page) => {
652
+ if (page !== paginationState.currentPage) {
653
+ const previousPage = paginationState.currentPage;
654
+ performPageNavigation(page, previousPage, event);
655
+ }
656
+ },
657
+ [paginationState.currentPage, performPageNavigation]
658
+ );
659
+ const handleInputChange = useCallback((event) => {
660
+ const value = parseInt(event.target.value, 10);
814
661
  if (!isNaN(value)) {
815
- setPaginationState(function (prev) {
816
- return _objectSpread(_objectSpread({}, prev), {}, {
817
- currentPage: value
818
- });
819
- });
662
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { currentPage: value }));
820
663
  }
821
664
  }, []);
822
-
823
- // Handle model change
824
- var onModelChange = (0, _react.useCallback)(function (event) {
825
- if (!validateCurrentPage(event)) {
826
- return;
827
- }
828
-
829
- // Call onSetRecord with the current page data
830
- if (onSetRecord) {
831
- var currentPage = paginationState.currentPage,
832
- currentMaxResults = paginationState.currentMaxResults,
833
- pageCount = paginationState.pageCount;
834
- var fullData = dataState.fullData;
835
- var firstRow = (currentPage - 1) * currentMaxResults;
836
- var startIndex = firstRow;
837
- var data = (0, _lodash.isArray)(fullData) ? fullData.slice(startIndex, startIndex + currentMaxResults) : fullData;
838
- var pageInfo = {
839
- currentPage: currentPage,
840
- size: currentMaxResults,
841
- totalElements: (paginationMeta === null || paginationMeta === void 0 ? void 0 : paginationMeta.totalElements) || fullData.length,
842
- totalPages: pageCount
843
- };
844
- onSetRecord(event, widgetInstance, data, pageInfo);
845
- }
846
- goToPage();
847
- }, [goToPage, validateCurrentPage, onSetRecord, paginationState, dataState.fullData, widgetInstance, paginationMeta]);
848
-
849
- // Handle key down
850
- var onKeyDown = (0, _react.useCallback)(function (event) {
665
+ const onModelChange = useCallback(
666
+ (event) => {
667
+ if (!validateCurrentPage(event)) {
668
+ return;
669
+ }
670
+ if (onSetRecord) {
671
+ const { currentPage, currentMaxResults, pageCount } = paginationState;
672
+ const { fullData } = dataState;
673
+ const firstRow = (currentPage - 1) * currentMaxResults;
674
+ const startIndex = firstRow;
675
+ const data = isArray(fullData) ? fullData.slice(startIndex, startIndex + currentMaxResults) : fullData;
676
+ const pageInfo = {
677
+ currentPage,
678
+ size: currentMaxResults,
679
+ totalElements: (paginationMeta == null ? void 0 : paginationMeta.totalElements) || fullData.length,
680
+ totalPages: pageCount
681
+ };
682
+ onSetRecord(event, widgetInstance, data, pageInfo);
683
+ }
684
+ goToPage();
685
+ },
686
+ [
687
+ goToPage,
688
+ validateCurrentPage,
689
+ onSetRecord,
690
+ paginationState,
691
+ dataState.fullData,
692
+ widgetInstance,
693
+ paginationMeta
694
+ ]
695
+ );
696
+ const onKeyDown = useCallback((event) => {
851
697
  if (event.code === "KeyE") {
852
698
  event.currentTarget.classList.add("ng-invalid");
853
699
  return false;
@@ -855,92 +701,78 @@ var usePagination = exports.usePagination = function usePagination(_ref) {
855
701
  event.currentTarget.classList.remove("ng-invalid");
856
702
  return true;
857
703
  }, []);
858
-
859
- // Handle page size change
860
- var handlePageSizeChange = (0, _react.useCallback)(function (event, pageSize) {
861
- var oldPageSize = paginationState.currentMaxResults,
862
- oldPage = paginationState.currentPage,
863
- dataSize = paginationState.dataSize;
864
-
865
- // Store actualPageSize (the previous page size) similar to Angular
866
- var actualPageSize = oldPageSize;
867
-
868
- // Update datasource maxResults if datasource has paging capability
869
- if (isDataSourceHasPaging(datasource) && datasource) {
870
- datasource.maxResults = pageSize;
871
- }
872
-
873
- // Update page size and reset to first page (similar to Angular behavior)
874
- setPaginationState(function (prev) {
875
- // Calculate new page count
876
- var newPageCount = calculatePagingValues(dataSize, pageSize);
877
- return _objectSpread(_objectSpread({}, prev), {}, {
878
- currentMaxResults: pageSize,
879
- currentPage: 1,
880
- // Always go to first page like Angular
881
- pageCount: newPageCount
704
+ const handlePageSizeChange = useCallback(
705
+ (event, pageSize) => {
706
+ const { currentMaxResults: oldPageSize, currentPage: oldPage, dataSize } = paginationState;
707
+ const actualPageSize = oldPageSize;
708
+ if (isDataSourceHasPaging(datasource) && datasource) {
709
+ datasource.maxResults = pageSize;
710
+ }
711
+ setPaginationState((prev) => {
712
+ const newPageCount = calculatePagingValues(dataSize, pageSize);
713
+ return __spreadProps(__spreadValues({}, prev), {
714
+ currentMaxResults: pageSize,
715
+ currentPage: 1,
716
+ // Always go to first page like Angular
717
+ pageCount: newPageCount
718
+ });
882
719
  });
883
- });
884
-
885
- // Set loading state if available
886
- if (setIsLoadingMore) {
887
- setIsLoadingMore(true);
888
- }
889
-
890
- // Call the external handler if provided
891
- if (pageSizeChangeHandler) {
892
- pageSizeChangeHandler(pageSize);
893
- }
894
-
895
- // Invoke datasource with new page size for server-side pagination
896
- if (isServerSidePagination) {
897
- datasourceInvoke(1, pageSize).then(function () {
898
- // Trigger paginationchange event
899
- if (onPaginationChange) {
900
- onPaginationChange(event || createDummyEvent("paginationchange"), widgetInstance, 1);
901
- }
902
-
903
- // Call onSetRecord with the new page data
904
- if (onSetRecord) {
905
- var data = (0, _lodash.isArray)(dataState.fullData) ? dataState.fullData.slice(0, pageSize) : dataState.fullData;
906
- var newPageCount = calculatePagingValues(dataState.fullData.length, pageSize);
907
- var pageInfo = {
908
- currentPage: 1,
909
- size: pageSize,
910
- totalElements: (paginationMeta === null || paginationMeta === void 0 ? void 0 : paginationMeta.totalElements) || dataState.fullData.length,
911
- totalPages: newPageCount
912
- };
913
- onSetRecord(event || createDummyEvent("setrecord"), widgetInstance, data, pageInfo);
914
- }
915
-
916
- // Clear loading state
917
- if (setIsLoadingMore) {
918
- setIsLoadingMore(false);
919
- }
920
- })["catch"](function () {
921
- // Clear loading state on error
720
+ if (setIsLoadingMore) {
721
+ setIsLoadingMore(true);
722
+ }
723
+ if (pageSizeChangeHandler) {
724
+ pageSizeChangeHandler(pageSize);
725
+ }
726
+ if (isServerSidePagination) {
727
+ datasourceInvoke(1, pageSize).then(() => {
728
+ if (onPaginationChange) {
729
+ onPaginationChange(event || createDummyEvent("paginationchange"), widgetInstance, 1);
730
+ }
731
+ if (onSetRecord) {
732
+ const data = isArray(dataState.fullData) ? dataState.fullData.slice(0, pageSize) : dataState.fullData;
733
+ const newPageCount = calculatePagingValues(dataState.fullData.length, pageSize);
734
+ const pageInfo = {
735
+ currentPage: 1,
736
+ size: pageSize,
737
+ totalElements: (paginationMeta == null ? void 0 : paginationMeta.totalElements) || dataState.fullData.length,
738
+ totalPages: newPageCount
739
+ };
740
+ onSetRecord(event || createDummyEvent("setrecord"), widgetInstance, data, pageInfo);
741
+ }
742
+ if (setIsLoadingMore) {
743
+ setIsLoadingMore(false);
744
+ }
745
+ }).catch(() => {
746
+ if (setIsLoadingMore) {
747
+ setIsLoadingMore(false);
748
+ }
749
+ });
750
+ } else {
751
+ setTimeout(() => {
752
+ navigatePage("first", event, true);
753
+ }, 0);
922
754
  if (setIsLoadingMore) {
923
755
  setIsLoadingMore(false);
924
756
  }
925
- });
926
- } else {
927
- // For client-side pagination, navigate to first page
928
- setTimeout(function () {
929
- navigatePage("first", event, true);
930
- }, 0);
931
-
932
- // Clear loading state immediately for client-side pagination
933
- if (setIsLoadingMore) {
934
- setIsLoadingMore(false);
935
757
  }
936
- }
937
- }, [pageSizeChangeHandler, navigatePage, datasource, paginationState, isServerSidePagination, datasourceInvoke, onPaginationChange, onSetRecord, widgetInstance, dataState.fullData, setIsLoadingMore, paginationMeta]);
938
-
939
- // Effect for navigation controls
940
- (0, _react.useEffect)(function () {
758
+ },
759
+ [
760
+ pageSizeChangeHandler,
761
+ navigatePage,
762
+ datasource,
763
+ paginationState,
764
+ isServerSidePagination,
765
+ datasourceInvoke,
766
+ onPaginationChange,
767
+ onSetRecord,
768
+ widgetInstance,
769
+ dataState.fullData,
770
+ setIsLoadingMore,
771
+ paginationMeta
772
+ ]
773
+ );
774
+ useEffect(() => {
941
775
  setNavcontrols(getValidNavControl(navigation));
942
-
943
- // Reset accumulated data state when navigation changes to Scroll or On-Demand
944
776
  if (navigation === "Scroll" || navigation === "On-Demand") {
945
777
  setAccumulatingState({
946
778
  accumulatedData: [],
@@ -950,100 +782,65 @@ var usePagination = exports.usePagination = function usePagination(_ref) {
950
782
  });
951
783
  }
952
784
  }, [navigation]);
953
-
954
- // for dataset changes
955
- (0, _react.useEffect)(function () {
956
- if (dataset !== undefined) {
957
- // Check if we're in accumulating mode (Scroll or On-Demand with server-side pagination)
958
- var isAccumulatingMode = (navigation === "Scroll" || navigation === "On-Demand") && isServerSidePagination;
959
-
960
- // For accumulating mode, only process dataset updates if accumulated data is empty
961
- // This prevents overwriting accumulated data when datasource updates with new page data
962
- // Also skip if we're currently resetting (to prevent old dataset from overwriting reset)
785
+ useEffect(() => {
786
+ if (dataset !== void 0) {
787
+ const processedDataset = extractDataArray(dataset);
788
+ const isAccumulatingMode = (navigation === "Scroll" || navigation === "On-Demand") && isServerSidePagination;
963
789
  if (isAccumulatingMode) {
964
- var currentAccumulatedData = accumulatingStateRef.current.accumulatedData;
965
- // Only process dataset if accumulated data is empty (initial load or after reset)
966
- // AND we're not currently in the middle of a reset operation
790
+ const currentAccumulatedData = accumulatingStateRef.current.accumulatedData;
967
791
  if (currentAccumulatedData.length === 0 && !isResettingRef.current) {
968
- setPagingValues(dataset);
792
+ setPagingValues(processedDataset);
969
793
  }
970
794
  } else {
971
- // For non-accumulating modes, always process dataset updates
972
- setPagingValues(dataset);
795
+ setPagingValues(processedDataset);
973
796
  }
974
797
  }
975
798
  }, [dataset, setPagingValues, navigation, isServerSidePagination]);
976
-
977
- // For server-side pagination, update dataSize and pageCount based on metadata
978
- (0, _react.useEffect)(function () {
799
+ useEffect(() => {
979
800
  if (isServerSidePagination) {
980
- // Handle totalItems/totalElements
981
- var totalCount = totalItems !== null && totalItems !== void 0 ? totalItems : paginationMeta === null || paginationMeta === void 0 ? void 0 : paginationMeta.totalElements;
982
- if (totalCount !== undefined && totalCount >= 0) {
983
- setPaginationState(function (prev) {
984
- var updates = {
801
+ const totalCount = totalItems != null ? totalItems : paginationMeta == null ? void 0 : paginationMeta.totalElements;
802
+ if (totalCount !== void 0 && totalCount >= 0) {
803
+ setPaginationState((prev) => {
804
+ let updates = {
985
805
  dataSize: totalCount
986
806
  };
987
-
988
- // If totalPages not provided, calculate it
989
- if ((paginationMeta === null || paginationMeta === void 0 ? void 0 : paginationMeta.totalPages) !== undefined) {
807
+ if ((paginationMeta == null ? void 0 : paginationMeta.totalPages) !== void 0) {
990
808
  updates.pageCount = paginationMeta.totalPages;
991
809
  } else if (prev.currentMaxResults > 0) {
992
810
  updates.pageCount = Math.ceil(totalCount / prev.currentMaxResults) || 1;
993
811
  }
994
-
995
- // Handle edge case: current page is out of range
996
- if (paginationMeta !== null && paginationMeta !== void 0 && paginationMeta.totalPages && prev.currentPage > paginationMeta.totalPages) {
812
+ if ((paginationMeta == null ? void 0 : paginationMeta.totalPages) && prev.currentPage > paginationMeta.totalPages) {
997
813
  updates.currentPage = Math.max(1, paginationMeta.totalPages);
998
814
  }
999
-
1000
- // Handle empty results
1001
815
  if (totalCount === 0) {
1002
- updates.pageCount = 1; // Show at least one page for empty results
816
+ updates.pageCount = 1;
1003
817
  updates.currentPage = 1;
1004
818
  }
1005
- return _objectSpread(_objectSpread({}, prev), updates);
819
+ return __spreadValues(__spreadValues({}, prev), updates);
1006
820
  });
1007
821
  }
1008
822
  }
1009
823
  }, [isServerSidePagination, totalItems, paginationMeta]);
1010
-
1011
- // Sync internal state with currentPage prop changes (for controlled pagination)
1012
- (0, _react.useEffect)(function () {
1013
- if (initialPage !== undefined && initialPage !== paginationState.currentPage) {
1014
- setPaginationState(function (prev) {
1015
- return _objectSpread(_objectSpread({}, prev), {}, {
1016
- currentPage: initialPage
1017
- });
1018
- });
1019
- // Update navigation buttons when page changes
824
+ useEffect(() => {
825
+ if (initialPage !== void 0 && initialPage !== paginationState.currentPage) {
826
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { currentPage: initialPage }));
1020
827
  disableNavigation();
1021
828
  }
1022
829
  }, [initialPage, paginationState.currentPage, disableNavigation]);
1023
-
1024
- // Sync currentMaxResults when maxResults prop changes (e.g. when table passes updated page size from script/broadcast)
1025
- (0, _react.useEffect)(function () {
830
+ useEffect(() => {
1026
831
  if (maxResults !== paginationState.currentMaxResults) {
1027
- setPaginationState(function (prev) {
1028
- return _objectSpread(_objectSpread({}, prev), {}, {
1029
- currentMaxResults: maxResults
1030
- });
1031
- });
832
+ setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { currentMaxResults: maxResults }));
1032
833
  }
1033
834
  }, [maxResults, paginationState.currentMaxResults]);
1034
-
1035
- // Re-setup observer when init or direction changes: vertical = viewport root, row = list scroll container root
1036
- (0, _react.useEffect)(function () {
1037
- var _scrollContainerRef$c;
835
+ useEffect(() => {
836
+ var _a2;
1038
837
  if (!accumulatingState.isInitialized || !sentinelRef.current || navigation !== "Scroll") return;
1039
- var scrollRoot = isRowScroll ? (_scrollContainerRef$c = scrollContainerRef === null || scrollContainerRef === void 0 ? void 0 : scrollContainerRef.current) !== null && _scrollContainerRef$c !== void 0 ? _scrollContainerRef$c : null : null;
838
+ const scrollRoot = isRowScroll ? (_a2 = scrollContainerRef == null ? void 0 : scrollContainerRef.current) != null ? _a2 : null : null;
1040
839
  if (isRowScroll && !scrollRoot) return;
1041
840
  setupInfiniteScrollObserver(sentinelRef.current, scrollRoot);
1042
841
  }, [accumulatingState.isInitialized, navigation, setupInfiniteScrollObserver, isRowScroll]);
1043
-
1044
- // Cleanup observer on unmount
1045
- (0, _react.useEffect)(function () {
1046
- return function () {
842
+ useEffect(() => {
843
+ return () => {
1047
844
  if (observerRef.current) {
1048
845
  observerRef.current.disconnect();
1049
846
  observerRef.current = null;
@@ -1056,7 +853,7 @@ var usePagination = exports.usePagination = function usePagination(_ref) {
1056
853
  pageCount: paginationState.pageCount,
1057
854
  dataSize: paginationState.dataSize,
1058
855
  result: dataState.result,
1059
- navcontrols: navcontrols,
856
+ navcontrols,
1060
857
  currentMaxResults: paginationState.currentMaxResults,
1061
858
  error: paginationState.error,
1062
859
  // Disable states
@@ -1067,29 +864,28 @@ var usePagination = exports.usePagination = function usePagination(_ref) {
1067
864
  isDisableCurrent: disableStates.isDisableCurrent,
1068
865
  isDisableCount: disableStates.isDisableCount,
1069
866
  // Actions
1070
- navigatePage: navigatePage,
1071
- handlePageChange: handlePageChange,
1072
- handleInputChange: handleInputChange,
1073
- onModelChange: onModelChange,
1074
- onKeyDown: onKeyDown,
1075
- setDn: function setDn(value) {
1076
- return setPaginationState(function (prev) {
1077
- return _objectSpread(_objectSpread({}, prev), value);
1078
- });
1079
- },
1080
- handlePageSizeChange: handlePageSizeChange,
867
+ navigatePage,
868
+ handlePageChange,
869
+ handleInputChange,
870
+ onModelChange,
871
+ onKeyDown,
872
+ setDn: (value) => setPaginationState((prev) => __spreadValues(__spreadValues({}, prev), value)),
873
+ handlePageSizeChange,
1081
874
  // Utilities
1082
- isFirstPage: isFirstPage,
1083
- isLastPage: isLastPage,
875
+ isFirstPage,
876
+ isLastPage,
1084
877
  isFetching: isFetchingRef.current,
1085
878
  // Infinite scroll specific
1086
- setupInfiniteScrollObserver: setupInfiniteScrollObserver,
1087
- sentinelRef: sentinelRef,
879
+ setupInfiniteScrollObserver,
880
+ sentinelRef,
1088
881
  isLoadingMore: isFetchingRef.current && (navigation === "Scroll" || navigation === "On-Demand") && accumulatingStateRef.current.lastLoadedPage > 0,
1089
882
  hasMoreData: !isLastPage && (navigation === "Scroll" || navigation === "On-Demand"),
1090
883
  // On-Demand specific
1091
- loadMoreData: loadMoreData,
1092
- resetAccumulatedData: resetAccumulatedData,
884
+ loadMoreData,
885
+ resetAccumulatedData,
1093
886
  accumulatedDataCount: accumulatingStateRef.current.accumulatedData.length
1094
887
  };
1095
- };
888
+ };
889
+ export {
890
+ usePagination
891
+ };