@pega/lists-react 10.0.0-build.1.9 → 10.0.0-build.10.1

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 (252) hide show
  1. package/README.md +284 -83
  2. package/lib/Core/Components/AggregateMenu.d.ts.map +1 -1
  3. package/lib/Core/Components/AggregateMenu.js +2 -1
  4. package/lib/Core/Components/AggregateMenu.js.map +1 -1
  5. package/lib/Core/Components/Card/CardFieldValue.d.ts +8 -0
  6. package/lib/Core/Components/Card/CardFieldValue.d.ts.map +1 -0
  7. package/lib/Core/Components/Card/CardFieldValue.js +8 -0
  8. package/lib/Core/Components/Card/CardFieldValue.js.map +1 -0
  9. package/lib/Core/Components/Card/CardHeader.d.ts +9 -0
  10. package/lib/Core/Components/Card/CardHeader.d.ts.map +1 -0
  11. package/lib/Core/{Views/Gallery/Components/GalleryHeader.js → Components/Card/CardHeader.js} +6 -5
  12. package/lib/Core/Components/Card/CardHeader.js.map +1 -0
  13. package/lib/Core/Components/Card/CardSubHeading.d.ts +10 -0
  14. package/lib/Core/Components/Card/CardSubHeading.d.ts.map +1 -0
  15. package/lib/Core/Components/Card/CardSubHeading.js +9 -0
  16. package/lib/Core/Components/Card/CardSubHeading.js.map +1 -0
  17. package/lib/Core/Components/Card/cardData.d.ts +48 -0
  18. package/lib/Core/Components/Card/cardData.d.ts.map +1 -0
  19. package/lib/Core/{Views/Gallery/utils.js → Components/Card/cardData.js} +55 -52
  20. package/lib/Core/Components/Card/cardData.js.map +1 -0
  21. package/lib/Core/Components/Card/index.d.ts +4 -0
  22. package/lib/Core/Components/Card/index.d.ts.map +1 -0
  23. package/lib/Core/Components/Card/index.js +4 -0
  24. package/lib/Core/Components/Card/index.js.map +1 -0
  25. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.d.ts.map +1 -1
  26. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js +6 -53
  27. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js.map +1 -1
  28. package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.d.ts.map +1 -1
  29. package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.js +12 -2
  30. package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.js.map +1 -1
  31. package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js +9 -2
  32. package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js.map +1 -1
  33. package/lib/Core/Components/DefaultComponents/EmptyContainer.d.ts +2 -1
  34. package/lib/Core/Components/DefaultComponents/EmptyContainer.d.ts.map +1 -1
  35. package/lib/Core/Components/DefaultComponents/EmptyContainer.js +3 -3
  36. package/lib/Core/Components/DefaultComponents/EmptyContainer.js.map +1 -1
  37. package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.d.ts.map +1 -1
  38. package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.js +5 -4
  39. package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.js.map +1 -1
  40. package/lib/Core/Components/DefaultComponents/index.d.ts +2 -1
  41. package/lib/Core/Components/DefaultComponents/index.d.ts.map +1 -1
  42. package/lib/Core/Components/DynamicFieldConfiguration.d.ts +3 -1
  43. package/lib/Core/Components/DynamicFieldConfiguration.d.ts.map +1 -1
  44. package/lib/Core/Components/DynamicFieldConfiguration.js +7 -4
  45. package/lib/Core/Components/DynamicFieldConfiguration.js.map +1 -1
  46. package/lib/Core/Components/Filters/AdvanceFilter.d.ts.map +1 -1
  47. package/lib/Core/Components/Filters/AdvanceFilter.js +5 -5
  48. package/lib/Core/Components/Filters/AdvanceFilter.js.map +1 -1
  49. package/lib/Core/Components/Filters/BooleanFilter.js +2 -2
  50. package/lib/Core/Components/Filters/BooleanFilter.js.map +1 -1
  51. package/lib/Core/Components/Filters/CommonFilter.js +1 -1
  52. package/lib/Core/Components/Filters/CommonFilter.js.map +1 -1
  53. package/lib/Core/Components/Filters/SelectFilter.d.ts.map +1 -1
  54. package/lib/Core/Components/Filters/SelectFilter.js +24 -5
  55. package/lib/Core/Components/Filters/SelectFilter.js.map +1 -1
  56. package/lib/Core/Components/Filters/SimpleFilter.js +2 -3
  57. package/lib/Core/Components/Filters/SimpleFilter.js.map +1 -1
  58. package/lib/Core/Components/GroupRenderer/index.d.ts.map +1 -1
  59. package/lib/Core/Components/GroupRenderer/index.js +7 -2
  60. package/lib/Core/Components/GroupRenderer/index.js.map +1 -1
  61. package/lib/Core/Components/HeaderMenu/index.d.ts.map +1 -1
  62. package/lib/Core/Components/HeaderMenu/index.js +2 -3
  63. package/lib/Core/Components/HeaderMenu/index.js.map +1 -1
  64. package/lib/Core/Components/NotificationManager.js +1 -1
  65. package/lib/Core/Components/NotificationManager.js.map +1 -1
  66. package/lib/Core/Components/RFColumnConfigurator.d.ts +1 -1
  67. package/lib/Core/Components/RFColumnConfigurator.d.ts.map +1 -1
  68. package/lib/Core/Components/RFColumnConfigurator.js +9 -6
  69. package/lib/Core/Components/RFColumnConfigurator.js.map +1 -1
  70. package/lib/Core/Components/RSWrapper/index.d.ts.map +1 -1
  71. package/lib/Core/Components/RSWrapper/index.js +4 -0
  72. package/lib/Core/Components/RSWrapper/index.js.map +1 -1
  73. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts +1 -0
  74. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts.map +1 -1
  75. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js +6 -1
  76. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js.map +1 -1
  77. package/lib/Core/Components/Toolbar/AdvanceToolbar.d.ts.map +1 -1
  78. package/lib/Core/Components/Toolbar/AdvanceToolbar.js +13 -4
  79. package/lib/Core/Components/Toolbar/AdvanceToolbar.js.map +1 -1
  80. package/lib/Core/Components/Toolbar/ColumnSelector.d.ts.map +1 -1
  81. package/lib/Core/Components/Toolbar/ColumnSelector.js +13 -3
  82. package/lib/Core/Components/Toolbar/ColumnSelector.js.map +1 -1
  83. package/lib/Core/Components/Toolbar/FieldSelector.js +1 -1
  84. package/lib/Core/Components/Toolbar/FieldSelector.js.map +1 -1
  85. package/lib/Core/Components/Toolbar/Map/MapToolbar.d.ts +2 -2
  86. package/lib/Core/Components/Toolbar/Map/MapToolbar.d.ts.map +1 -1
  87. package/lib/Core/Components/Toolbar/Map/MapToolbar.js +17 -18
  88. package/lib/Core/Components/Toolbar/Map/MapToolbar.js.map +1 -1
  89. package/lib/Core/Components/Toolbar/RefreshBanner.d.ts +5 -1
  90. package/lib/Core/Components/Toolbar/RefreshBanner.d.ts.map +1 -1
  91. package/lib/Core/Components/Toolbar/RefreshBanner.js +22 -6
  92. package/lib/Core/Components/Toolbar/RefreshBanner.js.map +1 -1
  93. package/lib/Core/Components/Toolbar/SimpleToolbar.d.ts.map +1 -1
  94. package/lib/Core/Components/Toolbar/SimpleToolbar.js +2 -2
  95. package/lib/Core/Components/Toolbar/SimpleToolbar.js.map +1 -1
  96. package/lib/Core/Components/Toolbar/hooks/useFilter.d.ts.map +1 -1
  97. package/lib/Core/Components/Toolbar/hooks/useFilter.js +1 -1
  98. package/lib/Core/Components/Toolbar/hooks/useFilter.js.map +1 -1
  99. package/lib/Core/Components/Toolbar/hooks/useMore.d.ts.map +1 -1
  100. package/lib/Core/Components/Toolbar/hooks/useMore.js +23 -5
  101. package/lib/Core/Components/Toolbar/hooks/useMore.js.map +1 -1
  102. package/lib/Core/Components/Toolbar/hooks/usePersonalization.d.ts +1 -0
  103. package/lib/Core/Components/Toolbar/hooks/usePersonalization.d.ts.map +1 -1
  104. package/lib/Core/Components/Toolbar/hooks/usePersonalization.js +4 -2
  105. package/lib/Core/Components/Toolbar/hooks/usePersonalization.js.map +1 -1
  106. package/lib/Core/Components/Toolbar/utils/utils.d.ts +3 -3
  107. package/lib/Core/Components/Toolbar/utils/utils.d.ts.map +1 -1
  108. package/lib/Core/Components/Toolbar/utils/utils.js +16 -10
  109. package/lib/Core/Components/Toolbar/utils/utils.js.map +1 -1
  110. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer.d.ts.map +1 -1
  111. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer.js +2 -2
  112. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer.js.map +1 -1
  113. package/lib/Core/Components/Virtualise/VirtualizeInfinite.js +6 -4
  114. package/lib/Core/Components/Virtualise/VirtualizeInfinite.js.map +1 -1
  115. package/lib/Core/Components/Virtualise/index.js +7 -5
  116. package/lib/Core/Components/Virtualise/index.js.map +1 -1
  117. package/lib/Core/Utils/fetchRowActions.d.ts +16 -0
  118. package/lib/Core/Utils/fetchRowActions.d.ts.map +1 -0
  119. package/lib/Core/Utils/fetchRowActions.js +60 -0
  120. package/lib/Core/Utils/fetchRowActions.js.map +1 -0
  121. package/lib/Core/Utils/styles.d.ts +9 -0
  122. package/lib/Core/Utils/styles.d.ts.map +1 -1
  123. package/lib/Core/Utils/styles.js +8 -3
  124. package/lib/Core/Utils/styles.js.map +1 -1
  125. package/lib/Core/Views/Gallery/Components/GalleryCard.d.ts +1 -1
  126. package/lib/Core/Views/Gallery/Components/GalleryCard.d.ts.map +1 -1
  127. package/lib/Core/Views/Gallery/Components/GalleryCard.js +13 -9
  128. package/lib/Core/Views/Gallery/Components/GalleryCard.js.map +1 -1
  129. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.d.ts.map +1 -1
  130. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.js +8 -5
  131. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.js.map +1 -1
  132. package/lib/Core/Views/Gallery/Gallery.types.d.ts +1 -0
  133. package/lib/Core/Views/Gallery/Gallery.types.d.ts.map +1 -1
  134. package/lib/Core/Views/Gallery/Gallery.types.js.map +1 -1
  135. package/lib/Core/Views/Gallery/GalleryContainer.d.ts.map +1 -1
  136. package/lib/Core/Views/Gallery/GalleryContainer.js +1 -1
  137. package/lib/Core/Views/Gallery/GalleryContainer.js.map +1 -1
  138. package/lib/Core/Views/Gallery/index.d.ts +1 -1
  139. package/lib/Core/Views/Gallery/index.d.ts.map +1 -1
  140. package/lib/Core/Views/Gallery/index.js +6 -9
  141. package/lib/Core/Views/Gallery/index.js.map +1 -1
  142. package/lib/Core/Views/Kanban/Kanban.styles.d.ts +16 -0
  143. package/lib/Core/Views/Kanban/Kanban.styles.d.ts.map +1 -0
  144. package/lib/Core/Views/Kanban/Kanban.styles.js +58 -0
  145. package/lib/Core/Views/Kanban/Kanban.styles.js.map +1 -0
  146. package/lib/Core/Views/Kanban/Kanban.types.d.ts +10 -0
  147. package/lib/Core/Views/Kanban/Kanban.types.d.ts.map +1 -0
  148. package/lib/Core/Views/Kanban/Kanban.types.js +2 -0
  149. package/lib/Core/Views/Kanban/Kanban.types.js.map +1 -0
  150. package/lib/Core/Views/Kanban/KanbanCard.d.ts +7 -0
  151. package/lib/Core/Views/Kanban/KanbanCard.d.ts.map +1 -0
  152. package/lib/Core/Views/Kanban/KanbanCard.js +23 -0
  153. package/lib/Core/Views/Kanban/KanbanCard.js.map +1 -0
  154. package/lib/Core/Views/Kanban/KanbanLane.d.ts +23 -0
  155. package/lib/Core/Views/Kanban/KanbanLane.d.ts.map +1 -0
  156. package/lib/Core/Views/Kanban/KanbanLane.js +21 -0
  157. package/lib/Core/Views/Kanban/KanbanLane.js.map +1 -0
  158. package/lib/Core/Views/Kanban/KanbanLaneHeader.d.ts +12 -0
  159. package/lib/Core/Views/Kanban/KanbanLaneHeader.d.ts.map +1 -0
  160. package/lib/Core/Views/Kanban/KanbanLaneHeader.js +16 -0
  161. package/lib/Core/Views/Kanban/KanbanLaneHeader.js.map +1 -0
  162. package/lib/Core/Views/Kanban/KanbanLaneVirtualizer.d.ts +20 -0
  163. package/lib/Core/Views/Kanban/KanbanLaneVirtualizer.d.ts.map +1 -0
  164. package/lib/Core/Views/Kanban/KanbanLaneVirtualizer.js +37 -0
  165. package/lib/Core/Views/Kanban/KanbanLaneVirtualizer.js.map +1 -0
  166. package/lib/Core/Views/Kanban/hooks/useKanbanLanesVirtualization.d.ts +19 -0
  167. package/lib/Core/Views/Kanban/hooks/useKanbanLanesVirtualization.d.ts.map +1 -0
  168. package/lib/Core/Views/Kanban/hooks/useKanbanLanesVirtualization.js +32 -0
  169. package/lib/Core/Views/Kanban/hooks/useKanbanLanesVirtualization.js.map +1 -0
  170. package/lib/Core/Views/Kanban/index.d.ts +9 -0
  171. package/lib/Core/Views/Kanban/index.d.ts.map +1 -0
  172. package/lib/Core/Views/Kanban/index.js +63 -0
  173. package/lib/Core/Views/Kanban/index.js.map +1 -0
  174. package/lib/Core/Views/Table/CellWrapper.d.ts +3 -1
  175. package/lib/Core/Views/Table/CellWrapper.d.ts.map +1 -1
  176. package/lib/Core/Views/Table/CellWrapper.js +4 -3
  177. package/lib/Core/Views/Table/CellWrapper.js.map +1 -1
  178. package/lib/Core/Views/Table/Row.d.ts.map +1 -1
  179. package/lib/Core/Views/Table/Row.js +22 -10
  180. package/lib/Core/Views/Table/Row.js.map +1 -1
  181. package/lib/Core/Views/Table/StyledTableContainer.d.ts.map +1 -1
  182. package/lib/Core/Views/Table/StyledTableContainer.js +110 -32
  183. package/lib/Core/Views/Table/StyledTableContainer.js.map +1 -1
  184. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts +3 -1
  185. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts.map +1 -1
  186. package/lib/Core/Views/Table/VirtualizeWrapper.js +6 -5
  187. package/lib/Core/Views/Table/VirtualizeWrapper.js.map +1 -1
  188. package/lib/Core/Views/Table/index.d.ts.map +1 -1
  189. package/lib/Core/Views/Table/index.js +15 -6
  190. package/lib/Core/Views/Table/index.js.map +1 -1
  191. package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts +11 -0
  192. package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts.map +1 -0
  193. package/lib/Core/Views/Table/useMasterDetailCleanup.js +27 -0
  194. package/lib/Core/Views/Table/useMasterDetailCleanup.js.map +1 -0
  195. package/lib/Core/Views/Table/useMasterDetailHost.d.ts +14 -0
  196. package/lib/Core/Views/Table/useMasterDetailHost.d.ts.map +1 -0
  197. package/lib/Core/Views/Table/useMasterDetailHost.js +56 -0
  198. package/lib/Core/Views/Table/useMasterDetailHost.js.map +1 -0
  199. package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts +13 -0
  200. package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts.map +1 -0
  201. package/lib/Core/Views/Table/useMasterDetailRenderer.js +23 -0
  202. package/lib/Core/Views/Table/useMasterDetailRenderer.js.map +1 -0
  203. package/lib/Core/Views/Table/useMasterDetailRow.d.ts +9 -0
  204. package/lib/Core/Views/Table/useMasterDetailRow.d.ts.map +1 -0
  205. package/lib/Core/Views/Table/useMasterDetailRow.js +55 -0
  206. package/lib/Core/Views/Table/useMasterDetailRow.js.map +1 -0
  207. package/lib/Core/Views/Table/useMasterDetailState.d.ts +21 -0
  208. package/lib/Core/Views/Table/useMasterDetailState.d.ts.map +1 -0
  209. package/lib/Core/Views/Table/useMasterDetailState.js +33 -0
  210. package/lib/Core/Views/Table/useMasterDetailState.js.map +1 -0
  211. package/lib/Core/Views/Timeline/Timeline.d.ts.map +1 -1
  212. package/lib/Core/Views/Timeline/Timeline.js +2 -2
  213. package/lib/Core/Views/Timeline/Timeline.js.map +1 -1
  214. package/lib/Core/Views/Timeline/Timeline.styles.d.ts +2 -2
  215. package/lib/Core/Views/Timeline/Timeline.types.d.ts +9 -10
  216. package/lib/Core/Views/Timeline/Timeline.types.d.ts.map +1 -1
  217. package/lib/Core/Views/Timeline/Timeline.types.js.map +1 -1
  218. package/lib/Core/Views/Timeline/TimelineGroup.d.ts +4 -10
  219. package/lib/Core/Views/Timeline/TimelineGroup.d.ts.map +1 -1
  220. package/lib/Core/Views/Timeline/TimelineGroup.js +5 -6
  221. package/lib/Core/Views/Timeline/TimelineGroup.js.map +1 -1
  222. package/lib/Core/Views/Timeline/index.d.ts.map +1 -1
  223. package/lib/Core/Views/Timeline/index.js +38 -10
  224. package/lib/Core/Views/Timeline/index.js.map +1 -1
  225. package/lib/Core/Views/Timeline/utils.d.ts.map +1 -1
  226. package/lib/Core/Views/Timeline/utils.js +2 -1
  227. package/lib/Core/Views/Timeline/utils.js.map +1 -1
  228. package/lib/Core/constants.d.ts +4 -0
  229. package/lib/Core/constants.d.ts.map +1 -1
  230. package/lib/Core/constants.js +4 -0
  231. package/lib/Core/constants.js.map +1 -1
  232. package/lib/Core/templateFeatureSupport.js +2 -2
  233. package/lib/Core/templateFeatureSupport.js.map +1 -1
  234. package/package.json +9 -8
  235. package/lib/Core/Hooks/a11y/useAnnounceGroup.d.ts +0 -11
  236. package/lib/Core/Hooks/a11y/useAnnounceGroup.d.ts.map +0 -1
  237. package/lib/Core/Hooks/a11y/useAnnounceGroup.js +0 -52
  238. package/lib/Core/Hooks/a11y/useAnnounceGroup.js.map +0 -1
  239. package/lib/Core/Views/Gallery/Components/GalleryFieldValue.d.ts +0 -8
  240. package/lib/Core/Views/Gallery/Components/GalleryFieldValue.d.ts.map +0 -1
  241. package/lib/Core/Views/Gallery/Components/GalleryFieldValue.js +0 -8
  242. package/lib/Core/Views/Gallery/Components/GalleryFieldValue.js.map +0 -1
  243. package/lib/Core/Views/Gallery/Components/GalleryHeader.d.ts +0 -8
  244. package/lib/Core/Views/Gallery/Components/GalleryHeader.d.ts.map +0 -1
  245. package/lib/Core/Views/Gallery/Components/GalleryHeader.js.map +0 -1
  246. package/lib/Core/Views/Gallery/hooks/useRowActions.d.ts +0 -9
  247. package/lib/Core/Views/Gallery/hooks/useRowActions.d.ts.map +0 -1
  248. package/lib/Core/Views/Gallery/hooks/useRowActions.js +0 -25
  249. package/lib/Core/Views/Gallery/hooks/useRowActions.js.map +0 -1
  250. package/lib/Core/Views/Gallery/utils.d.ts +0 -36
  251. package/lib/Core/Views/Gallery/utils.d.ts.map +0 -1
  252. package/lib/Core/Views/Gallery/utils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.types.js","sourceRoot":"","sources":["../../../../Core/Views/Timeline/Timeline.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactElement, ReactNode, Ref } from 'react';\n\nimport type {\n BaseProps,\n DateTimeDisplayProps,\n FieldValueListProps,\n IconProps,\n NoChildrenProp,\n StatusProps\n} from '@pega/cosmos-react-core';\nimport type { Group } from 'pega-repeating-structures-core/types/State.types';\n\nexport interface ActivityObject {\n /** Unique id for activity */\n id: string;\n /** Date as ISO8601 string, timestamp or native Date object. */\n date: string | number | Date;\n /**\n * Controls date time variant. Set to 'time' when groupBy is 'date'.\n * @default datetime\n */\n dateVariant?: DateTimeDisplayProps['variant'];\n /** Header region for rendering text and links. */\n title: ReactNode;\n /** Name of the icon (to be selected from default Pega icon set) */\n icon?: IconProps['name'];\n /**\n * Default visually expanded state for the activity item.\n * @default false\n */\n defaultExpanded?: boolean;\n /** Represents the current status of activity */\n status?: StatusProps;\n /** The set of field values to render in the list. */\n content?: FieldValueListProps['fields'] | ReactElement;\n}\n\nexport default interface TimelineProps extends BaseProps, NoChildrenProp {\n /** List of activity */\n activities: { header: ReactNode; activity: ActivityObject[] }[];\n /** Current time as Date */\n currentTime: Date;\n /** Grouping configuration */\n groupBy?: Group;\n /**\n * Whether groups are expanded by default.\n * Only applies when `groupBy` is provided.\n * @default true\n */\n defaultGroupsExpanded?: boolean;\n /**\n * Show a Progress indicator at the end of a list where newly loaded items will be appended.\n * @default false\n */\n loading?: boolean;\n /** Callback to fetch more activity items */\n loadMore?: () => void;\n /** Ref for the wrapping element. */\n ref?: Ref<HTMLTableElement>;\n}\n"]}
1
+ {"version":3,"file":"Timeline.types.js","sourceRoot":"","sources":["../../../../Core/Views/Timeline/Timeline.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactElement, ReactNode, Ref } from 'react';\n\nimport type {\n BaseProps,\n DateTimeDisplayProps,\n FieldValueListProps,\n IconProps,\n NoChildrenProp,\n StatusProps\n} from '@pega/cosmos-react-core';\nimport type { Group } from 'pega-repeating-structures-core/types/State.types';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nexport interface ActivityObject {\n /** Unique id for activity */\n id: string;\n /** Date as ISO8601 string, timestamp or native Date object. */\n date: string | number | Date;\n /**\n * Controls date time variant. Set to 'time' when groupBy is 'date'.\n * @default datetime\n */\n dateVariant?: DateTimeDisplayProps['variant'];\n /** Header region for rendering text and links. */\n title: ReactNode;\n /** Name of the icon (to be selected from default Pega icon set) */\n icon?: IconProps['name'];\n /**\n * Default visually expanded state for the activity item.\n * @default false\n */\n defaultExpanded?: boolean;\n /** Represents the current status of activity */\n status?: StatusProps;\n /** The set of field values to render in the list. */\n content?: FieldValueListProps['fields'] | ReactElement;\n}\n\nexport interface ActivityGroup {\n header: RsCoreTypes.GroupGenerator;\n headerContent: ReactNode;\n activity: ActivityObject[];\n}\n\nexport default interface TimelineProps extends BaseProps, NoChildrenProp {\n /** List of activity */\n activities: ActivityGroup[];\n /** Current time as Date */\n currentTime: Date;\n /** Grouping configuration */\n groupBy?: Group;\n /**\n * Show a Progress indicator at the end of a list where newly loaded items will be appended.\n * @default false\n */\n loading?: boolean;\n /** Callback to fetch more activity items */\n loadMore?: () => void;\n /** Triggers the expand or collapse action for a group header. */\n toggleGroupExpansion: RsCoreTypes.View['type']['toggleGroupExpansion'];\n /** Ref for the wrapping element. */\n ref?: Ref<HTMLTableElement>;\n}\n"]}
@@ -1,13 +1,7 @@
1
- import type { ReactNode } from 'react';
2
- import type { Group } from 'pega-repeating-structures-core/types/State.types';
3
- import type { ActivityObject } from './Timeline.types';
4
- interface TimelineGroupProps {
5
- header: ReactNode;
6
- activity: ActivityObject[];
7
- groupBy: Group | undefined;
8
- currentTime: Date;
9
- defaultExpanded: boolean;
1
+ import type TimelineProps from './Timeline.types';
2
+ import type { ActivityGroup } from './Timeline.types';
3
+ interface TimelineGroupProps extends ActivityGroup, Pick<TimelineProps, 'groupBy' | 'currentTime' | 'toggleGroupExpansion'> {
10
4
  }
11
- declare const TimelineGroup: ({ header, activity, groupBy, currentTime, defaultExpanded }: TimelineGroupProps) => import("react/jsx-runtime").JSX.Element;
5
+ declare const TimelineGroup: ({ header, headerContent, activity, groupBy, currentTime, toggleGroupExpansion }: TimelineGroupProps) => import("react/jsx-runtime").JSX.Element;
12
6
  export default TimelineGroup;
13
7
  //# sourceMappingURL=TimelineGroup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimelineGroup.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Timeline/TimelineGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kDAAkD,CAAC;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASvD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,IAAI,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,QAAA,MAAM,aAAa,GAAI,6DAMpB,kBAAkB,4CA8CpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"TimelineGroup.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Timeline/TimelineGroup.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAStD,UAAU,kBACR,SAAQ,aAAa,EACnB,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,aAAa,GAAG,sBAAsB,CAAC;CAAG;AAE9E,QAAA,MAAM,aAAa,GAAI,iFAOpB,kBAAkB,4CA8CpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,15 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from 'react';
3
2
  import { ExpandCollapse, ExpandCollapseButton, Grid, Text, useI18n, useUID } from '@pega/cosmos-react-core';
4
3
  import { StyledGroupContentList, StyledGroupHeader, StyledTimelineGroup, timelineItemsGridProps } from './Timeline.styles';
5
4
  import TimelineItem from './TimelineItem';
6
- const TimelineGroup = ({ header, activity, groupBy, currentTime, defaultExpanded }) => {
7
- const [expanded, setExpanded] = useState(defaultExpanded);
8
- const headerId = useUID();
5
+ const TimelineGroup = ({ header, headerContent, activity, groupBy, currentTime, toggleGroupExpansion }) => {
9
6
  const contentId = useUID();
10
7
  const t = useI18n();
11
- const toggleLabel = expanded ? t('collapse') : t('expand');
12
- return (_jsxs(StyledTimelineGroup, { "data-timeline-group": true, children: [_jsxs(StyledGroupHeader, { children: [_jsx(ExpandCollapseButton, { expanded: expanded, onToggle: () => setExpanded(prev => !prev), iconOnly: true, compact: true, "aria-label": toggleLabel, "aria-describedby": headerId, "aria-controls": contentId }), _jsx(Text, { variant: 'h3', id: headerId, children: header })] }), _jsx(ExpandCollapse, { collapsed: !expanded, dimension: 'height', as: 'section', children: _jsx("div", { id: contentId, role: 'region', "aria-labelledby": headerId, children: _jsx(Grid, { ...timelineItemsGridProps, as: StyledGroupContentList, children: activity.map((item, index) => (_jsx(TimelineItem, { item: {
8
+ const toggleLabel = header.isExpanded ? t('collapse') : t('expand');
9
+ return (_jsxs(StyledTimelineGroup, { "data-timeline-group": true, children: [_jsxs(StyledGroupHeader, { children: [_jsx(ExpandCollapseButton, { expanded: header.isExpanded, onToggle: () => {
10
+ toggleGroupExpansion({ groupHeader: header });
11
+ }, iconOnly: true, compact: true, "aria-label": toggleLabel, "aria-describedby": header.uniqueId, "aria-controls": contentId }), _jsx(Text, { variant: 'h3', id: header.uniqueId, children: headerContent })] }), _jsx(ExpandCollapse, { collapsed: !header.isExpanded, dimension: 'height', as: 'section', children: _jsx("div", { id: contentId, role: 'region', "aria-labelledby": header.uniqueId, children: _jsx(Grid, { ...timelineItemsGridProps, as: StyledGroupContentList, children: activity.map((item, index) => (_jsx(TimelineItem, { item: {
13
12
  ...item,
14
13
  ...(groupBy?.dateFunction === 'DAYS' &&
15
14
  (!item.dateVariant || item.dateVariant === 'datetime') && {
@@ -1 +1 @@
1
- {"version":3,"file":"TimelineGroup.js","sourceRoot":"","sources":["../../../../Core/Views/Timeline/TimelineGroup.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,MAAM,EACP,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAU1C,MAAM,aAAa,GAAG,CAAC,EACrB,MAAM,EACN,QAAQ,EACR,OAAO,EACP,WAAW,EACX,eAAe,EACI,EAAE,EAAE;IACvB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE3D,OAAO,CACL,MAAC,mBAAmB,4CAClB,MAAC,iBAAiB,eAChB,KAAC,oBAAoB,IACnB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAC1C,QAAQ,QACR,OAAO,sBACK,WAAW,sBACL,QAAQ,mBACX,SAAS,GACxB,EACF,KAAC,IAAI,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAE,QAAQ,YAC5B,MAAM,GACF,IACW,EACpB,KAAC,cAAc,IAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAC,QAAQ,EAAC,EAAE,EAAC,SAAS,YACnE,cAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAC,QAAQ,qBAAkB,QAAQ,YACzD,KAAC,IAAI,OAAK,sBAAsB,EAAE,EAAE,EAAE,sBAAsB,YACzD,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC7B,KAAC,YAAY,IAEX,IAAI,EAAE;gCACJ,GAAG,IAAI;gCACP,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM;oCAClC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,IAAI;oCACxD,WAAW,EAAE,MAAM;iCACpB,CAAC;6BACL,EACD,YAAY,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EACvC,YAAY,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EACvC,WAAW,EAAE,WAAW,IAVnB,IAAI,CAAC,EAAE,CAWZ,CACH,CAAC,GACG,GACH,GACS,IACG,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import type { ReactNode } from 'react';\nimport { useState } from 'react';\n\nimport {\n ExpandCollapse,\n ExpandCollapseButton,\n Grid,\n Text,\n useI18n,\n useUID\n} from '@pega/cosmos-react-core';\nimport type { Group } from 'pega-repeating-structures-core/types/State.types';\n\nimport type { ActivityObject } from './Timeline.types';\nimport {\n StyledGroupContentList,\n StyledGroupHeader,\n StyledTimelineGroup,\n timelineItemsGridProps\n} from './Timeline.styles';\nimport TimelineItem from './TimelineItem';\n\ninterface TimelineGroupProps {\n header: ReactNode;\n activity: ActivityObject[];\n groupBy: Group | undefined;\n currentTime: Date;\n defaultExpanded: boolean;\n}\n\nconst TimelineGroup = ({\n header,\n activity,\n groupBy,\n currentTime,\n defaultExpanded\n}: TimelineGroupProps) => {\n const [expanded, setExpanded] = useState(defaultExpanded);\n const headerId = useUID();\n const contentId = useUID();\n const t = useI18n();\n const toggleLabel = expanded ? t('collapse') : t('expand');\n\n return (\n <StyledTimelineGroup data-timeline-group>\n <StyledGroupHeader>\n <ExpandCollapseButton\n expanded={expanded}\n onToggle={() => setExpanded(prev => !prev)}\n iconOnly\n compact\n aria-label={toggleLabel}\n aria-describedby={headerId}\n aria-controls={contentId}\n />\n <Text variant='h3' id={headerId}>\n {header}\n </Text>\n </StyledGroupHeader>\n <ExpandCollapse collapsed={!expanded} dimension='height' as='section'>\n <div id={contentId} role='region' aria-labelledby={headerId}>\n <Grid {...timelineItemsGridProps} as={StyledGroupContentList}>\n {activity.map((item, index) => (\n <TimelineItem\n key={item.id}\n item={{\n ...item,\n ...(groupBy?.dateFunction === 'DAYS' &&\n (!item.dateVariant || item.dateVariant === 'datetime') && {\n dateVariant: 'time'\n })\n }}\n prevItemDate={activity[index - 1]?.date}\n nextItemDate={activity[index + 1]?.date}\n currentTime={currentTime}\n />\n ))}\n </Grid>\n </div>\n </ExpandCollapse>\n </StyledTimelineGroup>\n );\n};\n\nexport default TimelineGroup;\n"]}
1
+ {"version":3,"file":"TimelineGroup.js","sourceRoot":"","sources":["../../../../Core/Views/Timeline/TimelineGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,MAAM,EACP,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAM1C,MAAM,aAAa,GAAG,CAAC,EACrB,MAAM,EACN,aAAa,EACb,QAAQ,EACR,OAAO,EACP,WAAW,EACX,oBAAoB,EACD,EAAE,EAAE;IACvB,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEpE,OAAO,CACL,MAAC,mBAAmB,4CAClB,MAAC,iBAAiB,eAChB,KAAC,oBAAoB,IACnB,QAAQ,EAAE,MAAM,CAAC,UAAU,EAC3B,QAAQ,EAAE,GAAG,EAAE;4BACb,oBAAoB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;wBAChD,CAAC,EACD,QAAQ,QACR,OAAO,sBACK,WAAW,sBACL,MAAM,CAAC,QAAQ,mBAClB,SAAS,GACxB,EACF,KAAC,IAAI,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,YACnC,aAAa,GACT,IACW,EACpB,KAAC,cAAc,IAAC,SAAS,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAC,QAAQ,EAAC,EAAE,EAAC,SAAS,YAC5E,cAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAC,QAAQ,qBAAkB,MAAM,CAAC,QAAQ,YAChE,KAAC,IAAI,OAAK,sBAAsB,EAAE,EAAE,EAAE,sBAAsB,YACzD,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC7B,KAAC,YAAY,IAEX,IAAI,EAAE;gCACJ,GAAG,IAAI;gCACP,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM;oCAClC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,IAAI;oCACxD,WAAW,EAAE,MAAM;iCACpB,CAAC;6BACL,EACD,YAAY,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EACvC,YAAY,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EACvC,WAAW,EAAE,WAAW,IAVnB,IAAI,CAAC,EAAE,CAWZ,CACH,CAAC,GACG,GACH,GACS,IACG,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import {\n ExpandCollapse,\n ExpandCollapseButton,\n Grid,\n Text,\n useI18n,\n useUID\n} from '@pega/cosmos-react-core';\n\nimport type TimelineProps from './Timeline.types';\nimport type { ActivityGroup } from './Timeline.types';\nimport {\n StyledGroupContentList,\n StyledGroupHeader,\n StyledTimelineGroup,\n timelineItemsGridProps\n} from './Timeline.styles';\nimport TimelineItem from './TimelineItem';\n\ninterface TimelineGroupProps\n extends ActivityGroup,\n Pick<TimelineProps, 'groupBy' | 'currentTime' | 'toggleGroupExpansion'> {}\n\nconst TimelineGroup = ({\n header,\n headerContent,\n activity,\n groupBy,\n currentTime,\n toggleGroupExpansion\n}: TimelineGroupProps) => {\n const contentId = useUID();\n const t = useI18n();\n const toggleLabel = header.isExpanded ? t('collapse') : t('expand');\n\n return (\n <StyledTimelineGroup data-timeline-group>\n <StyledGroupHeader>\n <ExpandCollapseButton\n expanded={header.isExpanded}\n onToggle={() => {\n toggleGroupExpansion({ groupHeader: header });\n }}\n iconOnly\n compact\n aria-label={toggleLabel}\n aria-describedby={header.uniqueId}\n aria-controls={contentId}\n />\n <Text variant='h3' id={header.uniqueId}>\n {headerContent}\n </Text>\n </StyledGroupHeader>\n <ExpandCollapse collapsed={!header.isExpanded} dimension='height' as='section'>\n <div id={contentId} role='region' aria-labelledby={header.uniqueId}>\n <Grid {...timelineItemsGridProps} as={StyledGroupContentList}>\n {activity.map((item, index) => (\n <TimelineItem\n key={item.id}\n item={{\n ...item,\n ...(groupBy?.dateFunction === 'DAYS' &&\n (!item.dateVariant || item.dateVariant === 'datetime') && {\n dateVariant: 'time'\n })\n }}\n prevItemDate={activity[index - 1]?.date}\n nextItemDate={activity[index + 1]?.date}\n currentTime={currentTime}\n />\n ))}\n </Grid>\n </div>\n </ExpandCollapse>\n </StyledTimelineGroup>\n );\n};\n\nexport default TimelineGroup;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Timeline/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAqElE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;CACxB;AAED,QAAA,MAAM,QAAQ,GAAI,UAAU,iBAAiB,4CA6F5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Timeline/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAiGlE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;CACxB;AAED,QAAA,MAAM,QAAQ,GAAI,UAAU,iBAAiB,4CAwG5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -50,10 +50,34 @@ const StyledRowContainer = styled.div(({ isFullscreen, view }) => {
50
50
  });
51
51
  const INITIAL_DEFAULT_CHUNK_SIZE = 40;
52
52
  const APPEND_DEFAULT_CHUNK_SIZE = 25;
53
+ /**
54
+ * Calculates the pagination endIndex by walking groups in order.
55
+ * - Collapsed groups: their full row count is always added (rows are loaded but hidden).
56
+ * - Expanded groups: group's row count added up to chunk size limit
57
+ */
58
+ const calculatePaginationEndIndex = (groupHeaders, chunkSize) => {
59
+ if (!groupHeaders?.length)
60
+ return chunkSize;
61
+ let endIndex = 0;
62
+ let remainingBudget = chunkSize;
63
+ for (const header of groupHeaders) {
64
+ if (!header.isExpanded) {
65
+ endIndex += header.count ?? 0;
66
+ }
67
+ else {
68
+ const rowsToLoad = Math.min(remainingBudget, header.count ?? 0);
69
+ endIndex += rowsToLoad;
70
+ remainingBudget -= rowsToLoad;
71
+ if (remainingBudget <= 0)
72
+ break;
73
+ }
74
+ }
75
+ return endIndex;
76
+ };
53
77
  const Timeline = ({ view }) => {
54
78
  const isFullscreen = !!useFullscreenContext()?.[0];
55
79
  const [translate] = useTranslate();
56
- const { rows, meta = { fieldDefs: [], itemKey: '' }, columns, groupHeaders, state, domContainer, hasNoRecords } = view;
80
+ const { rows, meta = { fieldDefs: [], itemKey: '' }, columns, groupHeaders, state, domContainer, hasNoRecords, type: { toggleGroupExpansion } } = view;
57
81
  const { filterExpression, externalState, searchText, paginationOptions, groups } = state;
58
82
  const ref = useRef(null);
59
83
  const [loading, setLoading] = useState(false);
@@ -64,17 +88,21 @@ const Timeline = ({ view }) => {
64
88
  const onLoadMore = useCallback(() => {
65
89
  if (!loading) {
66
90
  setLoading(true);
67
- const endIndex = rows.length + visibleGroupHeaders + (meta.numberOfRows || APPEND_DEFAULT_CHUNK_SIZE);
91
+ const endIndex = visibleGroupHeaders +
92
+ calculatePaginationEndIndex(groupHeaders, (rows?.length ?? 0) + (meta.numberOfRows || APPEND_DEFAULT_CHUNK_SIZE));
68
93
  view.type.onPaginate({ startIndex: 0, endIndex, id: 'rootVirtualiser' });
69
94
  }
70
- }, [loading, view.type, meta.numberOfRows, rows.length, visibleGroupHeaders]);
95
+ }, [loading, view.type, meta.numberOfRows, rows?.length, visibleGroupHeaders, groupHeaders]);
71
96
  useEffect(() => {
72
- view.type.onPaginate({
73
- startIndex: 0,
74
- endIndex: meta.numberOfRows || INITIAL_DEFAULT_CHUNK_SIZE,
75
- id: 'rootVirtualiser'
76
- });
77
- }, [view.type, meta.numberOfRows]);
97
+ const rowsLength = rows?.length ?? 0;
98
+ if (rowsLength !== 0 || rowsLength === count.total)
99
+ return;
100
+ if (!loading) {
101
+ setLoading(true);
102
+ const endIndex = calculatePaginationEndIndex(groupHeaders, meta.numberOfRows || INITIAL_DEFAULT_CHUNK_SIZE);
103
+ view.type.onPaginate({ startIndex: 0, endIndex, id: 'rootVirtualiser' });
104
+ }
105
+ }, [view.type, meta.numberOfRows, rows, groupHeaders, count.total, loading]);
78
106
  useEffect(() => {
79
107
  setHasMore(rows.length !== count.total);
80
108
  if (paginationEndIndex <= rows.length + visibleGroupHeaders || rows.length === count.total) {
@@ -86,7 +114,7 @@ const Timeline = ({ view }) => {
86
114
  if (hasMore) {
87
115
  loadMore = onLoadMore;
88
116
  }
89
- return (_jsx(RsCardWrapper, { children: _jsxs(StyledTimelineContainer, { view: view, isFullscreen: isFullscreen, children: [_jsx(Toolbar, { view: view }), _jsx(RenderView, { view: view, type: EXTERNAL_FILTERS }), _jsxs(StyledRowContainer, { className: 'container row-container', isFullscreen: isFullscreen, view: view, children: [_jsx(StyledTimeline, { activities: activities, currentTime: new Date(), groupBy: groups?.[0], loading: loading || !rows || !!view.isLoading, loadMore: loadMore, "data-test-id": 'Timeline', ref: ref }), domContainer && hasNoRecords && (_jsx(EmptyContainer, { message: isFilterApplied({ filterExpression, searchText, externalState }, meta.externalFilters)
117
+ return (_jsx(RsCardWrapper, { children: _jsxs(StyledTimelineContainer, { view: view, isFullscreen: isFullscreen, children: [_jsx(Toolbar, { view: view }), _jsx(RenderView, { view: view, type: EXTERNAL_FILTERS }), _jsxs(StyledRowContainer, { className: 'container row-container', isFullscreen: isFullscreen, view: view, children: [_jsx(StyledTimeline, { activities: activities, currentTime: new Date(), groupBy: groups?.[0], loading: loading || !rows || !!view.isLoading, loadMore: loadMore, toggleGroupExpansion: toggleGroupExpansion, "data-test-id": 'Timeline', ref: ref }), domContainer && hasNoRecords && (_jsx(EmptyContainer, { message: isFilterApplied({ filterExpression, searchText, externalState }, meta.externalFilters)
90
118
  ? translate('No records found')
91
119
  : translate('No records'), domContainer: domContainer, shouldAnnounce: false }))] })] }) }));
92
120
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Views/Timeline/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useCallback, useMemo, useState, useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { defaultThemeProp, useFullscreenContext } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\n// TODO remove ts-ignore once Toolbar migrated to TS\n// @ts-ignore\nimport Toolbar from '../../Components/Toolbar';\nimport RenderView from '../../Components/RenderingEngine/RenderView';\nimport getCount from '../../Components/Toolbar/utils/getCount';\nimport { EXTERNAL_FILTERS } from '../../constants';\nimport RsCardWrapper from '../RsCardWrapper';\nimport { generateRSDataContainerHeightStyles, generateRSHeightStyles } from '../../Utils/styles';\nimport EmptyContainer from '../../Components/DefaultComponents/EmptyContainer';\nimport { isFilterApplied } from '../../Utils';\nimport useTranslate from '../../Hooks/useTranslate';\n\nimport TimelineInner from './Timeline';\nimport getActivities from './utils';\n\nconst StyledTimeline = styled(TimelineInner)(({ theme }) => {\n return css`\n flex: 1;\n padding-inline-end: ${theme.base.spacing};\n overflow: auto;\n `;\n});\n\nStyledTimeline.defaultProps = defaultThemeProp;\n\ninterface StyledTimelineContainerProps {\n view: RsCoreTypes.View;\n isFullscreen: boolean;\n}\n\nconst StyledTimelineContainer = styled.div<StyledTimelineContainerProps>(\n ({ view, isFullscreen }) => {\n return css`\n position: relative;\n ${() => generateRSHeightStyles({ view, isFullscreen })}\n `;\n }\n);\n\ninterface StyledRowContainerProps {\n isFullscreen: boolean;\n view: RsCoreTypes.View;\n}\n\nconst StyledRowContainer = styled.div<StyledRowContainerProps>(({ isFullscreen, view }) => {\n const { bodyHeight, totalItemCount } = view;\n return css`\n ${() => generateRSDataContainerHeightStyles()};\n position: relative;\n min-height: auto;\n flex-grow: 0;\n\n /* Adjust height based on number of rows configured */\n height: ${bodyHeight && !isFullscreen ? `${bodyHeight}px` : 'auto'};\n\n ${totalItemCount === 0 &&\n css`\n /* stylelint-disable-next-line unit-allowed-list */\n min-height: 100px;\n height: inherit;\n `}\n `;\n});\n\nconst INITIAL_DEFAULT_CHUNK_SIZE = 40;\nconst APPEND_DEFAULT_CHUNK_SIZE = 25;\n\nexport interface TimelineViewProps {\n view: RsCoreTypes.View;\n}\n\nconst Timeline = ({ view }: TimelineViewProps) => {\n const isFullscreen = !!useFullscreenContext()?.[0];\n const [translate] = useTranslate();\n const {\n rows,\n meta = { fieldDefs: [] as RsCoreTypes.FieldDef[], itemKey: '' } as RsCoreTypes.Meta,\n columns,\n groupHeaders,\n state,\n domContainer,\n hasNoRecords\n } = view;\n const { filterExpression, externalState, searchText, paginationOptions, groups } = state;\n const ref = useRef<HTMLTableElement>(null);\n const [loading, setLoading] = useState(false);\n const [hasMore, setHasMore] = useState(true);\n\n const count = getCount({ view });\n const visibleGroupHeaders = groupHeaders?.filter(({ isVisible }) => isVisible)?.length ?? 0;\n const paginationEndIndex = paginationOptions?.rootVirtualiser?.endIndex ?? 0;\n\n const onLoadMore = useCallback(() => {\n if (!loading) {\n setLoading(true);\n const endIndex =\n rows!.length + visibleGroupHeaders + (meta.numberOfRows || APPEND_DEFAULT_CHUNK_SIZE);\n view.type.onPaginate({ startIndex: 0, endIndex, id: 'rootVirtualiser' });\n }\n }, [loading, view.type, meta.numberOfRows, rows!.length, visibleGroupHeaders]);\n\n useEffect(() => {\n view.type.onPaginate({\n startIndex: 0,\n endIndex: meta.numberOfRows || INITIAL_DEFAULT_CHUNK_SIZE,\n id: 'rootVirtualiser'\n });\n }, [view.type, meta.numberOfRows]);\n\n useEffect(() => {\n setHasMore(rows!.length !== count.total);\n if (paginationEndIndex <= rows!.length + visibleGroupHeaders || rows!.length === count.total) {\n setLoading(false);\n }\n }, [count.total, rows!.length, paginationEndIndex, visibleGroupHeaders]);\n\n const activities = useMemo(\n () => getActivities(groupHeaders, columns, meta, groups?.[0]),\n [groupHeaders, columns, meta, groups?.[0]]\n );\n\n let loadMore;\n if (hasMore) {\n loadMore = onLoadMore;\n }\n\n return (\n <RsCardWrapper>\n <StyledTimelineContainer view={view} isFullscreen={isFullscreen}>\n <Toolbar view={view} />\n <RenderView view={view} type={EXTERNAL_FILTERS} />\n\n <StyledRowContainer\n className='container row-container'\n isFullscreen={isFullscreen}\n view={view}\n >\n <StyledTimeline\n activities={activities}\n currentTime={new Date()}\n groupBy={groups?.[0]}\n loading={loading || !rows || !!view.isLoading}\n loadMore={loadMore}\n data-test-id='Timeline'\n ref={ref}\n />\n {domContainer && hasNoRecords && (\n <EmptyContainer\n message={\n isFilterApplied(\n { filterExpression, searchText, externalState },\n meta.externalFilters\n )\n ? translate('No records found')\n : translate('No records')\n }\n domContainer={domContainer}\n shouldAnnounce={false}\n />\n )}\n </StyledRowContainer>\n </StyledTimelineContainer>\n </RsCardWrapper>\n );\n};\n\nexport default Timeline;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Views/Timeline/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useCallback, useMemo, useState, useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { defaultThemeProp, useFullscreenContext } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\n// TODO remove ts-ignore once Toolbar migrated to TS\n// @ts-ignore\nimport Toolbar from '../../Components/Toolbar';\nimport RenderView from '../../Components/RenderingEngine/RenderView';\nimport getCount from '../../Components/Toolbar/utils/getCount';\nimport { EXTERNAL_FILTERS } from '../../constants';\nimport RsCardWrapper from '../RsCardWrapper';\nimport { generateRSDataContainerHeightStyles, generateRSHeightStyles } from '../../Utils/styles';\nimport EmptyContainer from '../../Components/DefaultComponents/EmptyContainer';\nimport { isFilterApplied } from '../../Utils';\nimport useTranslate from '../../Hooks/useTranslate';\n\nimport TimelineInner from './Timeline';\nimport getActivities from './utils';\n\nconst StyledTimeline = styled(TimelineInner)(({ theme }) => {\n return css`\n flex: 1;\n padding-inline-end: ${theme.base.spacing};\n overflow: auto;\n `;\n});\n\nStyledTimeline.defaultProps = defaultThemeProp;\n\ninterface StyledTimelineContainerProps {\n view: RsCoreTypes.View;\n isFullscreen: boolean;\n}\n\nconst StyledTimelineContainer = styled.div<StyledTimelineContainerProps>(\n ({ view, isFullscreen }) => {\n return css`\n position: relative;\n ${() => generateRSHeightStyles({ view, isFullscreen })}\n `;\n }\n);\n\ninterface StyledRowContainerProps {\n isFullscreen: boolean;\n view: RsCoreTypes.View;\n}\n\nconst StyledRowContainer = styled.div<StyledRowContainerProps>(({ isFullscreen, view }) => {\n const { bodyHeight, totalItemCount } = view;\n return css`\n ${() => generateRSDataContainerHeightStyles()};\n position: relative;\n min-height: auto;\n flex-grow: 0;\n\n /* Adjust height based on number of rows configured */\n height: ${bodyHeight && !isFullscreen ? `${bodyHeight}px` : 'auto'};\n\n ${totalItemCount === 0 &&\n css`\n /* stylelint-disable-next-line unit-allowed-list */\n min-height: 100px;\n height: inherit;\n `}\n `;\n});\n\nconst INITIAL_DEFAULT_CHUNK_SIZE = 40;\nconst APPEND_DEFAULT_CHUNK_SIZE = 25;\n\n/**\n * Calculates the pagination endIndex by walking groups in order.\n * - Collapsed groups: their full row count is always added (rows are loaded but hidden).\n * - Expanded groups: group's row count added up to chunk size limit\n */\nconst calculatePaginationEndIndex = (\n groupHeaders: RsCoreTypes.GroupGenerator[] | undefined,\n chunkSize: number\n): number => {\n if (!groupHeaders?.length) return chunkSize;\n\n let endIndex = 0;\n let remainingBudget = chunkSize;\n\n for (const header of groupHeaders) {\n if (!header.isExpanded) {\n endIndex += header.count ?? 0;\n } else {\n const rowsToLoad = Math.min(remainingBudget, header.count ?? 0);\n endIndex += rowsToLoad;\n remainingBudget -= rowsToLoad;\n if (remainingBudget <= 0) break;\n }\n }\n\n return endIndex;\n};\n\nexport interface TimelineViewProps {\n view: RsCoreTypes.View;\n}\n\nconst Timeline = ({ view }: TimelineViewProps) => {\n const isFullscreen = !!useFullscreenContext()?.[0];\n const [translate] = useTranslate();\n const {\n rows,\n meta = { fieldDefs: [] as RsCoreTypes.FieldDef[], itemKey: '' } as RsCoreTypes.Meta,\n columns,\n groupHeaders,\n state,\n domContainer,\n hasNoRecords,\n type: { toggleGroupExpansion }\n } = view;\n const { filterExpression, externalState, searchText, paginationOptions, groups } = state;\n const ref = useRef<HTMLTableElement>(null);\n const [loading, setLoading] = useState(false);\n const [hasMore, setHasMore] = useState(true);\n\n const count = getCount({ view });\n const visibleGroupHeaders = groupHeaders?.filter(({ isVisible }) => isVisible)?.length ?? 0;\n const paginationEndIndex = paginationOptions?.rootVirtualiser?.endIndex ?? 0;\n\n const onLoadMore = useCallback(() => {\n if (!loading) {\n setLoading(true);\n const endIndex =\n visibleGroupHeaders +\n calculatePaginationEndIndex(\n groupHeaders,\n (rows?.length ?? 0) + (meta.numberOfRows || APPEND_DEFAULT_CHUNK_SIZE)\n );\n view.type.onPaginate({ startIndex: 0, endIndex, id: 'rootVirtualiser' });\n }\n }, [loading, view.type, meta.numberOfRows, rows?.length, visibleGroupHeaders, groupHeaders]);\n\n useEffect(() => {\n const rowsLength = rows?.length ?? 0;\n if (rowsLength !== 0 || rowsLength === count.total) return;\n if (!loading) {\n setLoading(true);\n const endIndex = calculatePaginationEndIndex(\n groupHeaders,\n meta.numberOfRows || INITIAL_DEFAULT_CHUNK_SIZE\n );\n view.type.onPaginate({ startIndex: 0, endIndex, id: 'rootVirtualiser' });\n }\n }, [view.type, meta.numberOfRows, rows, groupHeaders, count.total, loading]);\n\n useEffect(() => {\n setHasMore(rows!.length !== count.total);\n if (paginationEndIndex <= rows!.length + visibleGroupHeaders || rows!.length === count.total) {\n setLoading(false);\n }\n }, [count.total, rows!.length, paginationEndIndex, visibleGroupHeaders]);\n\n const activities = useMemo(\n () => getActivities(groupHeaders, columns, meta, groups?.[0]),\n [groupHeaders, columns, meta, groups?.[0]]\n );\n\n let loadMore;\n if (hasMore) {\n loadMore = onLoadMore;\n }\n\n return (\n <RsCardWrapper>\n <StyledTimelineContainer view={view} isFullscreen={isFullscreen}>\n <Toolbar view={view} />\n <RenderView view={view} type={EXTERNAL_FILTERS} />\n\n <StyledRowContainer\n className='container row-container'\n isFullscreen={isFullscreen}\n view={view}\n >\n <StyledTimeline\n activities={activities}\n currentTime={new Date()}\n groupBy={groups?.[0]}\n loading={loading || !rows || !!view.isLoading}\n loadMore={loadMore}\n toggleGroupExpansion={toggleGroupExpansion}\n data-test-id='Timeline'\n ref={ref}\n />\n {domContainer && hasNoRecords && (\n <EmptyContainer\n message={\n isFilterApplied(\n { filterExpression, searchText, externalState },\n meta.externalFilters\n )\n ? translate('No records found')\n : translate('No records')\n }\n domContainer={domContainer}\n shouldAnnounce={false}\n />\n )}\n </StyledRowContainer>\n </StyledTimelineContainer>\n </RsCardWrapper>\n );\n};\n\nexport default Timeline;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Timeline/utils.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gEAAgE,CAAC;AAGtG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sDAAsD,CAAC;AAMlF,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAmDlD,eAAO,MAAM,mBAAmB,EAAE,OAAO,CACvC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,eAAe,CAAC,CAS5D,CAAC;AAqCF,QAAA,MAAM,aAAa,GACjB,cAAc,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,EAC9C,SAAS,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EACpC,gDAAgD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EACxE,UAAU,KAAK,KACd,aAAa,CAAC,YAAY,CA2D5B,CAAC;AAEF,eAAe,aAAa,CAAC;AAE7B,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EACtC,YAAY,EAAE,WAAW,GAAG,SAAS,EACrC,UAAU,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,sBAc3C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAG7F"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Timeline/utils.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gEAAgE,CAAC;AAGtG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sDAAsD,CAAC;AAMlF,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAmDlD,eAAO,MAAM,mBAAmB,EAAE,OAAO,CACvC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,eAAe,CAAC,CAS5D,CAAC;AAqCF,QAAA,MAAM,aAAa,GACjB,cAAc,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,EAC9C,SAAS,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EACpC,gDAAgD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EACxE,UAAU,KAAK,KACd,aAAa,CAAC,YAAY,CA4D5B,CAAC;AAEF,eAAe,aAAa,CAAC;AAE7B,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EACtC,YAAY,EAAE,WAAW,GAAG,SAAS,EACrC,UAAU,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,sBAc3C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAG7F"}
@@ -80,7 +80,8 @@ const getActivities = (groupHeaders, columns, { timelineFields, timezone, defaul
80
80
  return (groupHeaders ?? [])
81
81
  .map(header => {
82
82
  return {
83
- header: renderHeader(header, groupBy, groupByColumn),
83
+ header,
84
+ headerContent: renderHeader(header, groupBy, groupByColumn),
84
85
  activity: (header.getRows() ?? [])
85
86
  .map(row => {
86
87
  const data = row.getContext().getValue();
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../Core/Views/Timeline/utils.tsx"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport timezonePlugin from 'dayjs/plugin/timezone';\nimport type { ReactText } from 'react';\n\nimport type { DateTimeVariant } from '@pega/cosmos-react-core/lib/components/DateTime/DateTime.types';\nimport { DateTimeDisplay, NoValue, parseToDate } from '@pega/cosmos-react-core';\nimport type { FieldValueListProps, StatusProps } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\nimport { FieldType, ROW_DENSITY } from 'pega-repeating-structures-core/lib/types/Meta.types';\nimport type { Group } from 'pega-repeating-structures-core/lib/types/State.types';\n\nimport RenderingEngine from '../../Components/RenderingEngine/RenderCell';\nimport ValueRenderer from '../../Components/RenderingEngine/ValueRenderer';\n\nimport type { ActivityObject } from './Timeline.types';\nimport type TimelineProps from './Timeline.types';\n\ndayjs.extend(timezonePlugin);\nconst getStatusVariant = (data: string): StatusProps['variant'] => {\n let variant: StatusProps['variant'];\n const warnStrings = ['fail', 'cancel', 'reject', 'revoke', 'stopped', 'warn'];\n const infoStrings = ['open', 'hold', 'info', 'new'];\n const successStrings = ['resolved', 'completed', 'success'];\n const pendingStrings = ['pending'];\n\n if (new RegExp(warnStrings.join('|'), 'i').test(data)) {\n variant = 'warn';\n } else if (new RegExp(infoStrings.join('|'), 'i').test(data)) {\n variant = 'info';\n } else if (new RegExp(successStrings.join('|'), 'i').test(data)) {\n variant = 'success';\n } else if (new RegExp(pendingStrings.join('|'), 'i').test(data)) {\n variant = 'pending';\n } else {\n variant = 'info';\n }\n return variant;\n};\n\nconst getFieldsAsActivityContent = (\n columns: RsCoreTypes.View['columns'],\n row: RsCoreTypes.Row\n): FieldValueListProps['fields'] | undefined => {\n return columns\n ?.filter(column => column.field.name !== 'RowActionMenu' && !column.hidden)\n ?.map(column => {\n return {\n id: column.field.id,\n name: column.field.label,\n value: <ValueRenderer column={column} row={row} />\n };\n });\n};\n\nconst convertDateToTimezone = (\n value: string | number | Date,\n timezone: RsCoreTypes.Meta['timezone']\n): string => {\n return (\n dayjs(value)\n .tz(timezone)\n // cSpell:disable-next-line\n .format('YYYY-MM-DDTHH:mm:ss')\n );\n};\n\nexport const dateDisplayVariants: Partial<\n Record<NonNullable<Group['dateFunction']>, DateTimeVariant>\n> = {\n YEARS: 'year',\n QUARTERS: 'quarteryear',\n MONTHS: 'monthyear',\n WEEKS: 'week',\n DAYS: 'date',\n HOURS: 'datetime',\n MINUTES: 'datetime'\n};\n\nconst renderHeader = (\n header: RsCoreTypes.GroupGenerator,\n groupBy?: Group,\n groupByColumn?: RsCoreTypes.Column\n) => {\n if (!groupByColumn || !header.name) {\n return <NoValue />;\n }\n\n if (groupBy?.dateFunction && typeof header.name !== 'boolean') {\n return (\n <DateTimeDisplay\n variant={dateDisplayVariants[groupBy.dateFunction] ?? 'datetime'}\n format='long'\n value={header.name}\n />\n );\n }\n\n groupByColumn.setExecutionContext(null);\n\n return (\n <RenderingEngine\n {...groupByColumn.getRenderingEngineProps()}\n context={{\n getValue: () => header.name,\n getExecutionContext: () => ({\n getValue: () => header.data,\n name: 'groupHeader'\n })\n }}\n />\n );\n};\n\nconst getActivities = (\n groupHeaders: RsCoreTypes.View['groupHeaders'],\n columns: RsCoreTypes.View['columns'],\n { timelineFields, timezone, defaultRowHeight }: RsCoreTypes.View['meta'],\n groupBy?: Group\n): TimelineProps['activities'] => {\n const { title, date, status: statusProp, icon, content } = timelineFields ?? {};\n const titleColumn = columns?.find(({ field }) => field.name === title?.name);\n const dateColumn = columns?.find(({ field }) => field.name === date?.name);\n const contentColumn = columns?.find(({ field }) => field.name === content?.name);\n const groupByColumn = columns?.find(({ field }) => field.id === groupBy?.columnId);\n return (groupHeaders ?? [])\n .map(header => {\n return {\n header: renderHeader(header, groupBy, groupByColumn),\n activity: (header.getRows() ?? [])\n .map(row => {\n const data = row.getContext().getValue();\n const dateValue = date?.name ? data[date.name] : undefined;\n const dateFieldType = dateColumn?.field?.type;\n const isDateOnlyFieldType =\n dateFieldType === FieldType.DATE ||\n dateFieldType === FieldType.DATE_ONLY ||\n dateFieldType === FieldType.DATE_TIMELINE;\n\n // Activity Object date can't be undefined\n if (!dateValue) {\n return undefined;\n }\n const statusData = statusProp?.name ? data[statusProp.name] : undefined;\n const status = statusData\n ? {\n variant: getStatusVariant(statusData as string),\n children: statusData as ReactText\n }\n : undefined;\n const activity: ActivityObject = {\n id: row.key as string,\n title:\n title?.name && data[title.name] && titleColumn ? (\n <ValueRenderer column={titleColumn} row={row} />\n ) : (\n <NoValue />\n ),\n date:\n timezone && dateColumn?.formatterAllowed && dateFieldType && !isDateOnlyFieldType // Date only value should be formatted without timezone\n ? convertDateToTimezone(dateValue as string, timezone)\n : (dateValue as string),\n dateVariant: isDateOnlyFieldType ? 'date' : 'datetime',\n icon: icon?.name ? (data[icon.name] as string) : undefined,\n defaultExpanded: defaultRowHeight === ROW_DENSITY.WRAP_CONTENT,\n content: contentColumn ? (\n <ValueRenderer column={contentColumn} row={row} />\n ) : (\n getFieldsAsActivityContent(columns, row)\n ),\n status: statusProp?.getCustomContent ? statusProp.getCustomContent(row) : status\n };\n return activity;\n })\n ?.filter((item): item is ActivityObject => !!item)\n };\n })\n .filter(({ activity }) => activity.length > 0);\n};\n\nexport default getActivities;\n\nexport function calculateBodyMaxHeight(\n maxHeight: string | number | undefined,\n domContainer: HTMLElement | undefined,\n pContainer: HTMLElement | null | undefined\n) {\n if (maxHeight === undefined) return;\n if (!domContainer || !pContainer) return;\n const extraHeight = domContainer.offsetHeight - pContainer.offsetHeight;\n if (typeof maxHeight === 'string' && maxHeight.startsWith('--')) {\n // Means it is a css variable which is a string, and it needs to be computed with calc function\n // If css variable is not defined then fallback to default max height i.e. 550px\n const defaultMaxHeight = `calc(550px + ${extraHeight}px + 32px)`;\n return `calc(var(${maxHeight}, ${defaultMaxHeight}) - ${extraHeight}px - 32px)`;\n }\n if (typeof maxHeight === 'number') {\n return `${maxHeight - extraHeight - 32}px`;\n }\n}\n\nexport function isFutureDate(date: string | number | Date | undefined, current: Date): boolean {\n if (!date || !current) return false;\n return parseToDate(date).getTime() > current.getTime();\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../Core/Views/Timeline/utils.tsx"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport timezonePlugin from 'dayjs/plugin/timezone';\nimport type { ReactText } from 'react';\n\nimport type { DateTimeVariant } from '@pega/cosmos-react-core/lib/components/DateTime/DateTime.types';\nimport { DateTimeDisplay, NoValue, parseToDate } from '@pega/cosmos-react-core';\nimport type { FieldValueListProps, StatusProps } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\nimport { FieldType, ROW_DENSITY } from 'pega-repeating-structures-core/lib/types/Meta.types';\nimport type { Group } from 'pega-repeating-structures-core/lib/types/State.types';\n\nimport RenderingEngine from '../../Components/RenderingEngine/RenderCell';\nimport ValueRenderer from '../../Components/RenderingEngine/ValueRenderer';\n\nimport type { ActivityObject } from './Timeline.types';\nimport type TimelineProps from './Timeline.types';\n\ndayjs.extend(timezonePlugin);\nconst getStatusVariant = (data: string): StatusProps['variant'] => {\n let variant: StatusProps['variant'];\n const warnStrings = ['fail', 'cancel', 'reject', 'revoke', 'stopped', 'warn'];\n const infoStrings = ['open', 'hold', 'info', 'new'];\n const successStrings = ['resolved', 'completed', 'success'];\n const pendingStrings = ['pending'];\n\n if (new RegExp(warnStrings.join('|'), 'i').test(data)) {\n variant = 'warn';\n } else if (new RegExp(infoStrings.join('|'), 'i').test(data)) {\n variant = 'info';\n } else if (new RegExp(successStrings.join('|'), 'i').test(data)) {\n variant = 'success';\n } else if (new RegExp(pendingStrings.join('|'), 'i').test(data)) {\n variant = 'pending';\n } else {\n variant = 'info';\n }\n return variant;\n};\n\nconst getFieldsAsActivityContent = (\n columns: RsCoreTypes.View['columns'],\n row: RsCoreTypes.Row\n): FieldValueListProps['fields'] | undefined => {\n return columns\n ?.filter(column => column.field.name !== 'RowActionMenu' && !column.hidden)\n ?.map(column => {\n return {\n id: column.field.id,\n name: column.field.label,\n value: <ValueRenderer column={column} row={row} />\n };\n });\n};\n\nconst convertDateToTimezone = (\n value: string | number | Date,\n timezone: RsCoreTypes.Meta['timezone']\n): string => {\n return (\n dayjs(value)\n .tz(timezone)\n // cSpell:disable-next-line\n .format('YYYY-MM-DDTHH:mm:ss')\n );\n};\n\nexport const dateDisplayVariants: Partial<\n Record<NonNullable<Group['dateFunction']>, DateTimeVariant>\n> = {\n YEARS: 'year',\n QUARTERS: 'quarteryear',\n MONTHS: 'monthyear',\n WEEKS: 'week',\n DAYS: 'date',\n HOURS: 'datetime',\n MINUTES: 'datetime'\n};\n\nconst renderHeader = (\n header: RsCoreTypes.GroupGenerator,\n groupBy?: Group,\n groupByColumn?: RsCoreTypes.Column\n) => {\n if (!groupByColumn || !header.name) {\n return <NoValue />;\n }\n\n if (groupBy?.dateFunction && typeof header.name !== 'boolean') {\n return (\n <DateTimeDisplay\n variant={dateDisplayVariants[groupBy.dateFunction] ?? 'datetime'}\n format='long'\n value={header.name}\n />\n );\n }\n\n groupByColumn.setExecutionContext(null);\n\n return (\n <RenderingEngine\n {...groupByColumn.getRenderingEngineProps()}\n context={{\n getValue: () => header.name,\n getExecutionContext: () => ({\n getValue: () => header.data,\n name: 'groupHeader'\n })\n }}\n />\n );\n};\n\nconst getActivities = (\n groupHeaders: RsCoreTypes.View['groupHeaders'],\n columns: RsCoreTypes.View['columns'],\n { timelineFields, timezone, defaultRowHeight }: RsCoreTypes.View['meta'],\n groupBy?: Group\n): TimelineProps['activities'] => {\n const { title, date, status: statusProp, icon, content } = timelineFields ?? {};\n const titleColumn = columns?.find(({ field }) => field.name === title?.name);\n const dateColumn = columns?.find(({ field }) => field.name === date?.name);\n const contentColumn = columns?.find(({ field }) => field.name === content?.name);\n const groupByColumn = columns?.find(({ field }) => field.id === groupBy?.columnId);\n return (groupHeaders ?? [])\n .map(header => {\n return {\n header,\n headerContent: renderHeader(header, groupBy, groupByColumn),\n activity: (header.getRows() ?? [])\n .map(row => {\n const data = row.getContext().getValue();\n const dateValue = date?.name ? data[date.name] : undefined;\n const dateFieldType = dateColumn?.field?.type;\n const isDateOnlyFieldType =\n dateFieldType === FieldType.DATE ||\n dateFieldType === FieldType.DATE_ONLY ||\n dateFieldType === FieldType.DATE_TIMELINE;\n\n // Activity Object date can't be undefined\n if (!dateValue) {\n return undefined;\n }\n const statusData = statusProp?.name ? data[statusProp.name] : undefined;\n const status = statusData\n ? {\n variant: getStatusVariant(statusData as string),\n children: statusData as ReactText\n }\n : undefined;\n const activity: ActivityObject = {\n id: row.key as string,\n title:\n title?.name && data[title.name] && titleColumn ? (\n <ValueRenderer column={titleColumn} row={row} />\n ) : (\n <NoValue />\n ),\n date:\n timezone && dateColumn?.formatterAllowed && dateFieldType && !isDateOnlyFieldType // Date only value should be formatted without timezone\n ? convertDateToTimezone(dateValue as string, timezone)\n : (dateValue as string),\n dateVariant: isDateOnlyFieldType ? 'date' : 'datetime',\n icon: icon?.name ? (data[icon.name] as string) : undefined,\n defaultExpanded: defaultRowHeight === ROW_DENSITY.WRAP_CONTENT,\n content: contentColumn ? (\n <ValueRenderer column={contentColumn} row={row} />\n ) : (\n getFieldsAsActivityContent(columns, row)\n ),\n status: statusProp?.getCustomContent ? statusProp.getCustomContent(row) : status\n };\n return activity;\n })\n ?.filter((item): item is ActivityObject => !!item)\n };\n })\n .filter(({ activity }) => activity.length > 0);\n};\n\nexport default getActivities;\n\nexport function calculateBodyMaxHeight(\n maxHeight: string | number | undefined,\n domContainer: HTMLElement | undefined,\n pContainer: HTMLElement | null | undefined\n) {\n if (maxHeight === undefined) return;\n if (!domContainer || !pContainer) return;\n const extraHeight = domContainer.offsetHeight - pContainer.offsetHeight;\n if (typeof maxHeight === 'string' && maxHeight.startsWith('--')) {\n // Means it is a css variable which is a string, and it needs to be computed with calc function\n // If css variable is not defined then fallback to default max height i.e. 550px\n const defaultMaxHeight = `calc(550px + ${extraHeight}px + 32px)`;\n return `calc(var(${maxHeight}, ${defaultMaxHeight}) - ${extraHeight}px - 32px)`;\n }\n if (typeof maxHeight === 'number') {\n return `${maxHeight - extraHeight - 32}px`;\n }\n}\n\nexport function isFutureDate(date: string | number | Date | undefined, current: Date): boolean {\n if (!date || !current) return false;\n return parseToDate(date).getTime() > current.getTime();\n}\n"]}
@@ -1,5 +1,9 @@
1
1
  export declare const EXTERNAL_FILTERS = "externalFilters";
2
2
  export declare const DEFAULT_FORMAT = "Default";
3
+ /** Render-factory key registered by the host for the Master Detail content renderer. */
4
+ export declare const MASTER_DETAIL_RENDERER_KEY = "masterDetailRenderer";
5
+ export declare const MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS = "preview-highlight-row";
6
+ export declare const MASTER_DETAIL_INDICATOR_CLASS = "detail-indicator-anchor";
3
7
  export declare const SELECTION_MODES: {
4
8
  single: string;
5
9
  multi: string;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../Core/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAClD,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAK7B,CAAC;AAEF,eAAO,MAAM,SAAS;;;;CAIrB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;CAM3B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;GAW9B,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;IAOvB,CAAC;AACF,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;CAGtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAQ/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAYhC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../Core/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAClD,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,wFAAwF;AACxF,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AACjE,eAAO,MAAM,qCAAqC,0BAA0B,CAAC;AAC7E,eAAO,MAAM,6BAA6B,4BAA4B,CAAC;AAEvE,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAK7B,CAAC;AAEF,eAAO,MAAM,SAAS;;;;CAIrB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;CAM3B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;GAW9B,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;IAOvB,CAAC;AACF,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;CAGtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAQ/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAYhC,CAAC"}
@@ -1,5 +1,9 @@
1
1
  export const EXTERNAL_FILTERS = 'externalFilters';
2
2
  export const DEFAULT_FORMAT = 'Default';
3
+ /** Render-factory key registered by the host for the Master Detail content renderer. */
4
+ export const MASTER_DETAIL_RENDERER_KEY = 'masterDetailRenderer';
5
+ export const MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS = 'preview-highlight-row';
6
+ export const MASTER_DETAIL_INDICATOR_CLASS = 'detail-indicator-anchor';
3
7
  export const SELECTION_MODES = {
4
8
  single: 'single',
5
9
  multi: 'multi',
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../Core/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAExC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE;IACzC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE;IAC1C,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE;IACxC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,qBAAqB,EAAE;CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC;QACE,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,UAAU;KACvB;IACD;QACE,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,iBAAiB;QAC7B,UAAU,EAAE,YAAY;KACzB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,kBAAkB;IACrB;QACE,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,aAAa;QACzB,UAAU,EAAE,OAAO;KACpB;CACF,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;CACZ,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,gBAAgB,EAAE,oBAAoB;IACtC,gBAAgB,EAAE,oBAAoB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ;IACR,SAAS;IACT,kBAAkB;IAClB,sBAAsB;IACtB,mBAAmB;IACnB,uBAAuB;IACvB,uBAAuB;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,kBAAkB;IAClB,mBAAmB,EAAE,sCAAsC;IAC3D,oBAAoB;IACpB,0BAA0B;IAC1B,sBAAsB;IACtB,iBAAiB;IACjB,mBAAmB;IACnB,sBAAsB;IACtB,UAAU;IACV,QAAQ;IACR,QAAQ;CACT,CAAC","sourcesContent":["export const EXTERNAL_FILTERS = 'externalFilters';\nexport const DEFAULT_FORMAT = 'Default';\n\nexport const SELECTION_MODES = {\n single: 'single',\n multi: 'multi',\n multi_on_hover: 'multi_on_hover'\n};\n\nexport const rowDensityClasses = {\n 1: { id: '1', className: 'short-height' },\n 2: { id: '2', className: 'medium-height' },\n 3: { id: '3', className: 'tall-height' },\n 4: { id: '4', className: 'wrap-content-height' }\n};\n\nexport const TEMPLATES = {\n GALLERY: 'Gallery',\n TABLE: 'Table',\n TIMELINE: 'Timeline'\n};\n\nexport const debugInfoFields = {\n className: 'className',\n dataPage: 'dataPage',\n dataSource: 'dataSource',\n timeTaken: 'timeTaken',\n insightId: 'insightId'\n};\n\nexport const CELL_ALIGN_CLASSES = {\n left: 'align-left',\n right: 'align-right',\n center: 'align-center'\n};\n\nexport const NonNullSortActions = [\n {\n actionId: 'asc',\n actionName: 'Sort ascending',\n actionIcon: 'arrow-up'\n },\n {\n actionId: 'desc',\n actionName: 'Sort descending',\n actionIcon: 'arrow-down'\n }\n];\n\nexport const sortActions = [\n ...NonNullSortActions,\n {\n actionId: null,\n actionName: 'Remove sort',\n actionIcon: 'reset'\n }\n];\nexport const TOOLBAR_FEATURES = {\n FILTER: 'filter',\n SORT: 'sort',\n GROUPING: 'grouping'\n} as const;\n\nexport const customFunctions = {\n TEXT_GROUPING: 'TEXT_GROUPING',\n RANGE_GROUPING: 'RANGE_GROUPING',\n INTERVAL_GROUPING: 'INTERVAL_GROUPING'\n};\n\nexport const intervalGroupingBoundaries = {\n includeLowerOnly: 'include-lower-only',\n includeUpperOnly: 'include-upper-only'\n};\n\nexport const FOCUSABLE_SELECTORS = [\n 'button',\n 'a[href]',\n 'input[type=file]',\n 'input[type=checkbox]',\n 'input[type=radio]',\n '.scalarlist-component',\n '.row-error-column svg'\n];\n\nexport const ACTIONABLE_SELECTORS = [\n 'input[type=text]',\n 'input:not([type])', // input without type defaults to text\n 'input[type=number]',\n 'input[inputmode=numeric]',\n 'input[inputmode=tel]',\n 'input[type=url]',\n 'input[type=email]',\n 'input[role=combobox]',\n 'textarea',\n 'select',\n 'iframe'\n];\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../Core/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAExC,wFAAwF;AACxF,MAAM,CAAC,MAAM,0BAA0B,GAAG,sBAAsB,CAAC;AACjE,MAAM,CAAC,MAAM,qCAAqC,GAAG,uBAAuB,CAAC;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE;IACzC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE;IAC1C,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE;IACxC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,qBAAqB,EAAE;CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC;QACE,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,UAAU;KACvB;IACD;QACE,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,iBAAiB;QAC7B,UAAU,EAAE,YAAY;KACzB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,kBAAkB;IACrB;QACE,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,aAAa;QACzB,UAAU,EAAE,OAAO;KACpB;CACF,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;CACZ,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,gBAAgB,EAAE,oBAAoB;IACtC,gBAAgB,EAAE,oBAAoB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ;IACR,SAAS;IACT,kBAAkB;IAClB,sBAAsB;IACtB,mBAAmB;IACnB,uBAAuB;IACvB,uBAAuB;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,kBAAkB;IAClB,mBAAmB,EAAE,sCAAsC;IAC3D,oBAAoB;IACpB,0BAA0B;IAC1B,sBAAsB;IACtB,iBAAiB;IACjB,mBAAmB;IACnB,sBAAsB;IACtB,UAAU;IACV,QAAQ;IACR,QAAQ;CACT,CAAC","sourcesContent":["export const EXTERNAL_FILTERS = 'externalFilters';\nexport const DEFAULT_FORMAT = 'Default';\n\n/** Render-factory key registered by the host for the Master Detail content renderer. */\nexport const MASTER_DETAIL_RENDERER_KEY = 'masterDetailRenderer';\nexport const MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS = 'preview-highlight-row';\nexport const MASTER_DETAIL_INDICATOR_CLASS = 'detail-indicator-anchor';\n\nexport const SELECTION_MODES = {\n single: 'single',\n multi: 'multi',\n multi_on_hover: 'multi_on_hover'\n};\n\nexport const rowDensityClasses = {\n 1: { id: '1', className: 'short-height' },\n 2: { id: '2', className: 'medium-height' },\n 3: { id: '3', className: 'tall-height' },\n 4: { id: '4', className: 'wrap-content-height' }\n};\n\nexport const TEMPLATES = {\n GALLERY: 'Gallery',\n TABLE: 'Table',\n TIMELINE: 'Timeline'\n};\n\nexport const debugInfoFields = {\n className: 'className',\n dataPage: 'dataPage',\n dataSource: 'dataSource',\n timeTaken: 'timeTaken',\n insightId: 'insightId'\n};\n\nexport const CELL_ALIGN_CLASSES = {\n left: 'align-left',\n right: 'align-right',\n center: 'align-center'\n};\n\nexport const NonNullSortActions = [\n {\n actionId: 'asc',\n actionName: 'Sort ascending',\n actionIcon: 'arrow-up'\n },\n {\n actionId: 'desc',\n actionName: 'Sort descending',\n actionIcon: 'arrow-down'\n }\n];\n\nexport const sortActions = [\n ...NonNullSortActions,\n {\n actionId: null,\n actionName: 'Remove sort',\n actionIcon: 'reset'\n }\n];\nexport const TOOLBAR_FEATURES = {\n FILTER: 'filter',\n SORT: 'sort',\n GROUPING: 'grouping'\n} as const;\n\nexport const customFunctions = {\n TEXT_GROUPING: 'TEXT_GROUPING',\n RANGE_GROUPING: 'RANGE_GROUPING',\n INTERVAL_GROUPING: 'INTERVAL_GROUPING'\n};\n\nexport const intervalGroupingBoundaries = {\n includeLowerOnly: 'include-lower-only',\n includeUpperOnly: 'include-upper-only'\n};\n\nexport const FOCUSABLE_SELECTORS = [\n 'button',\n 'a[href]',\n 'input[type=file]',\n 'input[type=checkbox]',\n 'input[type=radio]',\n '.scalarlist-component',\n '.row-error-column svg'\n];\n\nexport const ACTIONABLE_SELECTORS = [\n 'input[type=text]',\n 'input:not([type])', // input without type defaults to text\n 'input[type=number]',\n 'input[inputmode=numeric]',\n 'input[inputmode=tel]',\n 'input[type=url]',\n 'input[type=email]',\n 'input[role=combobox]',\n 'textarea',\n 'select',\n 'iframe'\n];\n"]}
@@ -2,9 +2,9 @@ import { REPEATING_STRUCTURE_TEMPLATES } from 'pega-repeating-structures-core';
2
2
  // TODO: All such feature map support should be available at View object based via a feature in rs-core based on the template from meta.
3
3
  // The consumer can pass along the resolved feature map to their component for decisioning.
4
4
  const featureSupport = {
5
- personalization: ['Table', 'Gallery', 'Timeline'],
5
+ personalization: ['Table', 'Gallery', 'Timeline', 'Kanban'],
6
6
  group: ['Table', 'Timeline'],
7
- showHideColumns: ['Table', 'Gallery'],
7
+ showHideColumns: ['Table', 'Gallery', 'Kanban'],
8
8
  galleryLayout: ['Gallery'],
9
9
  freezeColumns: ['Table'],
10
10
  rowDensity: ['Table'],
@@ -1 +1 @@
1
- {"version":3,"file":"templateFeatureSupport.js","sourceRoot":"","sources":["../../Core/templateFeatureSupport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAK/E,wIAAwI;AACxI,2FAA2F;AAC3F,MAAM,cAAc,GAA2C;IAC7D,eAAe,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;IACjD,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;IAC5B,eAAe,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;IACrC,aAAa,EAAE,CAAC,SAAS,CAAC;IAC1B,aAAa,EAAE,CAAC,OAAO,CAAC;IACxB,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,eAAe,EAAE,CAAC,OAAO,CAAC;IAC1B,eAAe,EAAE,CAAC,OAAO,CAAC;IAC1B,iBAAiB,EAAE,CAAC,OAAO,CAAC;IAC5B,IAAI,EAAE,CAAC,OAAO,CAAC;CAChB,CAAC;AAIF;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,CAAC,QAAuB,EAAE,OAAmB,EAAW,EAAE;IACvF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC","sourcesContent":["import { REPEATING_STRUCTURE_TEMPLATES } from 'pega-repeating-structures-core';\n\ntype TemplateValue =\n (typeof REPEATING_STRUCTURE_TEMPLATES)[keyof typeof REPEATING_STRUCTURE_TEMPLATES];\n\n// TODO: All such feature map support should be available at View object based via a feature in rs-core based on the template from meta.\n// The consumer can pass along the resolved feature map to their component for decisioning.\nconst featureSupport: { [feature: string]: TemplateValue[] } = {\n personalization: ['Table', 'Gallery', 'Timeline'],\n group: ['Table', 'Timeline'],\n showHideColumns: ['Table', 'Gallery'],\n galleryLayout: ['Gallery'],\n freezeColumns: ['Table'],\n rowDensity: ['Table'],\n showHeaderIcons: ['Table'],\n autoSizeColumns: ['Table'],\n resetColumnWidths: ['Table'],\n wrap: ['Table']\n};\n\ntype FeatureKey = keyof typeof featureSupport | string;\n\n/**\n * Check if a feature should show in toolbar for a given template.\n * Features not in the map are considered supported for all templates.\n *\n * @param template - The template type\n * @param feature - The feature identifier\n * @returns true if the feature should show in toolbar for the template\n */\nconst showFeatureForTemplate = (template: TemplateValue, feature: FeatureKey): boolean => {\n if (!featureSupport[feature]) {\n return true;\n }\n return featureSupport[feature].includes(template);\n};\n\nexport default showFeatureForTemplate;\n"]}
1
+ {"version":3,"file":"templateFeatureSupport.js","sourceRoot":"","sources":["../../Core/templateFeatureSupport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAK/E,wIAAwI;AACxI,2FAA2F;AAC3F,MAAM,cAAc,GAA2C;IAC7D,eAAe,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC;IAC3D,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;IAC5B,eAAe,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;IAC/C,aAAa,EAAE,CAAC,SAAS,CAAC;IAC1B,aAAa,EAAE,CAAC,OAAO,CAAC;IACxB,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,eAAe,EAAE,CAAC,OAAO,CAAC;IAC1B,eAAe,EAAE,CAAC,OAAO,CAAC;IAC1B,iBAAiB,EAAE,CAAC,OAAO,CAAC;IAC5B,IAAI,EAAE,CAAC,OAAO,CAAC;CAChB,CAAC;AAIF;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,CAAC,QAAuB,EAAE,OAAmB,EAAW,EAAE;IACvF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC","sourcesContent":["import { REPEATING_STRUCTURE_TEMPLATES } from 'pega-repeating-structures-core';\n\ntype TemplateValue =\n (typeof REPEATING_STRUCTURE_TEMPLATES)[keyof typeof REPEATING_STRUCTURE_TEMPLATES];\n\n// TODO: All such feature map support should be available at View object based via a feature in rs-core based on the template from meta.\n// The consumer can pass along the resolved feature map to their component for decisioning.\nconst featureSupport: { [feature: string]: TemplateValue[] } = {\n personalization: ['Table', 'Gallery', 'Timeline', 'Kanban'],\n group: ['Table', 'Timeline'],\n showHideColumns: ['Table', 'Gallery', 'Kanban'],\n galleryLayout: ['Gallery'],\n freezeColumns: ['Table'],\n rowDensity: ['Table'],\n showHeaderIcons: ['Table'],\n autoSizeColumns: ['Table'],\n resetColumnWidths: ['Table'],\n wrap: ['Table']\n};\n\ntype FeatureKey = keyof typeof featureSupport | string;\n\n/**\n * Check if a feature should show in toolbar for a given template.\n * Features not in the map are considered supported for all templates.\n *\n * @param template - The template type\n * @param feature - The feature identifier\n * @returns true if the feature should show in toolbar for the template\n */\nconst showFeatureForTemplate = (template: TemplateValue, feature: FeatureKey): boolean => {\n if (!featureSupport[feature]) {\n return true;\n }\n return featureSupport[feature].includes(template);\n};\n\nexport default showFeatureForTemplate;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/lists-react",
3
- "version": "10.0.0-build.1.9",
3
+ "version": "10.0.0-build.10.1",
4
4
  "description": "Repeating view structures such as Table, Gallery(Repeating layouts), Kanban etc.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Pegasystems",
@@ -14,17 +14,18 @@
14
14
  "build": "tsc -b tsconfig.build.json"
15
15
  },
16
16
  "dependencies": {
17
- "@pega/cosmos-react-condition-builder": "10.0.0-build.1.9",
18
- "@pega/cosmos-react-core": "10.0.0-build.1.9",
19
- "@pega/cosmos-react-rte": "10.0.0-build.1.9",
17
+ "@pega/cosmos-react-condition-builder": "10.0.0-build.10.1",
18
+ "@pega/cosmos-react-core": "10.0.0-build.10.1",
19
+ "@pega/cosmos-react-rte": "10.0.0-build.10.1",
20
+ "@pega/cosmos-react-work": "10.0.0-build.10.1",
20
21
  "@types/lodash-es": "^4.17.12",
21
22
  "@types/react": "^17.0.62 || ^18.3.3",
22
23
  "@types/react-dom": "^17.0.20 || ^18.3.0",
23
24
  "dayjs": "^1.11.13",
24
25
  "fast-deep-equal": "^3.1.3",
25
26
  "lodash-es": "^4.18.1",
26
- "pega-repeating-structures-core": "npm:@pega/lists-core@10.0.0-build.1.9",
27
- "pega-ui-list-data-apis": "npm:@pega/lists-core-utils@10.0.0-build.1.9",
27
+ "pega-repeating-structures-core": "npm:@pega/lists-core@10.0.0-build.10.1",
28
+ "pega-ui-list-data-apis": "npm:@pega/lists-core-utils@10.0.0-build.10.1",
28
29
  "polished": "^4.1.0",
29
30
  "prop-types": "^15.8.1",
30
31
  "react": "^17.0.0 || ^18.0.0",
@@ -42,7 +43,7 @@
42
43
  "@testing-library/react": "^16.0.0",
43
44
  "@testing-library/user-event": "^14.6.1",
44
45
  "jest-axe": "^8.0.0",
45
- "srs-utils": "10.0.0-build.1.9",
46
- "typescript": "~5.9.3"
46
+ "srs-utils": "10.0.0-build.10.1",
47
+ "typescript": "~6.0.3"
47
48
  }
48
49
  }
@@ -1,11 +0,0 @@
1
- import type { RsCoreTypes } from 'pega-repeating-structures-core';
2
- /**
3
- * A custom React hook to announce changes in grouping for accessibility purposes.
4
- *
5
- * @param state - The current {@link RsCoreTypes.View.state state} of the view.
6
- *
7
- * @returns void.
8
- */
9
- declare const useAnnounceGroup: (state: RsCoreTypes.View["state"]) => void;
10
- export default useAnnounceGroup;
11
- //# sourceMappingURL=useAnnounceGroup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAnnounceGroup.d.ts","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/useAnnounceGroup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAKlE;;;;;;GAMG;AACH,QAAA,MAAM,gBAAgB,GAAI,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,SAyCzD,CAAC;AACF,eAAe,gBAAgB,CAAC"}
@@ -1,52 +0,0 @@
1
- import { useEffect } from 'react';
2
- import { useLiveLog } from '@pega/cosmos-react-core/lib/hooks';
3
- import { usePrevious } from '@pega/cosmos-react-core';
4
- import useTranslate from '../useTranslate';
5
- import { deepEqual } from '../../Utils';
6
- /**
7
- * A custom React hook to announce changes in grouping for accessibility purposes.
8
- *
9
- * @param state - The current {@link RsCoreTypes.View.state state} of the view.
10
- *
11
- * @returns void.
12
- */
13
- const useAnnounceGroup = (state) => {
14
- const { announcePolite } = useLiveLog();
15
- const { groups, personalization } = state;
16
- const [translate] = useTranslate();
17
- const prevGroups = usePrevious(groups);
18
- const personalizationActive = personalization?.active;
19
- const prevPersonalizationActive = usePrevious(personalizationActive);
20
- useEffect(() => {
21
- if (groups && prevGroups) {
22
- const groupsChanged = prevGroups?.length > 0 && groups?.length > 0 && !deepEqual(prevGroups, groups);
23
- const groupsRemoved = personalizationActive === prevPersonalizationActive &&
24
- prevGroups?.length > 0 &&
25
- groups?.length === 0;
26
- const timeout = setTimeout(() => {
27
- let groupingTranslate = '';
28
- if ((prevGroups === undefined ||
29
- prevGroups?.length === 0 ||
30
- (prevGroups?.length > 0 && personalizationActive !== prevPersonalizationActive)) &&
31
- groups?.length > 0) {
32
- groupingTranslate = translate('Group applied');
33
- }
34
- else if (groupsChanged && personalizationActive === prevPersonalizationActive) {
35
- groupingTranslate = translate('Group modified');
36
- }
37
- else if (groupsRemoved) {
38
- groupingTranslate = translate('Group removed');
39
- }
40
- announcePolite({
41
- message: groupingTranslate,
42
- type: 'info'
43
- });
44
- }, 1000);
45
- return () => {
46
- clearTimeout(timeout);
47
- };
48
- }
49
- }, [groups]);
50
- };
51
- export default useAnnounceGroup;
52
- //# sourceMappingURL=useAnnounceGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAnnounceGroup.js","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/useAnnounceGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,CAAC,KAAgC,EAAE,EAAE;IAC5D,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAC1C,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,qBAAqB,GAAG,eAAe,EAAE,MAAM,CAAC;IACtD,MAAM,yBAAyB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAErE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;YACzB,MAAM,aAAa,GACjB,UAAU,EAAE,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACjF,MAAM,aAAa,GACjB,qBAAqB,KAAK,yBAAyB;gBACnD,UAAU,EAAE,MAAM,GAAG,CAAC;gBACtB,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,iBAAiB,GAAG,EAAE,CAAC;gBAE3B,IACE,CAAC,UAAU,KAAK,SAAS;oBACvB,UAAU,EAAE,MAAM,KAAK,CAAC;oBACxB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,IAAI,qBAAqB,KAAK,yBAAyB,CAAC,CAAC;oBAClF,MAAM,EAAE,MAAM,GAAG,CAAC,EAClB,CAAC;oBACD,iBAAiB,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,aAAa,IAAI,qBAAqB,KAAK,yBAAyB,EAAE,CAAC;oBAChF,iBAAiB,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;gBAClD,CAAC;qBAAM,IAAI,aAAa,EAAE,CAAC;oBACzB,iBAAiB,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;gBACjD,CAAC;gBACD,cAAc,CAAC;oBACb,OAAO,EAAE,iBAAiB;oBAC1B,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;YACL,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,OAAO,GAAG,EAAE;gBACV,YAAY,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,CAAC,CAAC;AACF,eAAe,gBAAgB,CAAC","sourcesContent":["import { useEffect } from 'react';\n\nimport { useLiveLog } from '@pega/cosmos-react-core/lib/hooks';\nimport { usePrevious } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../useTranslate';\nimport { deepEqual } from '../../Utils';\n\n/**\n * A custom React hook to announce changes in grouping for accessibility purposes.\n *\n * @param state - The current {@link RsCoreTypes.View.state state} of the view.\n *\n * @returns void.\n */\nconst useAnnounceGroup = (state: RsCoreTypes.View['state']) => {\n const { announcePolite } = useLiveLog();\n const { groups, personalization } = state;\n const [translate] = useTranslate();\n const prevGroups = usePrevious(groups);\n const personalizationActive = personalization?.active;\n const prevPersonalizationActive = usePrevious(personalizationActive);\n\n useEffect(() => {\n if (groups && prevGroups) {\n const groupsChanged =\n prevGroups?.length > 0 && groups?.length > 0 && !deepEqual(prevGroups, groups);\n const groupsRemoved =\n personalizationActive === prevPersonalizationActive &&\n prevGroups?.length > 0 &&\n groups?.length === 0;\n const timeout = setTimeout(() => {\n let groupingTranslate = '';\n\n if (\n (prevGroups === undefined ||\n prevGroups?.length === 0 ||\n (prevGroups?.length > 0 && personalizationActive !== prevPersonalizationActive)) &&\n groups?.length > 0\n ) {\n groupingTranslate = translate('Group applied');\n } else if (groupsChanged && personalizationActive === prevPersonalizationActive) {\n groupingTranslate = translate('Group modified');\n } else if (groupsRemoved) {\n groupingTranslate = translate('Group removed');\n }\n announcePolite({\n message: groupingTranslate,\n type: 'info'\n });\n }, 1000);\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [groups]);\n};\nexport default useAnnounceGroup;\n"]}
@@ -1,8 +0,0 @@
1
- import type { RsCoreTypes } from 'pega-repeating-structures-core';
2
- interface GalleryFieldValueProps {
3
- column: RsCoreTypes.Column;
4
- row: RsCoreTypes.Row;
5
- }
6
- declare function GalleryFieldValue({ column, row }: GalleryFieldValueProps): import("react/jsx-runtime").JSX.Element;
7
- export default GalleryFieldValue;
8
- //# sourceMappingURL=GalleryFieldValue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GalleryFieldValue.d.ts","sourceRoot":"","sources":["../../../../../Core/Views/Gallery/Components/GalleryFieldValue.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIlE,UAAU,sBAAsB;IAC9B,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IAC3B,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;CACtB;AAED,iBAAS,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,sBAAsB,2CAIjE;AAED,eAAe,iBAAiB,CAAC"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import RenderingEngine from '../../../Components/RenderingEngine/RenderCell';
3
- function GalleryFieldValue({ column, row }) {
4
- column.setExecutionContext(row);
5
- return _jsx(RenderingEngine, { ...column.getRenderingEngineProps(), highlighter: true });
6
- }
7
- export default GalleryFieldValue;
8
- //# sourceMappingURL=GalleryFieldValue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GalleryFieldValue.js","sourceRoot":"","sources":["../../../../../Core/Views/Gallery/Components/GalleryFieldValue.tsx"],"names":[],"mappings":";AAEA,OAAO,eAAe,MAAM,gDAAgD,CAAC;AAO7E,SAAS,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAA0B;IAChE,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAEhC,OAAO,KAAC,eAAe,OAAK,MAAM,CAAC,uBAAuB,EAAE,EAAE,WAAW,SAAG,CAAC;AAC/E,CAAC;AAED,eAAe,iBAAiB,CAAC","sourcesContent":["import type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport RenderingEngine from '../../../Components/RenderingEngine/RenderCell';\n\ninterface GalleryFieldValueProps {\n column: RsCoreTypes.Column;\n row: RsCoreTypes.Row;\n}\n\nfunction GalleryFieldValue({ column, row }: GalleryFieldValueProps) {\n column.setExecutionContext(row);\n\n return <RenderingEngine {...column.getRenderingEngineProps()} highlighter />;\n}\n\nexport default GalleryFieldValue;\n"]}
@@ -1,8 +0,0 @@
1
- import type { RsCoreTypes } from 'pega-repeating-structures-core';
2
- type GalleryHeaderProps = {
3
- headerColumn?: RsCoreTypes.Column;
4
- row: RsCoreTypes.Row;
5
- };
6
- declare function GalleryHeader({ headerColumn, row }: GalleryHeaderProps): import("react/jsx-runtime").JSX.Element | null;
7
- export default GalleryHeader;
8
- //# sourceMappingURL=GalleryHeader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GalleryHeader.d.ts","sourceRoot":"","sources":["../../../../../Core/Views/Gallery/Components/GalleryHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIlE,KAAK,kBAAkB,GAAG;IACxB,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAClC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;CACtB,CAAC;AAMF,iBAAS,aAAa,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,kBAAkB,kDAY/D;AAED,eAAe,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GalleryHeader.js","sourceRoot":"","sources":["../../../../../Core/Views/Gallery/Components/GalleryHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAIvC,OAAO,eAAe,MAAM,gDAAgD,CAAC;AAO7E,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA;;CAEvC,CAAC;AAEF,SAAS,aAAa,CAAC,EAAE,YAAY,EAAE,GAAG,EAAsB;IAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAEvC,OAAO,CACL,KAAC,qBAAqB,cACpB,KAAC,eAAe,OAAK,YAAY,CAAC,uBAAuB,EAAE,GAAI,GACzC,CACzB,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC","sourcesContent":["import styled from 'styled-components';\n\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport RenderingEngine from '../../../Components/RenderingEngine/RenderCell';\n\ntype GalleryHeaderProps = {\n headerColumn?: RsCoreTypes.Column;\n row: RsCoreTypes.Row;\n};\n\nconst StyledHeaderContainer = styled.div`\n word-break: break-word;\n`;\n\nfunction GalleryHeader({ headerColumn, row }: GalleryHeaderProps) {\n if (!headerColumn) {\n return null;\n }\n\n headerColumn?.setExecutionContext(row);\n\n return (\n <StyledHeaderContainer>\n <RenderingEngine {...headerColumn.getRenderingEngineProps()} />\n </StyledHeaderContainer>\n );\n}\n\nexport default GalleryHeader;\n"]}
@@ -1,9 +0,0 @@
1
- import type { RsCoreTypes } from 'pega-repeating-structures-core';
2
- import type { Action } from '@pega/cosmos-react-core';
3
- interface UseRowActionsProps {
4
- row: RsCoreTypes.Row;
5
- meta: RsCoreTypes.Meta;
6
- }
7
- declare const useRowActions: ({ row, meta }: UseRowActionsProps) => (() => Promise<Action[]>) | undefined;
8
- export default useRowActions;
9
- //# sourceMappingURL=useRowActions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRowActions.d.ts","sourceRoot":"","sources":["../../../../../Core/Views/Gallery/hooks/useRowActions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,UAAU,kBAAkB;IAC1B,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;CACxB;AAED,QAAA,MAAM,aAAa,GAAI,eAGpB,kBAAkB,KAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,SAuBnD,CAAC;AAEF,eAAe,aAAa,CAAC"}