@pega/lists-react 9.0.0-build.9.8 → 9.0.0

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 (437) hide show
  1. package/README.md +0 -4
  2. package/lib/Core/Components/A11y/RepeatingStructureA11y.d.ts.map +1 -1
  3. package/lib/Core/Components/A11y/RepeatingStructureA11y.js +2 -1
  4. package/lib/Core/Components/A11y/RepeatingStructureA11y.js.map +1 -1
  5. package/lib/Core/Components/AggregateMenu.d.ts.map +1 -1
  6. package/lib/Core/Components/AggregateMenu.js +6 -2
  7. package/lib/Core/Components/AggregateMenu.js.map +1 -1
  8. package/lib/Core/Components/AggregatorCell.d.ts.map +1 -1
  9. package/lib/Core/Components/AggregatorCell.js +3 -1
  10. package/lib/Core/Components/AggregatorCell.js.map +1 -1
  11. package/lib/Core/Components/ContextMenu/ContextMenuContainer.d.ts +6 -15
  12. package/lib/Core/Components/ContextMenu/ContextMenuContainer.d.ts.map +1 -1
  13. package/lib/Core/Components/ContextMenu/ContextMenuContainer.js +111 -166
  14. package/lib/Core/Components/ContextMenu/ContextMenuContainer.js.map +1 -1
  15. package/lib/Core/Components/ContextMenu/QuickFilter.js +1 -1
  16. package/lib/Core/Components/ContextMenu/QuickFilter.js.map +1 -1
  17. package/lib/Core/Components/DefaultComponents/CellRenderers/ColumnMergeTemplates/CustomCellWrapper.d.ts +1 -1
  18. package/lib/Core/Components/DefaultComponents/CellRenderers/ColumnMergeTemplates/CustomCellWrapper.d.ts.map +1 -1
  19. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.d.ts.map +1 -1
  20. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js +33 -5
  21. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js.map +1 -1
  22. package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.d.ts +10 -0
  23. package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.d.ts.map +1 -0
  24. package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.js +27 -0
  25. package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.js.map +1 -0
  26. package/lib/Core/Components/DefaultComponents/CellRenderers/index.d.ts +2 -2
  27. package/lib/Core/Components/DefaultComponents/CellRenderers/index.d.ts.map +1 -1
  28. package/lib/Core/Components/DefaultComponents/CellRenderers/index.js +2 -2
  29. package/lib/Core/Components/DefaultComponents/CellRenderers/index.js.map +1 -1
  30. package/lib/Core/Components/DefaultComponents/EmptyContainer.d.ts +3 -1
  31. package/lib/Core/Components/DefaultComponents/EmptyContainer.d.ts.map +1 -1
  32. package/lib/Core/Components/DefaultComponents/EmptyContainer.js +11 -2
  33. package/lib/Core/Components/DefaultComponents/EmptyContainer.js.map +1 -1
  34. package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.d.ts +3 -2
  35. package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.d.ts.map +1 -1
  36. package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.js +13 -26
  37. package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.js.map +1 -1
  38. package/lib/Core/Components/DefaultComponents/PersonalizationDeleteConfirmation.js +2 -2
  39. package/lib/Core/Components/DefaultComponents/PersonalizationDeleteConfirmation.js.map +1 -1
  40. package/lib/Core/Components/DefaultComponents/PersonalizationSelector.d.ts +0 -2
  41. package/lib/Core/Components/DefaultComponents/PersonalizationSelector.d.ts.map +1 -1
  42. package/lib/Core/Components/DefaultComponents/PersonalizationSelector.js +11 -9
  43. package/lib/Core/Components/DefaultComponents/PersonalizationSelector.js.map +1 -1
  44. package/lib/Core/Components/DefaultComponents/SelectAllCheckbox.d.ts.map +1 -1
  45. package/lib/Core/Components/DefaultComponents/SelectAllCheckbox.js +20 -19
  46. package/lib/Core/Components/DefaultComponents/SelectAllCheckbox.js.map +1 -1
  47. package/lib/Core/Components/DefaultComponents/index.d.ts +4 -3
  48. package/lib/Core/Components/DefaultComponents/index.d.ts.map +1 -1
  49. package/lib/Core/Components/DefaultComponents/index.js +0 -2
  50. package/lib/Core/Components/DefaultComponents/index.js.map +1 -1
  51. package/lib/Core/Components/Filters/AdvanceFilter.d.ts.map +1 -1
  52. package/lib/Core/Components/Filters/AdvanceFilter.js +5 -2
  53. package/lib/Core/Components/Filters/AdvanceFilter.js.map +1 -1
  54. package/lib/Core/Components/Filters/SelectFilter.d.ts +1 -1
  55. package/lib/Core/Components/Filters/SelectFilter.d.ts.map +1 -1
  56. package/lib/Core/Components/Filters/SelectFilter.js +43 -44
  57. package/lib/Core/Components/Filters/SelectFilter.js.map +1 -1
  58. package/lib/Core/Components/Filters/SimpleFilter.js +1 -1
  59. package/lib/Core/Components/Filters/SimpleFilter.js.map +1 -1
  60. package/lib/Core/Components/Filters/styles.d.ts +1 -1
  61. package/lib/Core/Components/FooterAggregators.d.ts.map +1 -1
  62. package/lib/Core/Components/FooterAggregators.js +6 -3
  63. package/lib/Core/Components/FooterAggregators.js.map +1 -1
  64. package/lib/Core/Components/GroupRenderer/GroupAdditionalFieldDataModal.d.ts +12 -0
  65. package/lib/Core/Components/GroupRenderer/GroupAdditionalFieldDataModal.d.ts.map +1 -0
  66. package/lib/Core/Components/GroupRenderer/GroupAdditionalFieldDataModal.js +62 -0
  67. package/lib/Core/Components/GroupRenderer/GroupAdditionalFieldDataModal.js.map +1 -0
  68. package/lib/Core/Components/GroupRenderer/GroupAdditionalInfo.d.ts +33 -0
  69. package/lib/Core/Components/GroupRenderer/GroupAdditionalInfo.d.ts.map +1 -0
  70. package/lib/Core/Components/GroupRenderer/GroupAdditionalInfo.js +106 -0
  71. package/lib/Core/Components/GroupRenderer/GroupAdditionalInfo.js.map +1 -0
  72. package/lib/Core/Components/GroupRenderer/index.d.ts +22 -0
  73. package/lib/Core/Components/GroupRenderer/index.d.ts.map +1 -0
  74. package/lib/Core/Components/GroupRenderer/index.js +395 -0
  75. package/lib/Core/Components/GroupRenderer/index.js.map +1 -0
  76. package/lib/Core/Components/Grouping/GroupingMenu.d.ts.map +1 -1
  77. package/lib/Core/Components/Grouping/GroupingMenu.js +2 -1
  78. package/lib/Core/Components/Grouping/GroupingMenu.js.map +1 -1
  79. package/lib/Core/Components/HeaderCell.d.ts.map +1 -1
  80. package/lib/Core/Components/HeaderCell.js +3 -3
  81. package/lib/Core/Components/HeaderCell.js.map +1 -1
  82. package/lib/Core/Components/HeaderMenu/actions.d.ts +1 -1
  83. package/lib/Core/Components/HeaderMenu/actions.d.ts.map +1 -1
  84. package/lib/Core/Components/HeaderMenu/actions.js +3 -4
  85. package/lib/Core/Components/HeaderMenu/actions.js.map +1 -1
  86. package/lib/Core/Components/HeaderMenu/index.d.ts.map +1 -1
  87. package/lib/Core/Components/HeaderMenu/index.js +5 -5
  88. package/lib/Core/Components/HeaderMenu/index.js.map +1 -1
  89. package/lib/Core/Components/HierarchicalGroupRenderer.d.ts.map +1 -1
  90. package/lib/Core/Components/HierarchicalGroupRenderer.js +6 -2
  91. package/lib/Core/Components/HierarchicalGroupRenderer.js.map +1 -1
  92. package/lib/Core/Components/NotificationManager.js +1 -1
  93. package/lib/Core/Components/NotificationManager.js.map +1 -1
  94. package/lib/Core/Components/RFColumnConfigurator.d.ts.map +1 -1
  95. package/lib/Core/Components/RFColumnConfigurator.js +32 -9
  96. package/lib/Core/Components/RFColumnConfigurator.js.map +1 -1
  97. package/lib/Core/Components/RSWrapper/HeaderBarGadget.d.ts.map +1 -1
  98. package/lib/Core/Components/RSWrapper/HeaderBarGadget.js +2 -1
  99. package/lib/Core/Components/RSWrapper/HeaderBarGadget.js.map +1 -1
  100. package/lib/Core/Components/RSWrapper/index.d.ts.map +1 -1
  101. package/lib/Core/Components/RSWrapper/index.js +2 -9
  102. package/lib/Core/Components/RSWrapper/index.js.map +1 -1
  103. package/lib/Core/Components/RenderingEngine/Formatter.d.ts.map +1 -1
  104. package/lib/Core/Components/RenderingEngine/Formatter.js +4 -1
  105. package/lib/Core/Components/RenderingEngine/Formatter.js.map +1 -1
  106. package/lib/Core/Components/RenderingEngine/RenderCell.d.ts.map +1 -1
  107. package/lib/Core/Components/RenderingEngine/RenderCell.js +19 -8
  108. package/lib/Core/Components/RenderingEngine/RenderCell.js.map +1 -1
  109. package/lib/Core/Components/RenderingEngine/useHighlighter.d.ts.map +1 -1
  110. package/lib/Core/Components/RenderingEngine/useHighlighter.js +0 -1
  111. package/lib/Core/Components/RenderingEngine/useHighlighter.js.map +1 -1
  112. package/lib/Core/Components/TestIdConstants.d.ts +2 -0
  113. package/lib/Core/Components/TestIdConstants.js +3 -1
  114. package/lib/Core/Components/TestIdConstants.js.map +1 -1
  115. package/lib/Core/Components/Toolbar/AdvanceToolbar.d.ts.map +1 -1
  116. package/lib/Core/Components/Toolbar/AdvanceToolbar.js +7 -18
  117. package/lib/Core/Components/Toolbar/AdvanceToolbar.js.map +1 -1
  118. package/lib/Core/Components/Toolbar/ColumnSelector.d.ts +6 -4
  119. package/lib/Core/Components/Toolbar/ColumnSelector.d.ts.map +1 -1
  120. package/lib/Core/Components/Toolbar/ColumnSelector.js +18 -21
  121. package/lib/Core/Components/Toolbar/ColumnSelector.js.map +1 -1
  122. package/lib/Core/Components/Toolbar/DebugInfo.d.ts +3 -5
  123. package/lib/Core/Components/Toolbar/DebugInfo.d.ts.map +1 -1
  124. package/lib/Core/Components/Toolbar/DebugInfo.js +3 -3
  125. package/lib/Core/Components/Toolbar/DebugInfo.js.map +1 -1
  126. package/lib/Core/Components/Toolbar/FieldSelector.d.ts +2 -1
  127. package/lib/Core/Components/Toolbar/FieldSelector.d.ts.map +1 -1
  128. package/lib/Core/Components/Toolbar/FieldSelector.js +14 -7
  129. package/lib/Core/Components/Toolbar/FieldSelector.js.map +1 -1
  130. package/lib/Core/Components/Toolbar/Grouping.types.d.ts +0 -6
  131. package/lib/Core/Components/Toolbar/Grouping.types.d.ts.map +1 -1
  132. package/lib/Core/Components/Toolbar/Grouping.types.js.map +1 -1
  133. package/lib/Core/Components/Toolbar/RefreshBanner.d.ts.map +1 -1
  134. package/lib/Core/Components/Toolbar/RefreshBanner.js +1 -0
  135. package/lib/Core/Components/Toolbar/RefreshBanner.js.map +1 -1
  136. package/lib/Core/Components/Toolbar/SimpleToolbar.d.ts.map +1 -1
  137. package/lib/Core/Components/Toolbar/SimpleToolbar.js +2 -4
  138. package/lib/Core/Components/Toolbar/SimpleToolbar.js.map +1 -1
  139. package/lib/Core/Components/Toolbar/hooks/useFilter.d.ts.map +1 -1
  140. package/lib/Core/Components/Toolbar/hooks/useFilter.js +4 -1
  141. package/lib/Core/Components/Toolbar/hooks/useFilter.js.map +1 -1
  142. package/lib/Core/Components/Toolbar/hooks/useGroup/DateFunctionSelector.d.ts +14 -18
  143. package/lib/Core/Components/Toolbar/hooks/useGroup/DateFunctionSelector.d.ts.map +1 -1
  144. package/lib/Core/Components/Toolbar/hooks/useGroup/DateFunctionSelector.js +15 -16
  145. package/lib/Core/Components/Toolbar/hooks/useGroup/DateFunctionSelector.js.map +1 -1
  146. package/lib/Core/Components/Toolbar/hooks/useGroup/GroupRenderer.d.ts +4 -2
  147. package/lib/Core/Components/Toolbar/hooks/useGroup/GroupRenderer.d.ts.map +1 -1
  148. package/lib/Core/Components/Toolbar/hooks/useGroup/GroupRenderer.js +30 -22
  149. package/lib/Core/Components/Toolbar/hooks/useGroup/GroupRenderer.js.map +1 -1
  150. package/lib/Core/Components/Toolbar/hooks/useGroup/useGroup.d.ts.map +1 -1
  151. package/lib/Core/Components/Toolbar/hooks/useGroup/useGroup.js +17 -6
  152. package/lib/Core/Components/Toolbar/hooks/useGroup/useGroup.js.map +1 -1
  153. package/lib/Core/Components/Toolbar/hooks/useGroup/utils.d.ts +7 -2
  154. package/lib/Core/Components/Toolbar/hooks/useGroup/utils.d.ts.map +1 -1
  155. package/lib/Core/Components/Toolbar/hooks/useGroup/utils.js +12 -5
  156. package/lib/Core/Components/Toolbar/hooks/useGroup/utils.js.map +1 -1
  157. package/lib/Core/Components/Toolbar/hooks/useMore.d.ts +1 -1
  158. package/lib/Core/Components/Toolbar/hooks/useMore.d.ts.map +1 -1
  159. package/lib/Core/Components/Toolbar/hooks/useMore.js +134 -80
  160. package/lib/Core/Components/Toolbar/hooks/useMore.js.map +1 -1
  161. package/lib/Core/Components/Toolbar/hooks/usePersonalization.d.ts +8 -6
  162. package/lib/Core/Components/Toolbar/hooks/usePersonalization.d.ts.map +1 -1
  163. package/lib/Core/Components/Toolbar/hooks/usePersonalization.js +18 -3
  164. package/lib/Core/Components/Toolbar/hooks/usePersonalization.js.map +1 -1
  165. package/lib/Core/Components/Toolbar/hooks/useSearch.d.ts.map +1 -1
  166. package/lib/Core/Components/Toolbar/hooks/useSearch.js +7 -10
  167. package/lib/Core/Components/Toolbar/hooks/useSearch.js.map +1 -1
  168. package/lib/Core/Components/Toolbar/hooks/useSort/Row.d.ts +8 -6
  169. package/lib/Core/Components/Toolbar/hooks/useSort/Row.d.ts.map +1 -1
  170. package/lib/Core/Components/Toolbar/hooks/useSort/Row.js +16 -10
  171. package/lib/Core/Components/Toolbar/hooks/useSort/Row.js.map +1 -1
  172. package/lib/Core/Components/Toolbar/hooks/useSort/SortRenderer.d.ts +4 -2
  173. package/lib/Core/Components/Toolbar/hooks/useSort/SortRenderer.d.ts.map +1 -1
  174. package/lib/Core/Components/Toolbar/hooks/useSort/SortRenderer.js +9 -3
  175. package/lib/Core/Components/Toolbar/hooks/useSort/SortRenderer.js.map +1 -1
  176. package/lib/Core/Components/Toolbar/hooks/useSort/useSort.d.ts.map +1 -1
  177. package/lib/Core/Components/Toolbar/hooks/useSort/useSort.js +8 -2
  178. package/lib/Core/Components/Toolbar/hooks/useSort/useSort.js.map +1 -1
  179. package/lib/Core/Components/Toolbar/hooks/useSort/utils.d.ts +1 -1
  180. package/lib/Core/Components/Toolbar/hooks/useSort/utils.d.ts.map +1 -1
  181. package/lib/Core/Components/Toolbar/hooks/useSort/utils.js +2 -2
  182. package/lib/Core/Components/Toolbar/hooks/useSort/utils.js.map +1 -1
  183. package/lib/Core/Components/Toolbar/hooks/useWrapAction.d.ts +2 -1
  184. package/lib/Core/Components/Toolbar/hooks/useWrapAction.d.ts.map +1 -1
  185. package/lib/Core/Components/Toolbar/hooks/useWrapAction.js +36 -12
  186. package/lib/Core/Components/Toolbar/hooks/useWrapAction.js.map +1 -1
  187. package/lib/Core/Components/Toolbar/utils/utils.d.ts +28 -7
  188. package/lib/Core/Components/Toolbar/utils/utils.d.ts.map +1 -1
  189. package/lib/Core/Components/Toolbar/utils/utils.js +43 -11
  190. package/lib/Core/Components/Toolbar/utils/utils.js.map +1 -1
  191. package/lib/Core/Components/Virtualise/Pagination.d.ts.map +1 -1
  192. package/lib/Core/Components/Virtualise/Pagination.js +2 -1
  193. package/lib/Core/Components/Virtualise/Pagination.js.map +1 -1
  194. package/lib/Core/Components/Virtualise/UseScroll.d.ts +4 -1
  195. package/lib/Core/Components/Virtualise/UseScroll.d.ts.map +1 -1
  196. package/lib/Core/Components/Virtualise/UseScroll.js +16 -3
  197. package/lib/Core/Components/Virtualise/UseScroll.js.map +1 -1
  198. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer.js +1 -1
  199. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer.js.map +1 -1
  200. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/usePagination.d.ts +2 -2
  201. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/usePagination.d.ts.map +1 -1
  202. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/usePagination.js.map +1 -1
  203. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/utils.d.ts +6 -6
  204. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/utils.d.ts.map +1 -1
  205. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/utils.js +6 -5
  206. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/utils.js.map +1 -1
  207. package/lib/Core/Components/Virtualise/VirtualizeInfinite.js +14 -4
  208. package/lib/Core/Components/Virtualise/VirtualizeInfinite.js.map +1 -1
  209. package/lib/Core/Components/Virtualise/index.js +19 -4
  210. package/lib/Core/Components/Virtualise/index.js.map +1 -1
  211. package/lib/Core/Components/Virtualise/utility.js +1 -1
  212. package/lib/Core/Components/Virtualise/utility.js.map +1 -1
  213. package/lib/Core/Components/WarningBanner.d.ts +11 -0
  214. package/lib/Core/Components/WarningBanner.d.ts.map +1 -0
  215. package/lib/Core/Components/WarningBanner.js +23 -0
  216. package/lib/Core/Components/WarningBanner.js.map +1 -0
  217. package/lib/Core/Context/LocalizationContext.d.ts +1 -1
  218. package/lib/Core/Context/LocalizationContext.d.ts.map +1 -1
  219. package/lib/Core/Context/LocalizationContext.js.map +1 -1
  220. package/lib/Core/Hooks/a11y/useAnnounce.d.ts +3 -4
  221. package/lib/Core/Hooks/a11y/useAnnounce.d.ts.map +1 -1
  222. package/lib/Core/Hooks/a11y/useAnnounce.js +3 -4
  223. package/lib/Core/Hooks/a11y/useAnnounce.js.map +1 -1
  224. package/lib/Core/Hooks/useDebounce.js +1 -1
  225. package/lib/Core/Hooks/useDebounce.js.map +1 -1
  226. package/lib/Core/Hooks/useDragDrop.d.ts +2 -2
  227. package/lib/Core/Hooks/useDragDrop.d.ts.map +1 -1
  228. package/lib/Core/Hooks/useDragDrop.js +9 -9
  229. package/lib/Core/Hooks/useDragDrop.js.map +1 -1
  230. package/lib/Core/Hooks/useRepeat.d.ts +1 -1
  231. package/lib/Core/Hooks/useRepeat.d.ts.map +1 -1
  232. package/lib/Core/Hooks/useRepeat.js +58 -11
  233. package/lib/Core/Hooks/useRepeat.js.map +1 -1
  234. package/lib/Core/Hooks/useSelectAllCheckbox.d.ts +21 -0
  235. package/lib/Core/Hooks/useSelectAllCheckbox.d.ts.map +1 -0
  236. package/lib/Core/Hooks/useSelectAllCheckbox.js +23 -0
  237. package/lib/Core/Hooks/useSelectAllCheckbox.js.map +1 -0
  238. package/lib/Core/Localization/defaultTranslations.d.ts +15 -13
  239. package/lib/Core/Localization/defaultTranslations.d.ts.map +1 -1
  240. package/lib/Core/Localization/defaultTranslations.js +16 -14
  241. package/lib/Core/Localization/defaultTranslations.js.map +1 -1
  242. package/lib/Core/Test/JUnitMocks.d.ts +12 -0
  243. package/lib/Core/Test/JUnitMocks.d.ts.map +1 -1
  244. package/lib/Core/Test/JUnitMocks.js +27 -8
  245. package/lib/Core/Test/JUnitMocks.js.map +1 -1
  246. package/lib/Core/Test/TestUtils.d.ts +0 -1
  247. package/lib/Core/Test/TestUtils.d.ts.map +1 -1
  248. package/lib/Core/Test/TestUtils.js +3 -7
  249. package/lib/Core/Test/TestUtils.js.map +1 -1
  250. package/lib/Core/Utils/index.d.ts +15 -0
  251. package/lib/Core/Utils/index.d.ts.map +1 -1
  252. package/lib/Core/Utils/index.js +22 -0
  253. package/lib/Core/Utils/index.js.map +1 -1
  254. package/lib/Core/Utils/styles.d.ts +2 -2
  255. package/lib/Core/Utils/styles.d.ts.map +1 -1
  256. package/lib/Core/Views/Gallery/Components/GalleryCard.d.ts +4 -0
  257. package/lib/Core/Views/Gallery/Components/GalleryCard.d.ts.map +1 -0
  258. package/lib/Core/Views/Gallery/Components/GalleryCard.js +29 -0
  259. package/lib/Core/Views/Gallery/Components/GalleryCard.js.map +1 -0
  260. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.d.ts +8 -0
  261. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.d.ts.map +1 -0
  262. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.js +25 -0
  263. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.js.map +1 -0
  264. package/lib/Core/Views/Gallery/Components/GalleryFieldValue.d.ts +8 -0
  265. package/lib/Core/Views/Gallery/Components/GalleryFieldValue.d.ts.map +1 -0
  266. package/lib/Core/Views/Gallery/Components/GalleryFieldValue.js +8 -0
  267. package/lib/Core/Views/Gallery/Components/GalleryFieldValue.js.map +1 -0
  268. package/lib/Core/Views/Gallery/Components/GalleryHeader.d.ts +8 -0
  269. package/lib/Core/Views/Gallery/Components/GalleryHeader.d.ts.map +1 -0
  270. package/lib/Core/Views/Gallery/Components/GalleryHeader.js +15 -0
  271. package/lib/Core/Views/Gallery/Components/GalleryHeader.js.map +1 -0
  272. package/lib/Core/Views/Gallery/Gallery.types.d.ts +8 -0
  273. package/lib/Core/Views/Gallery/Gallery.types.d.ts.map +1 -0
  274. package/lib/Core/Views/Gallery/Gallery.types.js +2 -0
  275. package/lib/Core/Views/Gallery/Gallery.types.js.map +1 -0
  276. package/lib/Core/Views/Gallery/GalleryA11y.d.ts +7 -5
  277. package/lib/Core/Views/Gallery/GalleryA11y.d.ts.map +1 -1
  278. package/lib/Core/Views/Gallery/GalleryA11y.js +9 -52
  279. package/lib/Core/Views/Gallery/GalleryA11y.js.map +1 -1
  280. package/lib/Core/Views/Gallery/GalleryContainer.d.ts +23 -0
  281. package/lib/Core/Views/Gallery/GalleryContainer.d.ts.map +1 -0
  282. package/lib/Core/Views/Gallery/GalleryContainer.js +66 -0
  283. package/lib/Core/Views/Gallery/GalleryContainer.js.map +1 -0
  284. package/lib/Core/Views/Gallery/_tests_/Samples/GalleryA11ySample.js +1 -1
  285. package/lib/Core/Views/Gallery/_tests_/Samples/GalleryA11ySample.js.map +1 -1
  286. package/lib/Core/Views/Gallery/hooks/useRowActions.d.ts +9 -0
  287. package/lib/Core/Views/Gallery/hooks/useRowActions.d.ts.map +1 -0
  288. package/lib/Core/Views/Gallery/hooks/useRowActions.js +25 -0
  289. package/lib/Core/Views/Gallery/hooks/useRowActions.js.map +1 -0
  290. package/lib/Core/Views/Gallery/index.d.ts +4 -8
  291. package/lib/Core/Views/Gallery/index.d.ts.map +1 -1
  292. package/lib/Core/Views/Gallery/index.js +38 -59
  293. package/lib/Core/Views/Gallery/index.js.map +1 -1
  294. package/lib/Core/Views/Gallery/utils.d.ts +36 -0
  295. package/lib/Core/Views/Gallery/utils.d.ts.map +1 -0
  296. package/lib/Core/Views/Gallery/utils.js +115 -0
  297. package/lib/Core/Views/Gallery/utils.js.map +1 -0
  298. package/lib/Core/Views/Map/Map.styles.d.ts +190 -6
  299. package/lib/Core/Views/Map/Map.styles.d.ts.map +1 -1
  300. package/lib/Core/Views/Map/Map.styles.js.map +1 -1
  301. package/lib/Core/Views/Map/index.d.ts.map +1 -1
  302. package/lib/Core/Views/Map/index.js +2 -2
  303. package/lib/Core/Views/Map/index.js.map +1 -1
  304. package/lib/Core/Views/RsCardWrapper.js.map +1 -1
  305. package/lib/Core/Views/Table/Body.d.ts.map +1 -1
  306. package/lib/Core/Views/Table/Body.js +5 -2
  307. package/lib/Core/Views/Table/Body.js.map +1 -1
  308. package/lib/Core/Views/Table/CellWrapper.d.ts +1 -1
  309. package/lib/Core/Views/Table/CellWrapper.d.ts.map +1 -1
  310. package/lib/Core/Views/Table/CellWrapper.js +4 -2
  311. package/lib/Core/Views/Table/CellWrapper.js.map +1 -1
  312. package/lib/Core/Views/Table/GroupingHeaderCell.d.ts +6 -15
  313. package/lib/Core/Views/Table/GroupingHeaderCell.d.ts.map +1 -1
  314. package/lib/Core/Views/Table/GroupingHeaderCell.js +16 -14
  315. package/lib/Core/Views/Table/GroupingHeaderCell.js.map +1 -1
  316. package/lib/Core/Views/Table/HeaderWrapper.d.ts.map +1 -1
  317. package/lib/Core/Views/Table/HeaderWrapper.js +5 -5
  318. package/lib/Core/Views/Table/HeaderWrapper.js.map +1 -1
  319. package/lib/Core/Views/Table/SkeletonRows.d.ts +1 -1
  320. package/lib/Core/Views/Table/SkeletonRows.d.ts.map +1 -1
  321. package/lib/Core/Views/Table/StyledTableContainer.d.ts +3 -1
  322. package/lib/Core/Views/Table/StyledTableContainer.d.ts.map +1 -1
  323. package/lib/Core/Views/Table/StyledTableContainer.js +270 -155
  324. package/lib/Core/Views/Table/StyledTableContainer.js.map +1 -1
  325. package/lib/Core/Views/Table/TableA11y.d.ts +13 -1
  326. package/lib/Core/Views/Table/TableA11y.d.ts.map +1 -1
  327. package/lib/Core/Views/Table/TableA11y.js +233 -13
  328. package/lib/Core/Views/Table/TableA11y.js.map +1 -1
  329. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts +3 -1
  330. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts.map +1 -1
  331. package/lib/Core/Views/Table/VirtualizeWrapper.js +16 -16
  332. package/lib/Core/Views/Table/VirtualizeWrapper.js.map +1 -1
  333. package/lib/Core/Views/Table/index.d.ts.map +1 -1
  334. package/lib/Core/Views/Table/index.js +16 -7
  335. package/lib/Core/Views/Table/index.js.map +1 -1
  336. package/lib/Core/Views/Timeline/Timeline.d.ts.map +1 -1
  337. package/lib/Core/Views/Timeline/Timeline.js +15 -20
  338. package/lib/Core/Views/Timeline/Timeline.js.map +1 -1
  339. package/lib/Core/Views/Timeline/Timeline.styles.d.ts +392 -15
  340. package/lib/Core/Views/Timeline/Timeline.styles.d.ts.map +1 -1
  341. package/lib/Core/Views/Timeline/Timeline.styles.js +44 -44
  342. package/lib/Core/Views/Timeline/Timeline.styles.js.map +1 -1
  343. package/lib/Core/Views/Timeline/Timeline.types.d.ts +11 -7
  344. package/lib/Core/Views/Timeline/Timeline.types.d.ts.map +1 -1
  345. package/lib/Core/Views/Timeline/Timeline.types.js.map +1 -1
  346. package/lib/Core/Views/Timeline/TimelineGroup.d.ts +13 -0
  347. package/lib/Core/Views/Timeline/TimelineGroup.d.ts.map +1 -0
  348. package/lib/Core/Views/Timeline/TimelineGroup.js +21 -0
  349. package/lib/Core/Views/Timeline/TimelineGroup.js.map +1 -0
  350. package/lib/Core/Views/Timeline/TimelineItem.d.ts +1 -3
  351. package/lib/Core/Views/Timeline/TimelineItem.d.ts.map +1 -1
  352. package/lib/Core/Views/Timeline/TimelineItem.js +7 -6
  353. package/lib/Core/Views/Timeline/TimelineItem.js.map +1 -1
  354. package/lib/Core/Views/Timeline/__tests__/Timeline.mocks.d.ts +2 -2
  355. package/lib/Core/Views/Timeline/__tests__/Timeline.mocks.d.ts.map +1 -1
  356. package/lib/Core/Views/Timeline/__tests__/Timeline.mocks.js.map +1 -1
  357. package/lib/Core/Views/Timeline/index.d.ts.map +1 -1
  358. package/lib/Core/Views/Timeline/index.js +13 -6
  359. package/lib/Core/Views/Timeline/index.js.map +1 -1
  360. package/lib/Core/Views/Timeline/utils.d.ts +8 -10
  361. package/lib/Core/Views/Timeline/utils.d.ts.map +1 -1
  362. package/lib/Core/Views/Timeline/utils.js +136 -58
  363. package/lib/Core/Views/Timeline/utils.js.map +1 -1
  364. package/lib/Core/Views/rs-styles.d.ts +1 -1
  365. package/lib/Core/a11y/loadingAnnouncementBehavior.d.ts +12 -0
  366. package/lib/Core/a11y/loadingAnnouncementBehavior.d.ts.map +1 -0
  367. package/lib/Core/a11y/loadingAnnouncementBehavior.js +37 -0
  368. package/lib/Core/a11y/loadingAnnouncementBehavior.js.map +1 -0
  369. package/lib/Core/constants.d.ts.map +1 -1
  370. package/lib/Core/constants.js +1 -0
  371. package/lib/Core/constants.js.map +1 -1
  372. package/lib/Core/index.d.ts.map +1 -1
  373. package/lib/Core/index.js +1 -2
  374. package/lib/Core/index.js.map +1 -1
  375. package/lib/Core/templateFeatureSupport.d.ts +17 -0
  376. package/lib/Core/templateFeatureSupport.d.ts.map +1 -0
  377. package/lib/Core/templateFeatureSupport.js +31 -0
  378. package/lib/Core/templateFeatureSupport.js.map +1 -0
  379. package/lib/index.d.ts +1 -1
  380. package/lib/index.d.ts.map +1 -1
  381. package/lib/index.js +1 -1
  382. package/lib/index.js.map +1 -1
  383. package/lib/types/RepeatingStructuresBoot.types.d.ts +12 -8
  384. package/lib/types/RepeatingStructuresBoot.types.d.ts.map +1 -1
  385. package/lib/types/RepeatingStructuresBoot.types.js.map +1 -1
  386. package/lib/types.d.ts +2 -0
  387. package/lib/types.d.ts.map +1 -1
  388. package/lib/types.js.map +1 -1
  389. package/package.json +11 -13
  390. package/lib/Core/Components/DefaultComponents/CardItem.d.ts +0 -3
  391. package/lib/Core/Components/DefaultComponents/CardItem.d.ts.map +0 -1
  392. package/lib/Core/Components/DefaultComponents/CardItem.js +0 -78
  393. package/lib/Core/Components/DefaultComponents/CardItem.js.map +0 -1
  394. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/DateTime.d.ts +0 -12
  395. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/DateTime.d.ts.map +0 -1
  396. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/DateTime.js +0 -36
  397. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/DateTime.js.map +0 -1
  398. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/Radio.d.ts +0 -15
  399. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/Radio.d.ts.map +0 -1
  400. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/Radio.js +0 -50
  401. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/Radio.js.map +0 -1
  402. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/TextInput.d.ts +0 -12
  403. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/TextInput.d.ts.map +0 -1
  404. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/TextInput.js +0 -44
  405. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/TextInput.js.map +0 -1
  406. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/index.d.ts +0 -16
  407. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/index.d.ts.map +0 -1
  408. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/index.js +0 -64
  409. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/index.js.map +0 -1
  410. package/lib/Core/Components/GroupRenderer.d.ts +0 -31
  411. package/lib/Core/Components/GroupRenderer.d.ts.map +0 -1
  412. package/lib/Core/Components/GroupRenderer.js +0 -348
  413. package/lib/Core/Components/GroupRenderer.js.map +0 -1
  414. package/lib/Core/Components/RSWrapper/__mocks__/uuid.d.ts +0 -2
  415. package/lib/Core/Components/RSWrapper/__mocks__/uuid.d.ts.map +0 -1
  416. package/lib/Core/Components/RSWrapper/__mocks__/uuid.js +0 -4
  417. package/lib/Core/Components/RSWrapper/__mocks__/uuid.js.map +0 -1
  418. package/lib/Core/Components/Toolbar/KeyboardInstructions.d.ts +0 -6
  419. package/lib/Core/Components/Toolbar/KeyboardInstructions.d.ts.map +0 -1
  420. package/lib/Core/Components/Toolbar/KeyboardInstructions.js +0 -32
  421. package/lib/Core/Components/Toolbar/KeyboardInstructions.js.map +0 -1
  422. package/lib/Core/Components/Toolbar/Timeline/TimelineToolbar.d.ts +0 -7
  423. package/lib/Core/Components/Toolbar/Timeline/TimelineToolbar.d.ts.map +0 -1
  424. package/lib/Core/Components/Toolbar/Timeline/TimelineToolbar.js +0 -109
  425. package/lib/Core/Components/Toolbar/Timeline/TimelineToolbar.js.map +0 -1
  426. package/lib/Core/Views/Gallery/ItemWrapper.d.ts +0 -19
  427. package/lib/Core/Views/Gallery/ItemWrapper.d.ts.map +0 -1
  428. package/lib/Core/Views/Gallery/ItemWrapper.js +0 -34
  429. package/lib/Core/Views/Gallery/ItemWrapper.js.map +0 -1
  430. package/lib/Core/Views/Gallery/StyledGalleryContainer.d.ts +0 -3
  431. package/lib/Core/Views/Gallery/StyledGalleryContainer.d.ts.map +0 -1
  432. package/lib/Core/Views/Gallery/StyledGalleryContainer.js +0 -51
  433. package/lib/Core/Views/Gallery/StyledGalleryContainer.js.map +0 -1
  434. package/lib/Core/Views/Timeline/utility.d.ts +0 -8
  435. package/lib/Core/Views/Timeline/utility.d.ts.map +0 -1
  436. package/lib/Core/Views/Timeline/utility.js +0 -120
  437. package/lib/Core/Views/Timeline/utility.js.map +0 -1
@@ -1,8 +1,9 @@
1
1
  import { getScrollbarWidth } from 'pega-repeating-structures-core';
2
+ import { isInstance } from '@pega/cosmos-react-core';
2
3
  /**
3
4
  * Calculates the start and end indices for virtualized pagination in a variable-height list.
4
5
  *
5
- * @returns {{ startIndex: number, endIndex: number }} Object containing the calculated start and end indices for rendering (inclusive both indices).
6
+ * @returns Object containing the calculated start and end indices for rendering (inclusive both indices).
6
7
  */
7
8
  export const getVirtualizedPaginationIndices = (param) => {
8
9
  const { totalItemCount, buffer, itemContainerRef, scrollTop, containerRef, itemsHeight, defaultItemHeight, endIndexLimit, isInfiniteMode } = param;
@@ -93,12 +94,12 @@ export const isViewNotFilled = (totalItemCount, itemContainer, parentContainer,
93
94
  let headerHeight = 0;
94
95
  if (renderHeader && parentContainer.childElementCount > 1) {
95
96
  const firstChild = parentContainer.children[0];
96
- if (firstChild instanceof HTMLElement) {
97
+ if (isInstance(firstChild, HTMLDivElement)) {
97
98
  headerHeight = firstChild.offsetHeight;
98
99
  }
99
100
  }
100
101
  const scrollbarWidth = getScrollbarWidth();
101
- const items = Array.from(itemContainer.children).filter((el) => el instanceof HTMLElement);
102
+ const items = Array.from(itemContainer.children);
102
103
  if (!items.length && !totalItemCount)
103
104
  return false;
104
105
  if (!items.length && totalItemCount)
@@ -200,8 +201,8 @@ export const updateItemPositionStyles = (itemContainer, itemsHeight, defaultItem
200
201
  itemContainer.style.top = `${offset}px`;
201
202
  let itemContainerCurrentHeight = 0;
202
203
  let currentItemIndex = firstItemDataIndex;
203
- Array.from(items).forEach((item) => {
204
- if (!(item instanceof HTMLElement))
204
+ Array.from(items).forEach(item => {
205
+ if (!isInstance(item, HTMLDivElement))
205
206
  return;
206
207
  item.style.position = 'absolute';
207
208
  item.style.top = `${itemContainerCurrentHeight}px`;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../Core/Components/Virtualise/VariableHeightVirtualizer/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RefObject } from 'react';\n\nimport { getScrollbarWidth } from 'pega-repeating-structures-core';\n\nimport type { ItemsHeight } from './VariableHeightVirtualizer';\n\ninterface GetVirtualizedPaginationIndicesParams {\n /** Current vertical scroll offset of the container. */\n scrollTop: number;\n /** Ref to the scrolling container element */\n containerRef: RefObject<HTMLElement>;\n /** Ref to the container holding the list items */\n itemContainerRef: RefObject<HTMLElement>;\n\n /** Total number of items. */\n totalItemCount: number;\n /** Mapping of item indices and their actual height. */\n itemsHeight: ItemsHeight;\n /** Default height for items if not measured. */\n defaultItemHeight: number;\n\n /** Number of extra items to render above and below the visible viewport for smooth scrolling. */\n buffer: number;\n /** Maximum allowed end index (exclusive). */\n endIndexLimit: number;\n /** If true, allows indices to exceed totalCount for infinite scrolling by including buffer. */\n isInfiniteMode?: boolean;\n}\n\n/**\n * Calculates the start and end indices for virtualized pagination in a variable-height list.\n *\n * @returns {{ startIndex: number, endIndex: number }} Object containing the calculated start and end indices for rendering (inclusive both indices).\n */\nexport const getVirtualizedPaginationIndices = (\n param: GetVirtualizedPaginationIndicesParams\n): { startIndex: number; endIndex: number } => {\n const {\n totalItemCount,\n buffer,\n itemContainerRef,\n scrollTop,\n containerRef,\n itemsHeight,\n defaultItemHeight,\n endIndexLimit,\n isInfiniteMode\n } = param;\n\n const minimumItemsToFetchOnTop = buffer * 4;\n if (totalItemCount === 0 || itemContainerRef.current?.childElementCount === 0) {\n return { startIndex: 0, endIndex: minimumItemsToFetchOnTop };\n }\n\n const viewportHeight = containerRef.current?.clientHeight || 0;\n\n // Find the first visible item index for the current scroll position\n let aboveTheFoldItemsHeight = 0;\n let visibleStartIndex = 0;\n while (\n visibleStartIndex < totalItemCount &&\n aboveTheFoldItemsHeight + (itemsHeight[visibleStartIndex] ?? defaultItemHeight) < scrollTop\n ) {\n aboveTheFoldItemsHeight += itemsHeight[visibleStartIndex] ?? defaultItemHeight;\n visibleStartIndex += 1;\n }\n\n // Find the last visible item index for the current scroll position\n let inViewItemsHeight = 0;\n let visibleEndIndex = visibleStartIndex;\n while (visibleEndIndex < totalItemCount && inViewItemsHeight < viewportHeight) {\n inViewItemsHeight += itemsHeight[visibleEndIndex] ?? defaultItemHeight;\n visibleEndIndex += 1;\n }\n\n const startIndex = Math.max(0, visibleStartIndex - buffer);\n let endIndex = Math.min(visibleEndIndex + buffer, endIndexLimit - 1);\n if (isInfiniteMode) {\n endIndex = Math.max(endIndex, minimumItemsToFetchOnTop);\n } else {\n // In cases where the count is very less due to filters, we would fetch more items to avoid unnecessary API calls if the count after the filter removed is more\n endIndex = Math.max(Math.min(totalItemCount - 1, endIndex), minimumItemsToFetchOnTop);\n }\n return { startIndex, endIndex };\n};\n\n/**\n * Calculates the total buffer height for a list of items, using their individual heights if available,\n * or a default height otherwise.\n *\n * @param totalItemCount - The total number of items in the list.\n * @param itemsHeight - An object or array containing the heights of individual items, indexed by item position.\n * @param defaultItemHeight - The default height to use for items whose height is not specified in `itemsHeight`.\n * @returns The sum of all item heights, using the default height for any missing values.\n */\nexport const calculateTotalBufferHeight = (\n totalItemCount: number,\n itemsHeight: ItemsHeight,\n defaultItemHeight: number\n): number => {\n let totalBufferHeight = 0;\n for (let i = 0; i < totalItemCount; i += 1) {\n totalBufferHeight += itemsHeight[i] || defaultItemHeight;\n }\n\n return totalBufferHeight;\n};\n\n/**\n * Returns a CSS-compatible max-height value based on the input.\n *\n * @param viewMaxHeight - The maximum height value, which can be a number (pixels), a string (CSS value), or `null`.\n * @returns A string representing the CSS max-height value.\n */\nexport const getMaxHeight = (viewMaxHeight: number | string | null): string => {\n if (!viewMaxHeight) return 'none';\n return typeof viewMaxHeight === 'number' ? `${viewMaxHeight}px` : viewMaxHeight;\n};\n\n/**\n * Calculates the vertical offset for a given item index in a list with variable item heights.\n *\n * @param index - The index of the item for which to calculate the offset.\n * @param itemsHeight - Mapping of item indices and their actual height.\n * @param defaultItemHeight - The default height to use for items not present in the cache.\n * @returns The total offset (in pixels) from the top of the list to the specified index.\n */\nexport const getOffsetForIndex = (\n index: number,\n itemsHeight: ItemsHeight,\n defaultItemHeight: number\n): number => {\n let offset = 0;\n\n for (let i = 0; i < index; i += 1) {\n offset += itemsHeight[i] ?? defaultItemHeight;\n }\n return offset;\n};\n\n/**\n * Determines whether the viewable area of a virtualized list is not fully filled with rendered items.\n *\n * @param totalItemCount - The total number of items that should be rendered.\n * @param itemContainer - The HTML element containing the rendered items.\n * @param parentContainer - The parent HTML element that contains the items and possibly the header.\n * @param renderHeader - Indicates whether a header is rendered at the top of the parent container.\n * @returns `true` if the view is not filled with all items, `false` otherwise.\n */\nexport const isViewNotFilled = (\n totalItemCount: number,\n itemContainer: HTMLElement,\n parentContainer: HTMLElement,\n renderHeader: boolean\n): boolean => {\n const parentContainerPosition = parentContainer.getBoundingClientRect();\n let headerHeight = 0;\n if (renderHeader && parentContainer.childElementCount > 1) {\n const firstChild = parentContainer.children[0];\n if (firstChild instanceof HTMLElement) {\n headerHeight = firstChild.offsetHeight;\n }\n }\n\n const scrollbarWidth = getScrollbarWidth();\n const items = Array.from(itemContainer.children).filter(\n (el): el is HTMLElement => el instanceof HTMLElement\n );\n\n if (!items.length && !totalItemCount) return false;\n if (!items.length && totalItemCount) return true;\n\n return (\n !!totalItemCount &&\n items.length !== totalItemCount &&\n (Math.floor(items[items.length - 1].getBoundingClientRect().bottom) <\n Math.floor(parentContainerPosition.bottom - scrollbarWidth) ||\n Math.floor(items[0].getBoundingClientRect().top) >\n Math.floor(parentContainerPosition.top + headerHeight) ||\n items.length === 0)\n );\n};\n\n/**\n * Retrieves the numeric data index from the `data-index` attribute of a given Element.\n *\n * @param element - The Element from which to extract the data index.\n * @returns The parsed integer value of the `data-index` attribute, or `null` if the attribute is not present.\n */\nexport const getDataIndex = (element: Element): number | null => {\n const dataIndexStr = element?.getAttribute('data-index');\n if (!dataIndexStr) return null;\n const parsedDataIndex = parseInt(dataIndexStr, 10);\n return Number.isNaN(parsedDataIndex) ? null : parsedDataIndex;\n};\n\n/**\n * Calculates and returns an object containing the heights of items whose heights have changed\n * compared to their previous values.\n *\n * @param itemContainer - The container HTMLElement whose child nodes represent items to measure.\n * @param itemsHeight - An object mapping item indices to their measured heights.\n * @param defaultItemHeight - The default height to use for items not present in `itemsHeight`.\n * @returns An object mapping item indices to their new heights for items whose heights have changed.\n */\nexport function getChangedItemsHeight(\n itemContainer: HTMLElement,\n itemsHeight: ItemsHeight,\n defaultItemHeight: number\n): ItemsHeight {\n if (!itemContainer) return {};\n\n const newHeights: ItemsHeight = {};\n const nodes = Array.from(itemContainer.children);\n\n nodes.forEach(node => {\n const itemDataIndex = getDataIndex(node);\n if (itemDataIndex === null) return;\n\n const measuredHeight = node.getBoundingClientRect().height;\n const prevHeight = itemsHeight[itemDataIndex] ?? defaultItemHeight;\n if (measuredHeight !== prevHeight) {\n newHeights[itemDataIndex] = measuredHeight;\n }\n });\n\n return newHeights;\n}\n\n/**\n * Calculates the cumulative change in item heights between two sets of item height data,\n * for a range of items starting from `startIndex` up to (but not including) `previousFirstItemDataIndex`.\n *\n * This function compares the current heights (`itemsHeight`) with the previous heights (`previousItemsHeight`)\n * for each item in the specified range, using `defaultItemHeight` as a fallback if a previous height is missing.\n * The result is the sum of the differences in height for all items in the range.\n *\n * @param startIndex - The index at which to start calculating the cumulative height change.\n * @param previousFirstItemDataIndex - The index up to which to calculate (exclusive). If `null` or less than or equal to 0, returns 0.\n * @param itemsHeight - An object mapping item indices to their measured heights.\n * @param previousItemsHeight - An object mapping item indices of previously rendered items to their heights.\n * @param defaultItemHeight - The default height to use if a previous height is not available.\n * @returns The cumulative change in item heights for the specified range, or 0 if the result is not finite.\n */\nexport const calculateCumulativeItemSizeChange = (\n startIndex: number,\n previousFirstItemDataIndex: number | null,\n itemsHeight: ItemsHeight,\n previousItemsHeight: ItemsHeight,\n defaultItemHeight: number\n): number => {\n if (previousFirstItemDataIndex === null || previousFirstItemDataIndex <= 0) {\n return 0;\n }\n\n let delta = 0;\n\n for (let i = startIndex; i < previousFirstItemDataIndex; i += 1) {\n const actualHeight = itemsHeight[i];\n const previousHeight = previousItemsHeight[i] ?? defaultItemHeight;\n\n if (actualHeight !== null && actualHeight !== undefined) {\n delta += actualHeight - previousHeight;\n }\n }\n\n return Number.isFinite(delta) ? delta : 0;\n};\n\n/**\n * Updates the position styles of child items within a container element to enable virtualized rendering.\n * Sets the container's top offset and positions each child absolutely based on their calculated heights.\n *\n * @param itemContainer - The HTML element containing the list items to be positioned.\n * @param itemsHeight - An object mapping item indices to their measured heights.\n * @param defaultItemHeight - The default height to use for items without a specified height.\n * @returns The total height of all items within the container, rounded down to the nearest integer.\n */\nexport const updateItemPositionStyles = (\n itemContainer: HTMLElement,\n itemsHeight: ItemsHeight,\n defaultItemHeight: number\n): number => {\n const items = itemContainer.children;\n if (!items?.length) {\n return 0;\n }\n\n const firstItemDataIndex = getDataIndex(items[0]);\n if (firstItemDataIndex === null) return 0;\n\n const offset = getOffsetForIndex(firstItemDataIndex, itemsHeight, defaultItemHeight);\n itemContainer.style.top = `${offset}px`;\n\n let itemContainerCurrentHeight = 0;\n let currentItemIndex = firstItemDataIndex;\n Array.from(items).forEach((item: Element) => {\n if (!(item instanceof HTMLElement)) return;\n\n item.style.position = 'absolute';\n item.style.top = `${itemContainerCurrentHeight}px`;\n itemContainerCurrentHeight += itemsHeight[currentItemIndex] ?? defaultItemHeight;\n currentItemIndex += 1;\n });\n\n return Math.floor(itemContainerCurrentHeight);\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../Core/Components/Virtualise/VariableHeightVirtualizer/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RefObject } from 'react';\n\nimport { getScrollbarWidth } from 'pega-repeating-structures-core';\nimport { isInstance } from '@pega/cosmos-react-core';\n\nimport type { ItemsHeight } from './VariableHeightVirtualizer';\n\ninterface GetVirtualizedPaginationIndicesParams {\n /** Current vertical scroll offset of the container. */\n scrollTop: number;\n /** Ref to the scrolling container element */\n containerRef: RefObject<HTMLDivElement>;\n /** Ref to the container holding the list items */\n itemContainerRef: RefObject<HTMLDivElement>;\n\n /** Total number of items. */\n totalItemCount: number;\n /** Mapping of item indices and their actual height. */\n itemsHeight: ItemsHeight;\n /** Default height for items if not measured. */\n defaultItemHeight: number;\n\n /** Number of extra items to render above and below the visible viewport for smooth scrolling. */\n buffer: number;\n /** Maximum allowed end index (exclusive). */\n endIndexLimit: number;\n /** If true, allows indices to exceed totalCount for infinite scrolling by including buffer. */\n isInfiniteMode?: boolean;\n}\n\n/**\n * Calculates the start and end indices for virtualized pagination in a variable-height list.\n *\n * @returns Object containing the calculated start and end indices for rendering (inclusive both indices).\n */\nexport const getVirtualizedPaginationIndices = (\n param: GetVirtualizedPaginationIndicesParams\n): { startIndex: number; endIndex: number } => {\n const {\n totalItemCount,\n buffer,\n itemContainerRef,\n scrollTop,\n containerRef,\n itemsHeight,\n defaultItemHeight,\n endIndexLimit,\n isInfiniteMode\n } = param;\n\n const minimumItemsToFetchOnTop = buffer * 4;\n if (totalItemCount === 0 || itemContainerRef.current?.childElementCount === 0) {\n return { startIndex: 0, endIndex: minimumItemsToFetchOnTop };\n }\n\n const viewportHeight = containerRef.current?.clientHeight || 0;\n\n // Find the first visible item index for the current scroll position\n let aboveTheFoldItemsHeight = 0;\n let visibleStartIndex = 0;\n while (\n visibleStartIndex < totalItemCount &&\n aboveTheFoldItemsHeight + (itemsHeight[visibleStartIndex] ?? defaultItemHeight) < scrollTop\n ) {\n aboveTheFoldItemsHeight += itemsHeight[visibleStartIndex] ?? defaultItemHeight;\n visibleStartIndex += 1;\n }\n\n // Find the last visible item index for the current scroll position\n let inViewItemsHeight = 0;\n let visibleEndIndex = visibleStartIndex;\n while (visibleEndIndex < totalItemCount && inViewItemsHeight < viewportHeight) {\n inViewItemsHeight += itemsHeight[visibleEndIndex] ?? defaultItemHeight;\n visibleEndIndex += 1;\n }\n\n const startIndex = Math.max(0, visibleStartIndex - buffer);\n let endIndex = Math.min(visibleEndIndex + buffer, endIndexLimit - 1);\n if (isInfiniteMode) {\n endIndex = Math.max(endIndex, minimumItemsToFetchOnTop);\n } else {\n // In cases where the count is very less due to filters, we would fetch more items to avoid unnecessary API calls if the count after the filter removed is more\n endIndex = Math.max(Math.min(totalItemCount - 1, endIndex), minimumItemsToFetchOnTop);\n }\n return { startIndex, endIndex };\n};\n\n/**\n * Calculates the total buffer height for a list of items, using their individual heights if available,\n * or a default height otherwise.\n *\n * @param totalItemCount - The total number of items in the list.\n * @param itemsHeight - An object or array containing the heights of individual items, indexed by item position.\n * @param defaultItemHeight - The default height to use for items whose height is not specified in `itemsHeight`.\n * @returns The sum of all item heights, using the default height for any missing values.\n */\nexport const calculateTotalBufferHeight = (\n totalItemCount: number,\n itemsHeight: ItemsHeight,\n defaultItemHeight: number\n): number => {\n let totalBufferHeight = 0;\n for (let i = 0; i < totalItemCount; i += 1) {\n totalBufferHeight += itemsHeight[i] || defaultItemHeight;\n }\n\n return totalBufferHeight;\n};\n\n/**\n * Returns a CSS-compatible max-height value based on the input.\n *\n * @param viewMaxHeight - The maximum height value, which can be a number (pixels), a string (CSS value), or `null`.\n * @returns A string representing the CSS max-height value.\n */\nexport const getMaxHeight = (viewMaxHeight: number | string | null): string => {\n if (!viewMaxHeight) return 'none';\n return typeof viewMaxHeight === 'number' ? `${viewMaxHeight}px` : viewMaxHeight;\n};\n\n/**\n * Calculates the vertical offset for a given item index in a list with variable item heights.\n *\n * @param index - The index of the item for which to calculate the offset.\n * @param itemsHeight - Mapping of item indices and their actual height.\n * @param defaultItemHeight - The default height to use for items not present in the cache.\n * @returns The total offset (in pixels) from the top of the list to the specified index.\n */\nexport const getOffsetForIndex = (\n index: number,\n itemsHeight: ItemsHeight,\n defaultItemHeight: number\n): number => {\n let offset = 0;\n\n for (let i = 0; i < index; i += 1) {\n offset += itemsHeight[i] ?? defaultItemHeight;\n }\n return offset;\n};\n\n/**\n * Determines whether the viewable area of a virtualized list is not fully filled with rendered items.\n *\n * @param totalItemCount - The total number of items that should be rendered.\n * @param itemContainer - The HTML element containing the rendered items.\n * @param parentContainer - The parent HTML element that contains the items and possibly the header.\n * @param renderHeader - Indicates whether a header is rendered at the top of the parent container.\n * @returns `true` if the view is not filled with all items, `false` otherwise.\n */\nexport const isViewNotFilled = (\n totalItemCount: number,\n itemContainer: HTMLDivElement,\n parentContainer: HTMLDivElement,\n renderHeader: boolean\n): boolean => {\n const parentContainerPosition = parentContainer.getBoundingClientRect();\n let headerHeight = 0;\n if (renderHeader && parentContainer.childElementCount > 1) {\n const firstChild = parentContainer.children[0];\n if (isInstance(firstChild, HTMLDivElement)) {\n headerHeight = firstChild.offsetHeight;\n }\n }\n\n const scrollbarWidth = getScrollbarWidth();\n const items = Array.from(itemContainer.children);\n\n if (!items.length && !totalItemCount) return false;\n if (!items.length && totalItemCount) return true;\n\n return (\n !!totalItemCount &&\n items.length !== totalItemCount &&\n (Math.floor(items[items.length - 1].getBoundingClientRect().bottom) <\n Math.floor(parentContainerPosition.bottom - scrollbarWidth) ||\n Math.floor(items[0].getBoundingClientRect().top) >\n Math.floor(parentContainerPosition.top + headerHeight) ||\n items.length === 0)\n );\n};\n\n/**\n * Retrieves the numeric data index from the `data-index` attribute of a given Element.\n *\n * @param element - The Element from which to extract the data index.\n * @returns The parsed integer value of the `data-index` attribute, or `null` if the attribute is not present.\n */\nexport const getDataIndex = (element: Element): number | null => {\n const dataIndexStr = element?.getAttribute('data-index');\n if (!dataIndexStr) return null;\n const parsedDataIndex = parseInt(dataIndexStr, 10);\n return Number.isNaN(parsedDataIndex) ? null : parsedDataIndex;\n};\n\n/**\n * Calculates and returns an object containing the heights of items whose heights have changed\n * compared to their previous values.\n *\n * @param itemContainer - The container HTMLElement whose child nodes represent items to measure.\n * @param itemsHeight - An object mapping item indices to their measured heights.\n * @param defaultItemHeight - The default height to use for items not present in `itemsHeight`.\n * @returns An object mapping item indices to their new heights for items whose heights have changed.\n */\nexport function getChangedItemsHeight(\n itemContainer: HTMLDivElement,\n itemsHeight: ItemsHeight,\n defaultItemHeight: number\n): ItemsHeight {\n if (!itemContainer) return {};\n\n const newHeights: ItemsHeight = {};\n const nodes = Array.from(itemContainer.children);\n\n nodes.forEach(node => {\n const itemDataIndex = getDataIndex(node);\n if (itemDataIndex === null) return;\n\n const measuredHeight = node.getBoundingClientRect().height;\n const prevHeight = itemsHeight[itemDataIndex] ?? defaultItemHeight;\n if (measuredHeight !== prevHeight) {\n newHeights[itemDataIndex] = measuredHeight;\n }\n });\n\n return newHeights;\n}\n\n/**\n * Calculates the cumulative change in item heights between two sets of item height data,\n * for a range of items starting from `startIndex` up to (but not including) `previousFirstItemDataIndex`.\n *\n * This function compares the current heights (`itemsHeight`) with the previous heights (`previousItemsHeight`)\n * for each item in the specified range, using `defaultItemHeight` as a fallback if a previous height is missing.\n * The result is the sum of the differences in height for all items in the range.\n *\n * @param startIndex - The index at which to start calculating the cumulative height change.\n * @param previousFirstItemDataIndex - The index up to which to calculate (exclusive). If `null` or less than or equal to 0, returns 0.\n * @param itemsHeight - An object mapping item indices to their measured heights.\n * @param previousItemsHeight - An object mapping item indices of previously rendered items to their heights.\n * @param defaultItemHeight - The default height to use if a previous height is not available.\n * @returns The cumulative change in item heights for the specified range, or 0 if the result is not finite.\n */\nexport const calculateCumulativeItemSizeChange = (\n startIndex: number,\n previousFirstItemDataIndex: number | null,\n itemsHeight: ItemsHeight,\n previousItemsHeight: ItemsHeight,\n defaultItemHeight: number\n): number => {\n if (previousFirstItemDataIndex === null || previousFirstItemDataIndex <= 0) {\n return 0;\n }\n\n let delta = 0;\n\n for (let i = startIndex; i < previousFirstItemDataIndex; i += 1) {\n const actualHeight = itemsHeight[i];\n const previousHeight = previousItemsHeight[i] ?? defaultItemHeight;\n\n if (actualHeight !== null && actualHeight !== undefined) {\n delta += actualHeight - previousHeight;\n }\n }\n\n return Number.isFinite(delta) ? delta : 0;\n};\n\n/**\n * Updates the position styles of child items within a container element to enable virtualized rendering.\n * Sets the container's top offset and positions each child absolutely based on their calculated heights.\n *\n * @param itemContainer - The HTML element containing the list items to be positioned.\n * @param itemsHeight - An object mapping item indices to their measured heights.\n * @param defaultItemHeight - The default height to use for items without a specified height.\n * @returns The total height of all items within the container, rounded down to the nearest integer.\n */\nexport const updateItemPositionStyles = (\n itemContainer: HTMLDivElement,\n itemsHeight: ItemsHeight,\n defaultItemHeight: number\n): number => {\n const items = itemContainer.children;\n if (!items?.length) {\n return 0;\n }\n\n const firstItemDataIndex = getDataIndex(items[0]);\n if (firstItemDataIndex === null) return 0;\n\n const offset = getOffsetForIndex(firstItemDataIndex, itemsHeight, defaultItemHeight);\n itemContainer.style.top = `${offset}px`;\n\n let itemContainerCurrentHeight = 0;\n let currentItemIndex = firstItemDataIndex;\n Array.from(items).forEach(item => {\n if (!isInstance(item, HTMLDivElement)) return;\n\n item.style.position = 'absolute';\n item.style.top = `${itemContainerCurrentHeight}px`;\n itemContainerCurrentHeight += itemsHeight[currentItemIndex] ?? defaultItemHeight;\n currentItemIndex += 1;\n });\n\n return Math.floor(itemContainerCurrentHeight);\n};\n"]}
@@ -42,6 +42,10 @@ const StyledLoader = Styled.div `
42
42
  top: ${props => props.$style.top};
43
43
  bottom: ${props => props.$style.bottom};
44
44
  `;
45
+ const PAGINATION_TRIGGER_RATIOS = {
46
+ down: 0.9,
47
+ up: 0.1
48
+ };
45
49
  const VirtualizeInfinite = forwardRef(({ id, viewHeight, viewWidth, itemHeight, callback, rowContainerClass, children, renderHeader, renderFooter, state, bufferMultiplier, viewMaxHeight, showLoadingIndicator, resetCount, countUpdateCallback, isFetching, hasMoreResults, renderEmptyRecords }, inputRef) => {
46
50
  const rowBuffer = 5;
47
51
  const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();
@@ -113,7 +117,7 @@ const VirtualizeInfinite = forwardRef(({ id, viewHeight, viewWidth, itemHeight,
113
117
  });
114
118
  }
115
119
  }
116
- callback({ ...vi.pInfo.view, id });
120
+ callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });
117
121
  }
118
122
  else if (resetIsFetchingWhenNoNewIndexes) {
119
123
  setLoadingIndicatorInfo({});
@@ -158,7 +162,7 @@ const VirtualizeInfinite = forwardRef(({ id, viewHeight, viewWidth, itemHeight,
158
162
  setRContainerDimensionUpdate({});
159
163
  }, [getRowContainer]);
160
164
  useResizeObserver(getRowContainer, onRowContainerDimensionChange);
161
- const [updateScrollTop] = useScroll(getPagination, getPContainer, vi, getTotalRowsIncludingBuffer(), renderHeader, isFetching, viewHeight);
165
+ const [updateScrollTop] = useScroll(getPagination, getPContainer, vi, getTotalRowsIncludingBuffer(), renderHeader, isFetching, viewHeight, PAGINATION_TRIGGER_RATIOS);
162
166
  useLayoutEffect(() => {
163
167
  const rContainer = getRowContainer();
164
168
  if (state && state.startIndex >= 0 && vi && rContainer) {
@@ -249,7 +253,7 @@ const VirtualizeInfinite = forwardRef(({ id, viewHeight, viewWidth, itemHeight,
249
253
  ]);
250
254
  return (_jsxs(StyledPContainer, { "$style": {
251
255
  maxHeight,
252
- minHeight: vi.totalRowsLoaded === 0 ? '100px' : 'auto',
256
+ minHeight: !vi.totalRowsLoaded ? '100px' : 'auto',
253
257
  renderFooter,
254
258
  itemHeight,
255
259
  height,
@@ -260,7 +264,13 @@ const VirtualizeInfinite = forwardRef(({ id, viewHeight, viewWidth, itemHeight,
260
264
  vi.bContainer = c;
261
265
  }, children: _jsxs("div", { className: `${rowContainerClass} row-container`, ref: c => {
262
266
  vi.rContainer = c;
263
- }, role: 'rowgroup', children: [showLoadingIndicator && isFetching && loadingIndicatorInfo.isScrollingUp && (_jsx(StyledLoader, { "$style": { bottom: '100%' }, children: _jsx(Progress, { className: 'above-loader', placement: 'block', tabIndex: 0, "aria-label": translate('Loading more results') }) })), children, showLoadingIndicator && isFetching && loadingIndicatorInfo.isScrollingDown && (_jsx(StyledLoader, { "$style": { top: '100%' }, children: _jsx(Progress, { className: 'below-loader', placement: 'block', tabIndex: 0, "aria-label": translate('Loading more results') }) }))] }) }), vi.totalRowsLoaded === 0 && !isFetching
267
+ }, role: 'rowgroup', children: [vi.totalRowsLoaded >= 0 &&
268
+ showLoadingIndicator &&
269
+ isFetching &&
270
+ loadingIndicatorInfo.isScrollingUp && (_jsx(StyledLoader, { "$style": { bottom: '100%' }, children: _jsx(Progress, { className: 'above-loader', placement: 'block', tabIndex: 0, "aria-label": translate('Loading more results') }) })), children, vi.totalRowsLoaded >= 0 &&
271
+ showLoadingIndicator &&
272
+ isFetching &&
273
+ loadingIndicatorInfo.isScrollingDown && (_jsx(StyledLoader, { "$style": { top: '100%' }, children: _jsx(Progress, { className: 'below-loader', placement: 'block', tabIndex: 0, "aria-label": translate('Loading more results') }) }))] }) }), vi.totalRowsLoaded === 0 && !isFetching
264
274
  ? renderEmptyRecords && renderEmptyRecords()
265
275
  : null, renderFooter && renderFooter()] }));
266
276
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizeInfinite.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/VirtualizeInfinite.jsx"],"names":[],"mappings":";AAAA,OAAO,EACL,UAAU,EACV,IAAI,EACJ,SAAS,EACT,MAAM,EACN,WAAW,EACX,mBAAmB,EACnB,OAAO,EACP,eAAe,EACf,QAAQ,EACT,MAAM,OAAO,CAAC;AACf,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,iBAAiB,MAAM,cAAc,CAAC;AAC7C,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,WAAW,CAAC;AACnB,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,SAAS,sBAAsB,CAAC,KAAK;IACnC,OAAO,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AAChG,CAAC;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAA;;;wBAGX,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;mBACpC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;oBAC1B,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;wBACxB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;;;kBAGrC,iBAAiB;;;;;;0BAMT,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC;;;CAG/D,CAAC;AAEF,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEjD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;eAMhB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;kBACtB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;CAC7C,CAAC;AAEF,MAAM,kBAAkB,GAAG,UAAU,CACnC,CACE,EACE,EAAE,EACF,UAAU,EACV,SAAS,EACT,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,kBAAkB,EACnB,EACD,QAAQ,EACR,EAAE;IACF,MAAM,SAAS,GAAG,CAAC,CAAC;IAEpB,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,CAAC,GAAG,QAAQ,EAAE,CAAC;IAC7E,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IAEnC,+CAA+C;IAC/C,MAAM,EAAE,GAAG,MAAM,CAAC;QAChB,UAAU;QACV,gBAAgB;QAChB,KAAK,EAAE,EAAE;QACT,eAAe,EAAE,SAAS;QAC1B,aAAa,EAAE,KAAK;KACrB,CAAC,CAAC,OAAO,CAAC;IAEX,2IAA2I;IAC3I,MAAM,aAAa,GAAG,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAEzE,MAAM,2BAA2B,GAAG,WAAW,CAAC,GAAG,EAAE;QACnD,IAAI,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC;YAAE,OAAO;QACxC,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC;IAC9E,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;IAEzC,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAExE,6DAA6D;IAC7D,gEAAgE;IAChE,uEAAuE;IACvE,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,aAAa,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC;QAC9B,EAAE,CAAC,KAAK,GAAG,iBAAiB,CAC1B,aAAa,EAAE,EACf,4BAA4B,CAAC,2BAA2B,EAAE,CAAC,EAC3D,EAAE,EACF,KAAK,EACL,IAAI,CACL,CAAC;QACF,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAErD,iEAAiE;IACjE,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACnC,kBAAkB,EAAE,aAAa;QACjC,WAAW;QACX,EAAE;QACF,EAAE;KACH,CAAC,CAAC,CAAC;IAEJ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAC/B,GAAG,EAAE,CAAC,CAAC;QACL,KAAK,EAAE,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC;QAC1C,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7C,CAAC,EACF,CAAC,SAAS,EAAE,UAAU,CAAC,CACxB,CAAC;IAEF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAE9E,wDAAwD;IACxD,sEAAsE;IACtE,2EAA2E;IAC3E,mDAAmD;IACnD,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,SAAS,GAAG,KAAK,EAAE,+BAA+B,GAAG,KAAK,EAAE,EAAE;QAC7D,IAAI,CAAC,UAAU,IAAI,+BAA+B,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,iBAAiB,CAC7B,aAAa,EAAE,EACf,4BAA4B,CAAC,2BAA2B,EAAE,CAAC,EAC3D,EAAE,EACF,SAAS,EACT,IAAI,CACL,CAAC;YACF,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;YAC5C,uFAAuF;YACvF,IACE,SAAS;gBACT,CAAC,KAAK;gBACN,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,EAC/D,CAAC;gBACD,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;gBACjB,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;oBACnE,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;wBAC/B,uBAAuB,CAAC,IAAI,CAAC,EAAE;4BAC7B,OAAO,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;wBAC1C,CAAC,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;wBAC3B,uBAAuB,CAAC,IAAI,CAAC,EAAE;4BAC7B,OAAO,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;wBAC5C,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACrC,CAAC;iBAAM,IAAI,+BAA+B,EAAE,CAAC;gBAC3C,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC,EACD,CAAC,UAAU,EAAE,aAAa,EAAE,2BAA2B,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAClF,CAAC;IAEF,6CAA6C;IAC7C,MAAM,iCAAiC,GAAG,WAAW,CACnD,iBAAiB,CAAC,EAAE;QAClB,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,GACnF,iBAAiB,CAAC;QACpB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;YAChB,SAAS,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC;YACtD,kBAAkB,EAChB,CAAC,kBAAkB,GAAG,EAAE,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,GAAG,CAAC;YACxE,0BAA0B,EACxB,CAAC,0BAA0B,GAAG,EAAE,CAAC,0BAA0B;gBACzD,0BAA0B,CAAC,GAAG,CAAC;YACnC,gBAAgB,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,GAAG,CAAC;SACnF,CAAC,CAAC;IACL,CAAC,EACD,CAAC,EAAE,CAAC,CACL,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,iBAAiB,CAAC,EAAE;QAClB,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,SAAS,GAAG,CAAC;YACf,CAAC;gBACC,CAAC,4BAA4B,CAAC,2BAA2B,EAAE,CAAC,GAAG,SAAS,CAAC;oBACzE,kBAAkB,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC,EACD,CAAC,2BAA2B,CAAC,CAC9B,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,iBAAiB,CAAC,EAAE;QAClB,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,CAAC;QAC5D,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,mBAAmB;YACvB,uDAAuD;YACvD,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;YACrE,SAAS,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;QAC5F,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,EACD,CAAC,EAAE,CAAC,CACL,CAAC;IAEF,MAAM,6BAA6B,GAAG,WAAW,CAAC,GAAG,EAAE;QACrD,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAC5D,eAAe,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;QACnD,mFAAmF;QACnF,IAAI,kBAAkB,IAAI,iBAAiB;YAAE,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,iBAAiB,CAAC,eAAe,EAAE,6BAA6B,CAAC,CAAC;IAElE,MAAM,CAAC,eAAe,CAAC,GAAG,SAAS,CACjC,aAAa,EACb,aAAa,EACb,EAAE,EACF,2BAA2B,EAAE,EAC7B,YAAY,EACZ,UAAU,EACV,UAAU,CACX,CAAC;IAEF,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC;YACvD,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,UAAU,IAAI,CAAC,aAAa;YAAE,OAAO;QAEzC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC1E,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAC3B,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACxB,EAAE,CAAC,eAAe,GAAG,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAE1F,yGAAyG;QACzG,IAAI,QAAQ,GAAG,2BAA2B,EAAE,IAAI,CAAC,UAAU;YAAE,OAAO;QAEpE,EAAE,CAAC,eAAe,GAAG,gBAAgB,GAAG,CAAC,CAAC;QAC1C,mBAAmB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,wCAAwC;IACxC,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,aAAa;YAAE,OAAO;QAE3B,EAAE,CAAC,iBAAiB,GAAG,oBAAoB,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;QACrE,iCAAiC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAChD,aAAa,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;IAC1C,CAAC,EAAE;QACD,EAAE;QACF,QAAQ;QACR,yBAAyB;QACzB,aAAa;QACb,eAAe;QACf,eAAe;QACf,2BAA2B;QAC3B,iCAAiC;KAClC,CAAC,CAAC;IAEH,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,UAAU,IAAI,CAAC,aAAa;YAAE,OAAO;QAEzC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;QACrD,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;QAErE,6GAA6G;QAC7G,yEAAyE;QACzE,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACtC,qBAAqB,CACnB,EAAE,EACF,4BAA4B,CAAC,2BAA2B,EAAE,CAAC,EAC3D,KAAK,EACL,UAAU,EACV,UAAU,CAAC,SAAS,CACrB,CAAC;IACJ,CAAC,EAAE;QACD,EAAE;QACF,KAAK;QACL,UAAU;QACV,YAAY;QACZ,aAAa;QACb,eAAe;QACf,2BAA2B;KAC5B,CAAC,CAAC;IAEH,wEAAwE;IACxE,uHAAuH;IACvH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU;YAAE,OAAO;QAEvB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IACE,eAAe,CACb,4BAA4B,CAAC,2BAA2B,EAAE,CAAC,EAC3D,EAAE,EACF,aAAa,EAAE,EACf,YAAY,CACb,EACD,CAAC;YACD,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,EAAE;QACD,EAAE;QACF,UAAU;QACV,QAAQ;QACR,SAAS;QACT,UAAU;QACV,YAAY;QACZ,yBAAyB;QACzB,aAAa;QACb,aAAa;QACb,2BAA2B;KAC5B,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,gBAAgB,cACP;YACN,SAAS;YACT,SAAS,EAAE,EAAE,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YACtD,YAAY;YACZ,UAAU;YACV,MAAM;YACN,KAAK;SACN,wBACmB,EAAE,CAAC,eAAe,EACtC,SAAS,EAAC,YAAY,EACtB,GAAG,EAAE,CAAC,CAAC,EAAE;YACP,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,CAAC,aAEA,YAAY,IAAI,YAAY,EAAE,EAC/B,cACE,SAAS,EAAC,YAAY,EACtB,GAAG,EAAE,CAAC,CAAC,EAAE;oBACP,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,CAAC,YAED,eACE,SAAS,EAAE,GAAG,iBAAiB,gBAAgB,EAC/C,GAAG,EAAE,CAAC,CAAC,EAAE;wBACP,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;oBACpB,CAAC,EACD,IAAI,EAAC,UAAU,aAEd,oBAAoB,IAAI,UAAU,IAAI,oBAAoB,CAAC,aAAa,IAAI,CAC3E,KAAC,YAAY,cAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YACtC,KAAC,QAAQ,IACP,SAAS,EAAC,cAAc,EACxB,SAAS,EAAC,OAAO,EACjB,QAAQ,EAAE,CAAC,gBACC,SAAS,CAAC,sBAAsB,CAAC,GAC7C,GACW,CAChB,EACA,QAAQ,EACR,oBAAoB,IAAI,UAAU,IAAI,oBAAoB,CAAC,eAAe,IAAI,CAC7E,KAAC,YAAY,cAAS,EAAE,GAAG,EAAE,MAAM,EAAE,YACnC,KAAC,QAAQ,IACP,SAAS,EAAC,cAAc,EACxB,SAAS,EAAC,OAAO,EACjB,QAAQ,EAAE,CAAC,gBACC,SAAS,CAAC,sBAAsB,CAAC,GAC7C,GACW,CAChB,IACG,GACF,EACL,EAAE,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,UAAU;gBACtC,CAAC,CAAC,kBAAkB,IAAI,kBAAkB,EAAE;gBAC5C,CAAC,CAAC,IAAI,EACP,YAAY,IAAI,YAAY,EAAE,IACd,CACpB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,kBAAkB,CAAC,SAAS,GAAG;IAC7B,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IAC/B,UAAU,EAAE,SAAS,CAAC,MAAM;IAC5B,SAAS,EAAE,SAAS,CAAC,MAAM;IAC3B,UAAU,EAAE,SAAS,CAAC,MAAM;IAC5B,QAAQ,EAAE,SAAS,CAAC,IAAI;IACxB,UAAU,EAAE,SAAS,CAAC,IAAI;IAC1B,cAAc,EAAE,SAAS,CAAC,IAAI;IAC9B,iBAAiB,EAAE,SAAS,CAAC,MAAM;IACnC,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;IAC7E,YAAY,EAAE,SAAS,CAAC,IAAI;IAC5B,YAAY,EAAE,SAAS,CAAC,IAAI;IAC5B,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;QACrB,UAAU,EAAE,SAAS,CAAC,MAAM;QAC5B,QAAQ,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC;IACF,gBAAgB,EAAE,SAAS,CAAC,MAAM;IAClC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxE,oBAAoB,EAAE,SAAS,CAAC,IAAI;IACpC,UAAU,EAAE,SAAS,CAAC,IAAI;IAC1B,mBAAmB,EAAE,SAAS,CAAC,IAAI;IACnC,kBAAkB,EAAE,SAAS,CAAC,IAAI;CACnC,CAAC;AAEF,kBAAkB,CAAC,YAAY,GAAG;IAChC,gBAAgB,EAAE,CAAC;IACnB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;IAClB,UAAU,EAAE,KAAK;IACjB,cAAc,EAAE,KAAK;IACrB,iBAAiB,EAAE,EAAE;IACrB,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,EAAE;IACd,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;IAClB,KAAK,EAAE,SAAS;IAChB,aAAa,EAAE,SAAS;IACxB,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE,KAAK;IACjB,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC7B,kBAAkB,EAAE,IAAI;CACzB,CAAC;AAEF,kBAAkB,CAAC,WAAW,GAAG,oBAAoB,CAAC;AAEtD,eAAe,IAAI,CAAC,kBAAkB,CAAC,CAAC","sourcesContent":["import {\n forwardRef,\n memo,\n useEffect,\n useRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useLayoutEffect,\n useState\n} from 'react';\nimport Styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nimport { defaultThemeProp, Progress } from '@pega/cosmos-react-core';\nimport { isEmpty } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport { StyledSkeletonRow } from '../../Views/Table/SkeletonRows';\n\nimport getPaginationInfo from './Pagination';\nimport useScroll from './UseScroll';\nimport {\n getCurrentEstimation,\n getRecordCountForLayoutPaint,\n getValueWithUnit,\n getMaxHeight,\n isViewNotFilled,\n setAttributesOnItems,\n updateRowContainerTop\n} from './utility';\nimport useResizeObserver from './UseResizeObserver';\n\nfunction getBContainerMinHeight(props) {\n return props.$style.renderFooter ? `calc(100% - ${2 * props.$style.itemHeight + 1}px) ` : '0';\n}\n\nconst StyledPContainer = Styled.div`\n position: relative;\n overflow: auto;\n max-height: ${props => props.$style.maxHeight};\n width: ${props => props.$style.width};\n height: ${props => props.$style.height};\n min-height: ${props => props.$style.minHeight};\n border-radius: inherit;\n\n &:has(${StyledSkeletonRow}) {\n overflow: hidden;\n }\n\n .bContainer {\n position: relative;\n min-height: ${props => getBContainerMinHeight(props)};\n border-radius: inherit;\n }\n`;\n\nStyledPContainer.defaultProps = defaultThemeProp;\n\nconst StyledLoader = Styled.div`\n display: flex;\n justify-content: center;\n padding: 0.5rem;\n position: absolute;\n width: 100%;\n top: ${props => props.$style.top};\n bottom: ${props => props.$style.bottom};\n`;\n\nconst VirtualizeInfinite = forwardRef(\n (\n {\n id,\n viewHeight,\n viewWidth,\n itemHeight,\n callback,\n rowContainerClass,\n children,\n renderHeader,\n renderFooter,\n state,\n bufferMultiplier,\n viewMaxHeight,\n showLoadingIndicator,\n resetCount,\n countUpdateCallback,\n isFetching,\n hasMoreResults,\n renderEmptyRecords\n },\n inputRef\n ) => {\n const rowBuffer = 5;\n\n const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();\n const [loadingIndicatorInfo, setLoadingIndicatorInfo] = useState({});\n const [translate] = useTranslate();\n\n // Create ref to store virtualize related data.\n const vi = useRef({\n itemHeight,\n bufferMultiplier,\n pInfo: {},\n totalRowsLoaded: undefined,\n isInitialized: false\n }).current;\n\n // tracking both state and pInfo.view to identify the initialization as in case of fullscreen, state will be available but pInfo.view won't\n const isInitialized = state && !!Object.keys(vi.pInfo.view ?? {}).length;\n\n const getTotalRowsIncludingBuffer = useCallback(() => {\n if (isEmpty(vi.totalRowsLoaded)) return;\n return hasMoreResults ? vi.totalRowsLoaded + rowBuffer : vi.totalRowsLoaded;\n }, [vi.totalRowsLoaded, hasMoreResults]);\n\n const getRowContainer = useCallback(() => vi.rContainer, [vi.rContainer]);\n const getPContainer = useCallback(() => vi.pContainer, [vi.pContainer]);\n const getBContainer = useCallback(() => vi.bContainer, [vi.bContainer]);\n\n // API used when user want to scroll to top programmatically.\n // Though component auto scroll to top if no element is in view.\n // But calling this API upfront might save one extra call to Fetch API.\n const scrollToTop = useCallback(() => {\n if (!isInitialized) return;\n getPContainer().scrollTop = 0;\n vi.pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n false,\n true\n );\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }, [id, vi, getPContainer, callback, isInitialized]);\n\n // expose APIs and properties here to help client to communicate.\n useImperativeHandle(inputRef, () => ({\n getParentContainer: getPContainer,\n scrollToTop,\n vi,\n id\n }));\n\n const { width, height } = useMemo(\n () => ({\n width: getValueWithUnit(viewWidth, '100%'),\n height: getValueWithUnit(viewHeight, 'auto')\n }),\n [viewWidth, viewHeight]\n );\n\n const maxHeight = useMemo(() => getMaxHeight(viewMaxHeight), [viewMaxHeight]);\n\n // Calculate the pagination indexes and notify callback.\n // resetIsFetchingWhenNoNewIndexes - flag specific for isViewNotFilled\n // If view is not filled, we want to call this but resting isFetch to false\n // goes to this method when callback is note fired.\n const getPagination = useCallback(\n (isRefresh = false, resetIsFetchingWhenNoNewIndexes = false) => {\n if (!isFetching || resetIsFetchingWhenNoNewIndexes) {\n const pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n isRefresh,\n true\n );\n const { startIndex, endIndex } = pInfo.view;\n // if new indexes are subset of existing state indexes, no need to update the consumer.\n if (\n isRefresh ||\n !state ||\n !(startIndex >= state.startIndex && endIndex <= state.endIndex)\n ) {\n vi.pInfo = pInfo;\n if (state) {\n const { startIndex: oldStartIndex, endIndex: oldEndIndex } = state;\n if (startIndex < oldStartIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingUp: true };\n });\n }\n if (endIndex > oldEndIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingDown: true };\n });\n }\n }\n\n callback({ ...vi.pInfo.view, id });\n } else if (resetIsFetchingWhenNoNewIndexes) {\n setLoadingIndicatorInfo({});\n }\n }\n },\n [isFetching, getPContainer, getTotalRowsIncludingBuffer, vi, state, callback, id]\n );\n\n // update average stats for next calculation.\n const updateAvarageInVirtualizeInstance = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight, averageNumberOfItemsInARow, averageRowHeight } =\n currentEstimation;\n Object.assign(vi, {\n itemCount: (itemCount + vi.itemCount || itemCount) / 2,\n rowContainerHeight:\n (rowContainerHeight + vi.rowContainerHeight || rowContainerHeight) / 2,\n averageNumberOfItemsInARow:\n (averageNumberOfItemsInARow + vi.averageNumberOfItemsInARow ||\n averageNumberOfItemsInARow) / 2,\n averageRowHeight: (averageRowHeight + vi.averageRowHeight || averageRowHeight) / 2\n });\n },\n [vi]\n );\n\n const getBufferHeight = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let h = 0;\n if (itemCount > 0)\n h =\n (getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()) / itemCount) *\n rowContainerHeight;\n return h;\n },\n [getTotalRowsIncludingBuffer]\n );\n\n const getScrollTop = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let scrollTop = 0;\n if (itemCount > 0) {\n const scrollNodeTopChange =\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.bufferNewCords?.top - vi.pInfo?.bufferOldCords?.top || 0;\n scrollTop = (vi.pInfo.topRowIndex / itemCount) * rowContainerHeight - scrollNodeTopChange;\n }\n return scrollTop;\n },\n [vi]\n );\n\n const onRowContainerDimensionChange = useCallback(() => {\n const { height: rowContainerHeight, width: rowContainerWidth } =\n getRowContainer()?.getBoundingClientRect() ?? {};\n // trigger virtualizer operations only when row container has some height and width\n if (rowContainerHeight && rowContainerWidth) setRContainerDimensionUpdate({});\n }, [getRowContainer]);\n\n useResizeObserver(getRowContainer, onRowContainerDimensionChange);\n\n const [updateScrollTop] = useScroll(\n getPagination,\n getPContainer,\n vi,\n getTotalRowsIncludingBuffer(),\n renderHeader,\n isFetching,\n viewHeight\n );\n\n useLayoutEffect(() => {\n const rContainer = getRowContainer();\n if (state && state.startIndex >= 0 && vi && rContainer) {\n setAttributesOnItems(state, rContainer);\n }\n });\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const rowElements = Array.from(getRowContainer().children || []).filter(a =>\n a.hasAttribute('data-key')\n );\n if (!rowElements.length) {\n vi.totalRowsLoaded = 0;\n return;\n }\n\n const lastRow = rowElements[rowElements.length - 1];\n const lastRowDataIndex = parseInt(lastRow.getAttribute('data-index'), 10);\n const newCount = hasMoreResults ? lastRowDataIndex + 1 + rowBuffer : lastRowDataIndex + 1;\n\n // if user is scrolling up/down within the already encountered records, the record count shouldn't update\n if (newCount < getTotalRowsIncludingBuffer() && !resetCount) return;\n\n vi.totalRowsLoaded = lastRowDataIndex + 1;\n countUpdateCallback(vi.totalRowsLoaded);\n }, [children, isFetching]);\n\n // Get estimate and update buffer height\n useLayoutEffect(() => {\n if (!isInitialized) return;\n\n vi.currentEstimation = getCurrentEstimation(getRowContainer(), true);\n updateAvarageInVirtualizeInstance(vi.currentEstimation);\n const h = getBufferHeight(vi.currentEstimation);\n getBContainer().style.height = `${h}px`;\n }, [\n vi,\n children,\n rContainerDimensionUpdate,\n getBContainer,\n getBufferHeight,\n getRowContainer,\n getTotalRowsIncludingBuffer,\n updateAvarageInVirtualizeInstance\n ]);\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const pContainer = getPContainer();\n const scrollTop = getScrollTop(vi.currentEstimation);\n if (vi.pInfo.view.startIndex !== 0) pContainer.scrollTop = scrollTop;\n\n // Setting scrollTop from pContainer.scrollTop as getScrollTop can return value with higher decimal accuracy.\n // but scrollTop attribute from HTML element will round it automatically.\n updateScrollTop(pContainer.scrollTop);\n updateRowContainerTop(\n vi,\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n state,\n pContainer,\n pContainer.scrollTop\n );\n }, [\n vi,\n state,\n isFetching,\n getScrollTop,\n getPContainer,\n updateScrollTop,\n getTotalRowsIncludingBuffer\n ]);\n\n // On mount that means state is not initialized yet, trigger pagination.\n // or whenever count changes or width /height of view port changes, if view is not filled with data, get indexes again.\n useEffect(() => {\n if (isFetching) return;\n\n if (!isInitialized) {\n getPagination(true);\n return;\n }\n\n if (\n isViewNotFilled(\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n getPContainer(),\n renderHeader\n )\n ) {\n getPagination(false, true);\n } else {\n setLoadingIndicatorInfo({});\n }\n }, [\n vi,\n isFetching,\n children,\n viewWidth,\n viewHeight,\n renderHeader,\n rContainerDimensionUpdate,\n getPagination,\n getPContainer,\n getTotalRowsIncludingBuffer\n ]);\n\n return (\n <StyledPContainer\n $style={{\n maxHeight,\n minHeight: vi.totalRowsLoaded === 0 ? '100px' : 'auto',\n renderFooter,\n itemHeight,\n height,\n width\n }}\n data-total-records={vi.totalRowsLoaded}\n className='pContainer'\n ref={c => {\n vi.pContainer = c;\n }}\n >\n {renderHeader && renderHeader()}\n <div\n className='bContainer'\n ref={c => {\n vi.bContainer = c;\n }}\n >\n <div\n className={`${rowContainerClass} row-container`}\n ref={c => {\n vi.rContainer = c;\n }}\n role='rowgroup'\n >\n {showLoadingIndicator && isFetching && loadingIndicatorInfo.isScrollingUp && (\n <StyledLoader $style={{ bottom: '100%' }}>\n <Progress\n className='above-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n {children}\n {showLoadingIndicator && isFetching && loadingIndicatorInfo.isScrollingDown && (\n <StyledLoader $style={{ top: '100%' }}>\n <Progress\n className='below-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n </div>\n </div>\n {vi.totalRowsLoaded === 0 && !isFetching\n ? renderEmptyRecords && renderEmptyRecords()\n : null}\n {renderFooter && renderFooter()}\n </StyledPContainer>\n );\n }\n);\n\nVirtualizeInfinite.propTypes = {\n id: PropTypes.string.isRequired,\n viewHeight: PropTypes.number,\n viewWidth: PropTypes.number,\n itemHeight: PropTypes.number,\n callback: PropTypes.func,\n isFetching: PropTypes.bool,\n hasMoreResults: PropTypes.bool,\n rowContainerClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n state: PropTypes.shape({\n startIndex: PropTypes.number,\n endIndex: PropTypes.number\n }),\n bufferMultiplier: PropTypes.number,\n viewMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showLoadingIndicator: PropTypes.bool,\n resetCount: PropTypes.bool,\n countUpdateCallback: PropTypes.func,\n renderEmptyRecords: PropTypes.func\n};\n\nVirtualizeInfinite.defaultProps = {\n bufferMultiplier: 2,\n callback: () => {},\n isFetching: false,\n hasMoreResults: false,\n rowContainerClass: '',\n viewWidth: 0,\n itemHeight: 40,\n renderHeader: null,\n renderFooter: null,\n state: undefined,\n viewMaxHeight: undefined,\n showLoadingIndicator: false,\n resetCount: false,\n countUpdateCallback: () => {},\n renderEmptyRecords: null\n};\n\nVirtualizeInfinite.displayName = 'VirtualizeInfinite';\n\nexport default memo(VirtualizeInfinite);\n"]}
1
+ {"version":3,"file":"VirtualizeInfinite.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/VirtualizeInfinite.jsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n memo,\n useEffect,\n useRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useLayoutEffect,\n useState\n} from 'react';\nimport Styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nimport { defaultThemeProp, Progress } from '@pega/cosmos-react-core';\nimport { isEmpty } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport { StyledSkeletonRow } from '../../Views/Table/SkeletonRows';\n\nimport getPaginationInfo from './Pagination';\nimport useScroll from './UseScroll';\nimport {\n getCurrentEstimation,\n getRecordCountForLayoutPaint,\n getValueWithUnit,\n getMaxHeight,\n isViewNotFilled,\n setAttributesOnItems,\n updateRowContainerTop\n} from './utility';\nimport useResizeObserver from './UseResizeObserver';\n\nfunction getBContainerMinHeight(props) {\n return props.$style.renderFooter ? `calc(100% - ${2 * props.$style.itemHeight + 1}px) ` : '0';\n}\n\nconst StyledPContainer = Styled.div`\n position: relative;\n overflow: auto;\n max-height: ${props => props.$style.maxHeight};\n width: ${props => props.$style.width};\n height: ${props => props.$style.height};\n min-height: ${props => props.$style.minHeight};\n border-radius: inherit;\n\n &:has(${StyledSkeletonRow}) {\n overflow: hidden;\n }\n\n .bContainer {\n position: relative;\n min-height: ${props => getBContainerMinHeight(props)};\n border-radius: inherit;\n }\n`;\n\nStyledPContainer.defaultProps = defaultThemeProp;\n\nconst StyledLoader = Styled.div`\n display: flex;\n justify-content: center;\n padding: 0.5rem;\n position: absolute;\n width: 100%;\n top: ${props => props.$style.top};\n bottom: ${props => props.$style.bottom};\n`;\n\nconst PAGINATION_TRIGGER_RATIOS = {\n down: 0.9,\n up: 0.1\n};\n\nconst VirtualizeInfinite = forwardRef(\n (\n {\n id,\n viewHeight,\n viewWidth,\n itemHeight,\n callback,\n rowContainerClass,\n children,\n renderHeader,\n renderFooter,\n state,\n bufferMultiplier,\n viewMaxHeight,\n showLoadingIndicator,\n resetCount,\n countUpdateCallback,\n isFetching,\n hasMoreResults,\n renderEmptyRecords\n },\n inputRef\n ) => {\n const rowBuffer = 5;\n\n const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();\n const [loadingIndicatorInfo, setLoadingIndicatorInfo] = useState({});\n const [translate] = useTranslate();\n\n // Create ref to store virtualize related data.\n const vi = useRef({\n itemHeight,\n bufferMultiplier,\n pInfo: {},\n totalRowsLoaded: undefined,\n isInitialized: false\n }).current;\n\n // tracking both state and pInfo.view to identify the initialization as in case of fullscreen, state will be available but pInfo.view won't\n const isInitialized = state && !!Object.keys(vi.pInfo.view ?? {}).length;\n\n const getTotalRowsIncludingBuffer = useCallback(() => {\n if (isEmpty(vi.totalRowsLoaded)) return;\n return hasMoreResults ? vi.totalRowsLoaded + rowBuffer : vi.totalRowsLoaded;\n }, [vi.totalRowsLoaded, hasMoreResults]);\n\n const getRowContainer = useCallback(() => vi.rContainer, [vi.rContainer]);\n const getPContainer = useCallback(() => vi.pContainer, [vi.pContainer]);\n const getBContainer = useCallback(() => vi.bContainer, [vi.bContainer]);\n\n // API used when user want to scroll to top programmatically.\n // Though component auto scroll to top if no element is in view.\n // But calling this API upfront might save one extra call to Fetch API.\n const scrollToTop = useCallback(() => {\n if (!isInitialized) return;\n getPContainer().scrollTop = 0;\n vi.pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n false,\n true\n );\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }, [id, vi, getPContainer, callback, isInitialized]);\n\n // expose APIs and properties here to help client to communicate.\n useImperativeHandle(inputRef, () => ({\n getParentContainer: getPContainer,\n scrollToTop,\n vi,\n id\n }));\n\n const { width, height } = useMemo(\n () => ({\n width: getValueWithUnit(viewWidth, '100%'),\n height: getValueWithUnit(viewHeight, 'auto')\n }),\n [viewWidth, viewHeight]\n );\n\n const maxHeight = useMemo(() => getMaxHeight(viewMaxHeight), [viewMaxHeight]);\n\n // Calculate the pagination indexes and notify callback.\n // resetIsFetchingWhenNoNewIndexes - flag specific for isViewNotFilled\n // If view is not filled, we want to call this but resting isFetch to false\n // goes to this method when callback is note fired.\n const getPagination = useCallback(\n (isRefresh = false, resetIsFetchingWhenNoNewIndexes = false) => {\n if (!isFetching || resetIsFetchingWhenNoNewIndexes) {\n const pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n isRefresh,\n true\n );\n const { startIndex, endIndex } = pInfo.view;\n // if new indexes are subset of existing state indexes, no need to update the consumer.\n if (\n isRefresh ||\n !state ||\n !(startIndex >= state.startIndex && endIndex <= state.endIndex)\n ) {\n vi.pInfo = pInfo;\n if (state) {\n const { startIndex: oldStartIndex, endIndex: oldEndIndex } = state;\n if (startIndex < oldStartIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingUp: true };\n });\n }\n if (endIndex > oldEndIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingDown: true };\n });\n }\n }\n\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n } else if (resetIsFetchingWhenNoNewIndexes) {\n setLoadingIndicatorInfo({});\n }\n }\n },\n [isFetching, getPContainer, getTotalRowsIncludingBuffer, vi, state, callback, id]\n );\n\n // update average stats for next calculation.\n const updateAvarageInVirtualizeInstance = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight, averageNumberOfItemsInARow, averageRowHeight } =\n currentEstimation;\n Object.assign(vi, {\n itemCount: (itemCount + vi.itemCount || itemCount) / 2,\n rowContainerHeight:\n (rowContainerHeight + vi.rowContainerHeight || rowContainerHeight) / 2,\n averageNumberOfItemsInARow:\n (averageNumberOfItemsInARow + vi.averageNumberOfItemsInARow ||\n averageNumberOfItemsInARow) / 2,\n averageRowHeight: (averageRowHeight + vi.averageRowHeight || averageRowHeight) / 2\n });\n },\n [vi]\n );\n\n const getBufferHeight = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let h = 0;\n if (itemCount > 0)\n h =\n (getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()) / itemCount) *\n rowContainerHeight;\n return h;\n },\n [getTotalRowsIncludingBuffer]\n );\n\n const getScrollTop = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let scrollTop = 0;\n if (itemCount > 0) {\n const scrollNodeTopChange =\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.bufferNewCords?.top - vi.pInfo?.bufferOldCords?.top || 0;\n scrollTop = (vi.pInfo.topRowIndex / itemCount) * rowContainerHeight - scrollNodeTopChange;\n }\n return scrollTop;\n },\n [vi]\n );\n\n const onRowContainerDimensionChange = useCallback(() => {\n const { height: rowContainerHeight, width: rowContainerWidth } =\n getRowContainer()?.getBoundingClientRect() ?? {};\n // trigger virtualizer operations only when row container has some height and width\n if (rowContainerHeight && rowContainerWidth) setRContainerDimensionUpdate({});\n }, [getRowContainer]);\n\n useResizeObserver(getRowContainer, onRowContainerDimensionChange);\n\n const [updateScrollTop] = useScroll(\n getPagination,\n getPContainer,\n vi,\n getTotalRowsIncludingBuffer(),\n renderHeader,\n isFetching,\n viewHeight,\n PAGINATION_TRIGGER_RATIOS\n );\n\n useLayoutEffect(() => {\n const rContainer = getRowContainer();\n if (state && state.startIndex >= 0 && vi && rContainer) {\n setAttributesOnItems(state, rContainer);\n }\n });\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const rowElements = Array.from(getRowContainer().children || []).filter(a =>\n a.hasAttribute('data-key')\n );\n if (!rowElements.length) {\n vi.totalRowsLoaded = 0;\n return;\n }\n\n const lastRow = rowElements[rowElements.length - 1];\n const lastRowDataIndex = parseInt(lastRow.getAttribute('data-index'), 10);\n const newCount = hasMoreResults ? lastRowDataIndex + 1 + rowBuffer : lastRowDataIndex + 1;\n\n // if user is scrolling up/down within the already encountered records, the record count shouldn't update\n if (newCount < getTotalRowsIncludingBuffer() && !resetCount) return;\n\n vi.totalRowsLoaded = lastRowDataIndex + 1;\n countUpdateCallback(vi.totalRowsLoaded);\n }, [children, isFetching]);\n\n // Get estimate and update buffer height\n useLayoutEffect(() => {\n if (!isInitialized) return;\n\n vi.currentEstimation = getCurrentEstimation(getRowContainer(), true);\n updateAvarageInVirtualizeInstance(vi.currentEstimation);\n const h = getBufferHeight(vi.currentEstimation);\n getBContainer().style.height = `${h}px`;\n }, [\n vi,\n children,\n rContainerDimensionUpdate,\n getBContainer,\n getBufferHeight,\n getRowContainer,\n getTotalRowsIncludingBuffer,\n updateAvarageInVirtualizeInstance\n ]);\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const pContainer = getPContainer();\n const scrollTop = getScrollTop(vi.currentEstimation);\n if (vi.pInfo.view.startIndex !== 0) pContainer.scrollTop = scrollTop;\n\n // Setting scrollTop from pContainer.scrollTop as getScrollTop can return value with higher decimal accuracy.\n // but scrollTop attribute from HTML element will round it automatically.\n updateScrollTop(pContainer.scrollTop);\n updateRowContainerTop(\n vi,\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n state,\n pContainer,\n pContainer.scrollTop\n );\n }, [\n vi,\n state,\n isFetching,\n getScrollTop,\n getPContainer,\n updateScrollTop,\n getTotalRowsIncludingBuffer\n ]);\n\n // On mount that means state is not initialized yet, trigger pagination.\n // or whenever count changes or width /height of view port changes, if view is not filled with data, get indexes again.\n useEffect(() => {\n if (isFetching) return;\n\n if (!isInitialized) {\n getPagination(true);\n return;\n }\n\n if (\n isViewNotFilled(\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n getPContainer(),\n renderHeader\n )\n ) {\n getPagination(false, true);\n } else {\n setLoadingIndicatorInfo({});\n }\n }, [\n vi,\n isFetching,\n children,\n viewWidth,\n viewHeight,\n renderHeader,\n rContainerDimensionUpdate,\n getPagination,\n getPContainer,\n getTotalRowsIncludingBuffer\n ]);\n\n return (\n <StyledPContainer\n $style={{\n maxHeight,\n minHeight: !vi.totalRowsLoaded ? '100px' : 'auto',\n renderFooter,\n itemHeight,\n height,\n width\n }}\n data-total-records={vi.totalRowsLoaded}\n className='pContainer'\n ref={c => {\n vi.pContainer = c;\n }}\n >\n {renderHeader && renderHeader()}\n <div\n className='bContainer'\n ref={c => {\n vi.bContainer = c;\n }}\n >\n <div\n className={`${rowContainerClass} row-container`}\n ref={c => {\n vi.rContainer = c;\n }}\n role='rowgroup'\n >\n {/* Show loader only when there are some rows otherwise the parent spinner on RS should appear.\n Since in case of infinite table, totalRowsLoaded is derived from the rows only, using totalRowsLoaded here. */}\n {vi.totalRowsLoaded >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingUp && (\n <StyledLoader $style={{ bottom: '100%' }}>\n <Progress\n className='above-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n {children}\n {vi.totalRowsLoaded >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingDown && (\n <StyledLoader $style={{ top: '100%' }}>\n <Progress\n className='below-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n </div>\n </div>\n {vi.totalRowsLoaded === 0 && !isFetching\n ? renderEmptyRecords && renderEmptyRecords()\n : null}\n {renderFooter && renderFooter()}\n </StyledPContainer>\n );\n }\n);\n\nVirtualizeInfinite.propTypes = {\n id: PropTypes.string.isRequired,\n viewHeight: PropTypes.number,\n viewWidth: PropTypes.number,\n itemHeight: PropTypes.number,\n callback: PropTypes.func,\n isFetching: PropTypes.bool,\n hasMoreResults: PropTypes.bool,\n rowContainerClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n state: PropTypes.shape({\n startIndex: PropTypes.number,\n endIndex: PropTypes.number\n }),\n bufferMultiplier: PropTypes.number,\n viewMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showLoadingIndicator: PropTypes.bool,\n resetCount: PropTypes.bool,\n countUpdateCallback: PropTypes.func,\n renderEmptyRecords: PropTypes.func\n};\n\nVirtualizeInfinite.defaultProps = {\n bufferMultiplier: 2,\n callback: () => {},\n isFetching: false,\n hasMoreResults: false,\n rowContainerClass: '',\n viewWidth: 0,\n itemHeight: 40,\n renderHeader: null,\n renderFooter: null,\n state: undefined,\n viewMaxHeight: undefined,\n showLoadingIndicator: false,\n resetCount: false,\n countUpdateCallback: () => {},\n renderEmptyRecords: null\n};\n\nVirtualizeInfinite.displayName = 'VirtualizeInfinite';\n\nexport default memo(VirtualizeInfinite);\n"]}
@@ -1,4 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * This component is only used for grouped table
4
+ */
2
5
  import { forwardRef, memo, useEffect, useRef, useCallback, useImperativeHandle, useMemo, useLayoutEffect, useState } from 'react';
3
6
  import Styled from 'styled-components';
4
7
  import PropTypes from 'prop-types';
@@ -8,7 +11,7 @@ import useTranslate from '../../Hooks/useTranslate';
8
11
  import { StyledSkeletonRow } from '../../Views/Table/SkeletonRows';
9
12
  import getPaginationInfo from './Pagination';
10
13
  import useScroll from './UseScroll';
11
- import { getCurrentEstimation, updateRowContainerTop, setAttributesOnItems, isViewNotFilled, getRecordCountForLayoutPaint, getValueWithUnit, getMaxHeight } from './utility';
14
+ import { getCurrentEstimation, updateRowContainerTop, setAttributesOnItems, isViewNotFilled, getRecordCountForLayoutPaint, getValueWithUnit, getMaxHeight, getPContainerClientWidth } from './utility';
12
15
  import useResizeObserver from './UseResizeObserver';
13
16
  function getBContainerMinHeight(props) {
14
17
  return props.$style.renderFooter ? `calc(100% - ${2 * props.$style.itemHeight + 1}px) ` : '0';
@@ -83,7 +86,7 @@ const Virtualize = forwardRef(({ id, viewHeight, viewWidth, totalRecordCount, it
83
86
  height: getValueWithUnit(viewHeight, 'auto')
84
87
  }), [viewWidth, viewHeight]);
85
88
  const maxHeight = useMemo(() => getMaxHeight(viewMaxHeight), [viewMaxHeight]);
86
- const minHeight = useMemo(() => (totalRecordCount === 0 ? '100px' : 'auto'), [totalRecordCount]);
89
+ const minHeight = useMemo(() => (!totalRecordCount ? '100px' : 'auto'), [totalRecordCount]);
87
90
  // Calculate the pagination indexes and notify callback.
88
91
  // resetIsFetchingWhenNoNewIndexes - flag specific for isViewNotFilled
89
92
  // If view is not filled, we want to call this but restting isFetch to false
@@ -214,6 +217,12 @@ const Virtualize = forwardRef(({ id, viewHeight, viewWidth, totalRecordCount, it
214
217
  getRowContainer,
215
218
  getBContainer
216
219
  ]);
220
+ // Added this block to overcome clipping issue for group header.
221
+ const onPContainerDimensionUpdate = useCallback(() => {
222
+ getPContainer()?.style.setProperty('--container-width', `${getPContainerClientWidth(getPContainer())}px`);
223
+ }, [getPContainer]);
224
+ // observe on pContainer to adjust the width of row container.
225
+ useResizeObserver(getPContainer, onPContainerDimensionUpdate);
217
226
  // On mount that means state is not initialized yet, trigger pagination.
218
227
  // or whenever count changes or width /height of view port changes, if view is not filled with data, get indexes again.
219
228
  useEffect(() => {
@@ -253,12 +262,18 @@ const Virtualize = forwardRef(({ id, viewHeight, viewWidth, totalRecordCount, it
253
262
  vi.pContainer = c;
254
263
  }, children: [renderHeader && renderHeader(), _jsxs("div", { className: 'bContainer', ref: c => {
255
264
  vi.bContainer = c;
256
- }, children: [showLoadingIndicator && isFetching && loadingIndicatorInfo.isScrollingUp && (_jsx(StyledLoader, { "$style": {
265
+ }, children: [totalRecordCount >= 0 &&
266
+ showLoadingIndicator &&
267
+ isFetching &&
268
+ loadingIndicatorInfo.isScrollingUp && (_jsx(StyledLoader, { "$style": {
257
269
  top: '--above-loader-top',
258
270
  left: '--loader-left'
259
271
  }, children: _jsx(Progress, { className: 'above-loader', placement: 'block', tabIndex: 0, "aria-label": translate('Loading more results') }) })), _jsx("div", { className: `${rowContainerClass} row-container`, ref: c => {
260
272
  vi.rContainer = c;
261
- }, role: 'rowgroup', children: children }), showLoadingIndicator && isFetching && loadingIndicatorInfo.isScrollingDown && (_jsx(StyledLoader, { "$style": {
273
+ }, role: 'rowgroup', children: totalRecordCount === 0 && !isFetching ? null : children }), totalRecordCount >= 0 &&
274
+ showLoadingIndicator &&
275
+ isFetching &&
276
+ loadingIndicatorInfo.isScrollingDown && (_jsx(StyledLoader, { "$style": {
262
277
  top: '--below-loader-top',
263
278
  left: '--loader-left'
264
279
  }, children: _jsx(Progress, { className: 'below-loader', placement: 'block', tabIndex: 0, "aria-label": translate('Loading more results') }) }))] }), totalRecordCount === 0 ? renderEmptyRecords && renderEmptyRecords() : null, renderFooter && renderFooter()] }));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n memo,\n useEffect,\n useRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useLayoutEffect,\n useState\n} from 'react';\nimport Styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nimport { defaultThemeProp, Progress } from '@pega/cosmos-react-core';\nimport { isEmpty } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport { StyledSkeletonRow } from '../../Views/Table/SkeletonRows';\n\nimport getPaginationInfo from './Pagination';\nimport useScroll from './UseScroll';\nimport {\n getCurrentEstimation,\n updateRowContainerTop,\n setAttributesOnItems,\n isViewNotFilled,\n getRecordCountForLayoutPaint,\n getValueWithUnit,\n getMaxHeight\n} from './utility';\nimport useResizeObserver from './UseResizeObserver';\n\nfunction getBContainerMinHeight(props) {\n return props.$style.renderFooter ? `calc(100% - ${2 * props.$style.itemHeight + 1}px) ` : '0';\n}\n\nconst StyledPContainer = Styled.div`\n position: relative;\n overflow: auto;\n max-height: ${props => props.$style.maxHeight};\n width: ${props => props.$style.width};\n height: ${props => props.$style.height};\n min-height: ${props => props.$style.minHeight};\n\n &:has(${StyledSkeletonRow}) {\n overflow: hidden;\n }\n\n /**\n * When height and maxHeight is auto, virtualization is not going to happen and the scroll jump on row deletion scenario is not going to happen.\n * In such cases, using relative position as sticky was used to fix scroll jump in firefox during virtualization.\n */\n .bContainer {\n position: ${props =>\n props.$style.maxHeight?.startsWith?.('auto') &&\n props.$style.height?.startsWith?.('auto')\n ? 'relative'\n : 'sticky'};\n min-height: ${props => getBContainerMinHeight(props)};\n border-radius: inherit;\n }\n`;\n\nStyledPContainer.defaultProps = defaultThemeProp;\n\nconst StyledLoader = Styled.div`\n display: flex;\n justify-content: center;\n padding: 0.5rem;\n position: absolute;\n width: 100%;\n left: ${props => `var(${props.$style.left})`};\n top: ${props => `var(${props.$style.top})`};\n`;\n\nconst Virtualize = forwardRef(\n (\n {\n id,\n viewHeight,\n viewWidth,\n totalRecordCount,\n itemHeight,\n callback,\n isFetching,\n rowContainerClass,\n children,\n renderHeader,\n renderFooter,\n state,\n bufferMultiplier,\n viewMaxHeight,\n showLoadingIndicator,\n renderEmptyRecords\n },\n inputRef\n ) => {\n const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();\n const [loadingIndicatorInfo, setLoadingIndicatorInfo] = useState({});\n const [translate] = useTranslate();\n // Create ref to store virtualize related data.\n const vi = useRef({\n itemHeight,\n bufferMultiplier,\n pInfo: {}\n }).current;\n\n const getRowContainer = useCallback(() => vi.rContainer, [vi.rContainer]);\n const getPContainer = useCallback(() => vi.pContainer, [vi.pContainer]);\n const getBContainer = useCallback(() => vi.bContainer, [vi.bContainer]);\n\n // API used when user want to scroll to top programmatically.\n // Though component auto scroll to top if no element is in view.\n // But calling this API upfront might save one extra call to Fetch API.\n const scrollToTop = useCallback(() => {\n if (!state) return;\n getPContainer().scrollTop = 0;\n vi.pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n false,\n true\n );\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }, [id, vi, state, getPContainer]);\n\n // expose APIs and properties here to help client to communicate.\n useImperativeHandle(inputRef, () => ({\n getParentContainer: getPContainer,\n scrollToTop,\n vi,\n id\n }));\n\n const { width, height } = useMemo(\n () => ({\n width: getValueWithUnit(viewWidth, '100%'),\n height: getValueWithUnit(viewHeight, 'auto')\n }),\n [viewWidth, viewHeight]\n );\n\n const maxHeight = useMemo(() => getMaxHeight(viewMaxHeight), [viewMaxHeight]);\n\n const minHeight = useMemo(\n () => (totalRecordCount === 0 ? '100px' : 'auto'),\n [totalRecordCount]\n );\n\n // Calculate the pagination indexes and notify callback.\n // resetIsFetchingWhenNoNewIndexes - flag specific for isViewNotFilled\n // If view is not filled, we want to call this but restting isFetch to false\n // goes to this methid when callback is note fired.\n const getPagination = useCallback(\n (isRefresh = false, resetIsFetchingWhenNoNewIndexes = false) => {\n if (resetIsFetchingWhenNoNewIndexes) {\n setLoadingIndicatorInfo({});\n }\n const pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n isRefresh\n );\n const { startIndex, endIndex } = pInfo.view;\n // if new indexes are subset of existing state indexes, no need to update the consumer.\n if (!state || !(startIndex >= state.startIndex && endIndex <= state.endIndex)) {\n vi.pInfo = pInfo;\n if (state) {\n const { startIndex: oldStartIndex, endIndex: oldEndIndex } = state;\n if (startIndex < oldStartIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingUp: true };\n });\n }\n if (endIndex > oldEndIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingDown: true };\n });\n }\n }\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }\n },\n [vi, totalRecordCount, state, callback, id, getPContainer]\n );\n\n // update average stats for next calculation.\n const updateAverageInVirtualizeInstance = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight, averageNumberOfItemsInARow, averageRowHeight } =\n currentEstimation;\n Object.assign(vi, {\n itemCount: (itemCount + vi.itemCount || itemCount) / 2,\n rowContainerHeight:\n (rowContainerHeight + vi.rowContainerHeight || rowContainerHeight) / 2,\n averageNumberOfItemsInARow:\n (averageNumberOfItemsInARow + vi.averageNumberOfItemsInARow ||\n averageNumberOfItemsInARow) / 2,\n averageRowHeight: (averageRowHeight + vi.averageRowHeight || averageRowHeight) / 2\n });\n },\n [vi]\n );\n\n const getBufferHeight = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let h = 0;\n if (itemCount > 0)\n h = (getRecordCountForLayoutPaint(totalRecordCount) / itemCount) * rowContainerHeight;\n return h;\n },\n [totalRecordCount]\n );\n\n const getScrollTop = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let scrollTop = 0;\n if (itemCount > 0) {\n const scrollNodeTopChange =\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.bufferNewCords?.top - vi.pInfo?.bufferOldCords?.top || 0;\n scrollTop = (vi.pInfo.topRowIndex / itemCount) * rowContainerHeight - scrollNodeTopChange;\n }\n return scrollTop;\n },\n [vi]\n );\n\n const onRowContainerDimensionChange = useCallback(() => {\n const { height: rowContainerHeight, width: rowContainerWidth } =\n getRowContainer()?.getBoundingClientRect() ?? {};\n // trigger virtualizer operations only when row container has some height and width\n if (rowContainerHeight && rowContainerWidth) setRContainerDimensionUpdate({});\n }, [getRowContainer]);\n\n // observe on row container to adjust the buffer container height.\n useResizeObserver(getRowContainer, onRowContainerDimensionChange);\n\n const [updateScrollTop] = useScroll(\n getPagination,\n getPContainer,\n vi,\n totalRecordCount,\n renderHeader,\n isFetching,\n viewHeight\n );\n\n useLayoutEffect(() => {\n const rContainer = getRowContainer();\n if (state && state.startIndex >= 0 && vi && rContainer) {\n setAttributesOnItems(state, rContainer);\n }\n });\n\n // Get estimate and update buffer height\n useLayoutEffect(() => {\n if (state && !isEmpty(totalRecordCount)) {\n vi.currentEstimation = getCurrentEstimation(getRowContainer());\n updateAverageInVirtualizeInstance(vi.currentEstimation);\n const h = Math.floor(getBufferHeight(vi.currentEstimation));\n const previousHeight = getBContainer().offsetHeight;\n\n getBContainer().style.height = `${h}px`;\n vi.bContainerHeight = h;\n\n // if there was no previous height, then keep the scrolltop to 0 by default\n if (h !== previousHeight && previousHeight) {\n const pContainer = getPContainer();\n const scrollTop = getScrollTop(vi.currentEstimation);\n if (scrollTop >= 0) {\n pContainer.scrollTop = scrollTop;\n }\n }\n }\n }, [\n rContainerDimensionUpdate,\n getBContainer,\n getBufferHeight,\n getRowContainer,\n state,\n totalRecordCount,\n updateAverageInVirtualizeInstance,\n vi,\n getPContainer,\n getScrollTop\n ]);\n\n // update parent scroll top and row container top.\n useLayoutEffect(() => {\n if (state && !isEmpty(totalRecordCount)) {\n const pContainer = getPContainer();\n\n // Setting scrollTop from pContainer.scrollTop as getScrollTop can return value with higher decimal accuracy.\n // but scrollTop attribute from HTML element will round it automatically.\n updateScrollTop(pContainer.scrollTop);\n updateRowContainerTop(\n vi,\n getRecordCountForLayoutPaint(totalRecordCount),\n state,\n pContainer,\n pContainer.scrollTop\n );\n\n const topLoaderHeight = 80;\n let top = getRowContainer().style.top;\n if (!top) {\n top = 0;\n }\n getBContainer().style.setProperty(\n '--above-loader-top',\n `${parseInt(top, 10) - topLoaderHeight}px`\n );\n\n getBContainer().style.setProperty(\n '--below-loader-top',\n `${parseInt(top, 10) + getRowContainer().offsetHeight}px`\n );\n }\n }, [\n getPContainer,\n getScrollTop,\n state,\n updateScrollTop,\n vi,\n rContainerDimensionUpdate,\n totalRecordCount,\n getRowContainer,\n getBContainer\n ]);\n\n // On mount that means state is not initialized yet, trigger pagination.\n // or whenever count changes or width /height of view port changes, if view is not filled with data, get indexes again.\n useEffect(() => {\n if (state && !isFetching && !isEmpty(totalRecordCount)) {\n if (\n isViewNotFilled(\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n getPContainer(),\n renderHeader\n )\n )\n getPagination(false, true);\n else {\n setLoadingIndicatorInfo({});\n }\n } else if (!state || !Object.keys(vi.pInfo).length) getPagination(true);\n }, [\n rContainerDimensionUpdate,\n state,\n vi,\n totalRecordCount,\n viewHeight,\n viewWidth,\n renderHeader,\n getPagination,\n getPContainer\n ]);\n\n useEffect(() => {\n if (!isFetching) return;\n getBContainer().style.setProperty('--loader-left', `${getPContainer().scrollLeft}px`);\n }, [isFetching, getPContainer()?.scrollLeft]);\n\n return (\n <StyledPContainer\n $style={{\n maxHeight,\n minHeight,\n renderFooter,\n itemHeight,\n height,\n width\n }}\n data-total-records={totalRecordCount}\n className='pContainer'\n ref={c => {\n vi.pContainer = c;\n }}\n >\n {renderHeader && renderHeader()}\n <div\n className='bContainer'\n ref={c => {\n vi.bContainer = c;\n }}\n >\n {showLoadingIndicator && isFetching && loadingIndicatorInfo.isScrollingUp && (\n <StyledLoader\n $style={{\n top: '--above-loader-top',\n left: '--loader-left'\n }}\n >\n <Progress\n className='above-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n <div\n className={`${rowContainerClass} row-container`}\n ref={c => {\n vi.rContainer = c;\n }}\n role='rowgroup'\n >\n {/** Do not add any other element in row-container apart from the rows as it will generate incorrect estimations */}\n {children}\n </div>\n {showLoadingIndicator && isFetching && loadingIndicatorInfo.isScrollingDown && (\n <StyledLoader\n $style={{\n top: '--below-loader-top',\n left: '--loader-left'\n }}\n >\n <Progress\n className='below-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n </div>\n {totalRecordCount === 0 ? renderEmptyRecords && renderEmptyRecords() : null}\n {renderFooter && renderFooter()}\n </StyledPContainer>\n );\n }\n);\n\nVirtualize.propTypes = {\n id: PropTypes.string.isRequired,\n viewHeight: PropTypes.number,\n viewWidth: PropTypes.number,\n totalRecordCount: PropTypes.number,\n itemHeight: PropTypes.number,\n callback: PropTypes.func,\n isFetching: PropTypes.bool,\n rowContainerClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n state: PropTypes.shape({\n startIndex: PropTypes.number,\n endIndex: PropTypes.number\n }),\n bufferMultiplier: PropTypes.number,\n viewMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showLoadingIndicator: PropTypes.bool,\n renderEmptyRecords: PropTypes.func\n};\n\nVirtualize.defaultProps = {\n bufferMultiplier: 2,\n callback: () => {},\n isFetching: false,\n rowContainerClass: '',\n viewWidth: 0,\n itemHeight: 40,\n renderHeader: null,\n renderFooter: null,\n state: undefined,\n totalRecordCount: undefined,\n viewMaxHeight: undefined,\n showLoadingIndicator: false,\n renderEmptyRecords: null\n};\n\nVirtualize.displayName = 'Virtualize';\n\nexport default memo(Virtualize);\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/index.jsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * This component is only used for grouped table\n */\n\nimport {\n forwardRef,\n memo,\n useEffect,\n useRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useLayoutEffect,\n useState\n} from 'react';\nimport Styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nimport { defaultThemeProp, Progress } from '@pega/cosmos-react-core';\nimport { isEmpty } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport { StyledSkeletonRow } from '../../Views/Table/SkeletonRows';\n\nimport getPaginationInfo from './Pagination';\nimport useScroll from './UseScroll';\nimport {\n getCurrentEstimation,\n updateRowContainerTop,\n setAttributesOnItems,\n isViewNotFilled,\n getRecordCountForLayoutPaint,\n getValueWithUnit,\n getMaxHeight,\n getPContainerClientWidth\n} from './utility';\nimport useResizeObserver from './UseResizeObserver';\n\nfunction getBContainerMinHeight(props) {\n return props.$style.renderFooter ? `calc(100% - ${2 * props.$style.itemHeight + 1}px) ` : '0';\n}\n\nconst StyledPContainer = Styled.div`\n position: relative;\n overflow: auto;\n max-height: ${props => props.$style.maxHeight};\n width: ${props => props.$style.width};\n height: ${props => props.$style.height};\n min-height: ${props => props.$style.minHeight};\n\n &:has(${StyledSkeletonRow}) {\n overflow: hidden;\n }\n\n /**\n * When height and maxHeight is auto, virtualization is not going to happen and the scroll jump on row deletion scenario is not going to happen.\n * In such cases, using relative position as sticky was used to fix scroll jump in firefox during virtualization.\n */\n .bContainer {\n position: ${props =>\n props.$style.maxHeight?.startsWith?.('auto') &&\n props.$style.height?.startsWith?.('auto')\n ? 'relative'\n : 'sticky'};\n min-height: ${props => getBContainerMinHeight(props)};\n border-radius: inherit;\n }\n`;\n\nStyledPContainer.defaultProps = defaultThemeProp;\n\nconst StyledLoader = Styled.div`\n display: flex;\n justify-content: center;\n padding: 0.5rem;\n position: absolute;\n width: 100%;\n left: ${props => `var(${props.$style.left})`};\n top: ${props => `var(${props.$style.top})`};\n`;\n\nconst Virtualize = forwardRef(\n (\n {\n id,\n viewHeight,\n viewWidth,\n totalRecordCount,\n itemHeight,\n callback,\n isFetching,\n rowContainerClass,\n children,\n renderHeader,\n renderFooter,\n state,\n bufferMultiplier,\n viewMaxHeight,\n showLoadingIndicator,\n renderEmptyRecords\n },\n inputRef\n ) => {\n const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();\n const [loadingIndicatorInfo, setLoadingIndicatorInfo] = useState({});\n const [translate] = useTranslate();\n // Create ref to store virtualize related data.\n const vi = useRef({\n itemHeight,\n bufferMultiplier,\n pInfo: {}\n }).current;\n\n const getRowContainer = useCallback(() => vi.rContainer, [vi.rContainer]);\n const getPContainer = useCallback(() => vi.pContainer, [vi.pContainer]);\n const getBContainer = useCallback(() => vi.bContainer, [vi.bContainer]);\n\n // API used when user want to scroll to top programmatically.\n // Though component auto scroll to top if no element is in view.\n // But calling this API upfront might save one extra call to Fetch API.\n const scrollToTop = useCallback(() => {\n if (!state) return;\n getPContainer().scrollTop = 0;\n vi.pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n false,\n true\n );\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }, [id, vi, state, getPContainer]);\n\n // expose APIs and properties here to help client to communicate.\n useImperativeHandle(inputRef, () => ({\n getParentContainer: getPContainer,\n scrollToTop,\n vi,\n id\n }));\n\n const { width, height } = useMemo(\n () => ({\n width: getValueWithUnit(viewWidth, '100%'),\n height: getValueWithUnit(viewHeight, 'auto')\n }),\n [viewWidth, viewHeight]\n );\n\n const maxHeight = useMemo(() => getMaxHeight(viewMaxHeight), [viewMaxHeight]);\n\n const minHeight = useMemo(() => (!totalRecordCount ? '100px' : 'auto'), [totalRecordCount]);\n\n // Calculate the pagination indexes and notify callback.\n // resetIsFetchingWhenNoNewIndexes - flag specific for isViewNotFilled\n // If view is not filled, we want to call this but restting isFetch to false\n // goes to this methid when callback is note fired.\n const getPagination = useCallback(\n (isRefresh = false, resetIsFetchingWhenNoNewIndexes = false) => {\n if (resetIsFetchingWhenNoNewIndexes) {\n setLoadingIndicatorInfo({});\n }\n const pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n isRefresh\n );\n const { startIndex, endIndex } = pInfo.view;\n // if new indexes are subset of existing state indexes, no need to update the consumer.\n if (!state || !(startIndex >= state.startIndex && endIndex <= state.endIndex)) {\n vi.pInfo = pInfo;\n if (state) {\n const { startIndex: oldStartIndex, endIndex: oldEndIndex } = state;\n if (startIndex < oldStartIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingUp: true };\n });\n }\n if (endIndex > oldEndIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingDown: true };\n });\n }\n }\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }\n },\n [vi, totalRecordCount, state, callback, id, getPContainer]\n );\n\n // update average stats for next calculation.\n const updateAverageInVirtualizeInstance = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight, averageNumberOfItemsInARow, averageRowHeight } =\n currentEstimation;\n Object.assign(vi, {\n itemCount: (itemCount + vi.itemCount || itemCount) / 2,\n rowContainerHeight:\n (rowContainerHeight + vi.rowContainerHeight || rowContainerHeight) / 2,\n averageNumberOfItemsInARow:\n (averageNumberOfItemsInARow + vi.averageNumberOfItemsInARow ||\n averageNumberOfItemsInARow) / 2,\n averageRowHeight: (averageRowHeight + vi.averageRowHeight || averageRowHeight) / 2\n });\n },\n [vi]\n );\n\n const getBufferHeight = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let h = 0;\n if (itemCount > 0)\n h = (getRecordCountForLayoutPaint(totalRecordCount) / itemCount) * rowContainerHeight;\n return h;\n },\n [totalRecordCount]\n );\n\n const getScrollTop = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let scrollTop = 0;\n if (itemCount > 0) {\n const scrollNodeTopChange =\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.bufferNewCords?.top - vi.pInfo?.bufferOldCords?.top || 0;\n scrollTop = (vi.pInfo.topRowIndex / itemCount) * rowContainerHeight - scrollNodeTopChange;\n }\n return scrollTop;\n },\n [vi]\n );\n\n const onRowContainerDimensionChange = useCallback(() => {\n const { height: rowContainerHeight, width: rowContainerWidth } =\n getRowContainer()?.getBoundingClientRect() ?? {};\n\n // trigger virtualizer operations only when row container has some height and width\n if (rowContainerHeight && rowContainerWidth) setRContainerDimensionUpdate({});\n }, [getRowContainer]);\n\n // observe on row container to adjust the buffer container height.\n useResizeObserver(getRowContainer, onRowContainerDimensionChange);\n\n const [updateScrollTop] = useScroll(\n getPagination,\n getPContainer,\n vi,\n totalRecordCount,\n renderHeader,\n isFetching,\n viewHeight\n );\n\n useLayoutEffect(() => {\n const rContainer = getRowContainer();\n if (state && state.startIndex >= 0 && vi && rContainer) {\n setAttributesOnItems(state, rContainer);\n }\n });\n\n // Get estimate and update buffer height\n useLayoutEffect(() => {\n if (state && !isEmpty(totalRecordCount)) {\n vi.currentEstimation = getCurrentEstimation(getRowContainer());\n updateAverageInVirtualizeInstance(vi.currentEstimation);\n const h = Math.floor(getBufferHeight(vi.currentEstimation));\n const previousHeight = getBContainer().offsetHeight;\n\n getBContainer().style.height = `${h}px`;\n vi.bContainerHeight = h;\n\n // if there was no previous height, then keep the scrolltop to 0 by default\n if (h !== previousHeight && previousHeight) {\n const pContainer = getPContainer();\n const scrollTop = getScrollTop(vi.currentEstimation);\n if (scrollTop >= 0) {\n pContainer.scrollTop = scrollTop;\n }\n }\n }\n }, [\n rContainerDimensionUpdate,\n getBContainer,\n getBufferHeight,\n getRowContainer,\n state,\n totalRecordCount,\n updateAverageInVirtualizeInstance,\n vi,\n getPContainer,\n getScrollTop\n ]);\n\n // update parent scroll top and row container top.\n useLayoutEffect(() => {\n if (state && !isEmpty(totalRecordCount)) {\n const pContainer = getPContainer();\n\n // Setting scrollTop from pContainer.scrollTop as getScrollTop can return value with higher decimal accuracy.\n // but scrollTop attribute from HTML element will round it automatically.\n updateScrollTop(pContainer.scrollTop);\n updateRowContainerTop(\n vi,\n getRecordCountForLayoutPaint(totalRecordCount),\n state,\n pContainer,\n pContainer.scrollTop\n );\n\n const topLoaderHeight = 80;\n let top = getRowContainer().style.top;\n if (!top) {\n top = 0;\n }\n getBContainer().style.setProperty(\n '--above-loader-top',\n `${parseInt(top, 10) - topLoaderHeight}px`\n );\n\n getBContainer().style.setProperty(\n '--below-loader-top',\n `${parseInt(top, 10) + getRowContainer().offsetHeight}px`\n );\n }\n }, [\n getPContainer,\n getScrollTop,\n state,\n updateScrollTop,\n vi,\n rContainerDimensionUpdate,\n totalRecordCount,\n getRowContainer,\n getBContainer\n ]);\n\n // Added this block to overcome clipping issue for group header.\n const onPContainerDimensionUpdate = useCallback(() => {\n getPContainer()?.style.setProperty(\n '--container-width',\n `${getPContainerClientWidth(getPContainer())}px`\n );\n }, [getPContainer]);\n\n // observe on pContainer to adjust the width of row container.\n useResizeObserver(getPContainer, onPContainerDimensionUpdate);\n\n // On mount that means state is not initialized yet, trigger pagination.\n // or whenever count changes or width /height of view port changes, if view is not filled with data, get indexes again.\n useEffect(() => {\n if (state && !isFetching && !isEmpty(totalRecordCount)) {\n if (\n isViewNotFilled(\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n getPContainer(),\n renderHeader\n )\n )\n getPagination(false, true);\n else {\n setLoadingIndicatorInfo({});\n }\n } else if (!state || !Object.keys(vi.pInfo).length) getPagination(true);\n }, [\n rContainerDimensionUpdate,\n state,\n vi,\n totalRecordCount,\n viewHeight,\n viewWidth,\n renderHeader,\n getPagination,\n getPContainer\n ]);\n\n useEffect(() => {\n if (!isFetching) return;\n getBContainer().style.setProperty('--loader-left', `${getPContainer().scrollLeft}px`);\n }, [isFetching, getPContainer()?.scrollLeft]);\n\n return (\n <StyledPContainer\n $style={{\n maxHeight,\n minHeight,\n renderFooter,\n itemHeight,\n height,\n width\n }}\n data-total-records={totalRecordCount}\n className='pContainer'\n ref={c => {\n vi.pContainer = c;\n }}\n >\n {renderHeader && renderHeader()}\n <div\n className='bContainer'\n ref={c => {\n vi.bContainer = c;\n }}\n >\n {/* Show loader only when there are some rows otherwise the parent spinner on RS should appear.\n Since in case of grouped table, presence of totalRecordsCount is always available and is tied with the rows, using totalRecordsCount here. */}\n {totalRecordCount >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingUp && (\n <StyledLoader\n $style={{\n top: '--above-loader-top',\n left: '--loader-left'\n }}\n >\n <Progress\n className='above-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n <div\n className={`${rowContainerClass} row-container`}\n ref={c => {\n vi.rContainer = c;\n }}\n role='rowgroup'\n >\n {/** Do not add any other element in row-container apart from the rows as it will generate incorrect estimations */}\n {totalRecordCount === 0 && !isFetching ? null : children}\n </div>\n {totalRecordCount >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingDown && (\n <StyledLoader\n $style={{\n top: '--below-loader-top',\n left: '--loader-left'\n }}\n >\n <Progress\n className='below-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n </div>\n {totalRecordCount === 0 ? renderEmptyRecords && renderEmptyRecords() : null}\n {renderFooter && renderFooter()}\n </StyledPContainer>\n );\n }\n);\n\nVirtualize.propTypes = {\n id: PropTypes.string.isRequired,\n viewHeight: PropTypes.number,\n viewWidth: PropTypes.number,\n totalRecordCount: PropTypes.number,\n itemHeight: PropTypes.number,\n callback: PropTypes.func,\n isFetching: PropTypes.bool,\n rowContainerClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n state: PropTypes.shape({\n startIndex: PropTypes.number,\n endIndex: PropTypes.number\n }),\n bufferMultiplier: PropTypes.number,\n viewMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showLoadingIndicator: PropTypes.bool,\n renderEmptyRecords: PropTypes.func\n};\n\nVirtualize.defaultProps = {\n bufferMultiplier: 2,\n callback: () => {},\n isFetching: false,\n rowContainerClass: '',\n viewWidth: 0,\n itemHeight: 40,\n renderHeader: null,\n renderFooter: null,\n state: undefined,\n totalRecordCount: undefined,\n viewMaxHeight: undefined,\n showLoadingIndicator: false,\n renderEmptyRecords: null\n};\n\nVirtualize.displayName = 'Virtualize';\n\nexport default memo(Virtualize);\n"]}
@@ -81,7 +81,7 @@ export function getCurrentEstimation(rContainer, includeRowsOnly = false) {
81
81
  return acc + o.height;
82
82
  }, 0);
83
83
  const averageRowHeight = rowCount > 0 ? height / rowCount : 0;
84
- const rowContainerHeight = rContainer.offsetHeight || 0;
84
+ const rowContainerHeight = Math.ceil(rContainer.getBoundingClientRect().height) || 0;
85
85
  return { itemCount, rowContainerHeight, averageNumberOfItemsInARow, averageRowHeight };
86
86
  }
87
87
  // Calculate top which needs to set on row container when component rerender.