@pega/cosmos-react-work 5.0.0-dev.4.9 → 5.0.0-dev.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/lib/components/AppAnnouncement/AppAnnouncement.d.ts +23 -0
  2. package/lib/components/AppAnnouncement/AppAnnouncement.d.ts.map +1 -0
  3. package/lib/components/AppAnnouncement/AppAnnouncement.js +93 -0
  4. package/lib/components/AppAnnouncement/AppAnnouncement.js.map +1 -0
  5. package/lib/components/AppAnnouncement/index.d.ts +3 -0
  6. package/lib/components/AppAnnouncement/index.d.ts.map +1 -0
  7. package/lib/components/AppAnnouncement/index.js +2 -0
  8. package/lib/components/AppAnnouncement/index.js.map +1 -0
  9. package/lib/components/Article/Article.d.ts +60 -0
  10. package/lib/components/Article/Article.d.ts.map +1 -0
  11. package/lib/components/Article/Article.js +87 -0
  12. package/lib/components/Article/Article.js.map +1 -0
  13. package/lib/components/Article/ArticleFooter.d.ts +38 -0
  14. package/lib/components/Article/ArticleFooter.d.ts.map +1 -0
  15. package/lib/components/Article/ArticleFooter.js +58 -0
  16. package/lib/components/Article/ArticleFooter.js.map +1 -0
  17. package/lib/components/Article/ArticleMeta.d.ts +13 -0
  18. package/lib/components/Article/ArticleMeta.d.ts.map +1 -0
  19. package/lib/components/Article/ArticleMeta.js +27 -0
  20. package/lib/components/Article/ArticleMeta.js.map +1 -0
  21. package/lib/components/Article/ArticleRating.d.ts +13 -0
  22. package/lib/components/Article/ArticleRating.d.ts.map +1 -0
  23. package/lib/components/Article/ArticleRating.js +43 -0
  24. package/lib/components/Article/ArticleRating.js.map +1 -0
  25. package/lib/components/Article/index.d.ts +7 -0
  26. package/lib/components/Article/index.d.ts.map +1 -0
  27. package/lib/components/Article/index.js +4 -0
  28. package/lib/components/Article/index.js.map +1 -0
  29. package/lib/components/ArticleList/ArticleBuddy.d.ts +9 -0
  30. package/lib/components/ArticleList/ArticleBuddy.d.ts.map +1 -0
  31. package/lib/components/ArticleList/ArticleBuddy.js +57 -0
  32. package/lib/components/ArticleList/ArticleBuddy.js.map +1 -0
  33. package/lib/components/ArticleList/ArticleList.d.ts +6 -0
  34. package/lib/components/ArticleList/ArticleList.d.ts.map +1 -0
  35. package/lib/components/ArticleList/ArticleList.js +146 -0
  36. package/lib/components/ArticleList/ArticleList.js.map +1 -0
  37. package/lib/components/ArticleList/ArticleList.types.d.ts +128 -0
  38. package/lib/components/ArticleList/ArticleList.types.d.ts.map +1 -0
  39. package/lib/components/ArticleList/ArticleList.types.js +7 -0
  40. package/lib/components/ArticleList/ArticleList.types.js.map +1 -0
  41. package/lib/components/ArticleList/ArticleListFilter.d.ts +6 -0
  42. package/lib/components/ArticleList/ArticleListFilter.d.ts.map +1 -0
  43. package/lib/components/ArticleList/ArticleListFilter.js +67 -0
  44. package/lib/components/ArticleList/ArticleListFilter.js.map +1 -0
  45. package/lib/components/ArticleList/ArticleListHeader.d.ts +5 -0
  46. package/lib/components/ArticleList/ArticleListHeader.d.ts.map +1 -0
  47. package/lib/components/ArticleList/ArticleListHeader.js +20 -0
  48. package/lib/components/ArticleList/ArticleListHeader.js.map +1 -0
  49. package/lib/components/ArticleList/ArticleSummary.d.ts +7 -0
  50. package/lib/components/ArticleList/ArticleSummary.d.ts.map +1 -0
  51. package/lib/components/ArticleList/ArticleSummary.js +63 -0
  52. package/lib/components/ArticleList/ArticleSummary.js.map +1 -0
  53. package/lib/components/ArticleList/index.d.ts +8 -0
  54. package/lib/components/ArticleList/index.d.ts.map +1 -0
  55. package/lib/components/ArticleList/index.js +5 -0
  56. package/lib/components/ArticleList/index.js.map +1 -0
  57. package/lib/components/Assignments/Assignments.d.ts +21 -0
  58. package/lib/components/Assignments/Assignments.d.ts.map +1 -0
  59. package/lib/components/Assignments/Assignments.js +20 -0
  60. package/lib/components/Assignments/Assignments.js.map +1 -0
  61. package/lib/components/Assignments/Assignments.styles.d.ts +8 -0
  62. package/lib/components/Assignments/Assignments.styles.d.ts.map +1 -0
  63. package/lib/components/Assignments/Assignments.styles.js +41 -0
  64. package/lib/components/Assignments/Assignments.styles.js.map +1 -0
  65. package/lib/components/Assignments/index.d.ts +3 -0
  66. package/lib/components/Assignments/index.d.ts.map +1 -0
  67. package/lib/components/Assignments/index.js +2 -0
  68. package/lib/components/Assignments/index.js.map +1 -0
  69. package/lib/components/CasePreview/CasePreview.d.ts +27 -0
  70. package/lib/components/CasePreview/CasePreview.d.ts.map +1 -0
  71. package/lib/components/CasePreview/CasePreview.js +82 -0
  72. package/lib/components/CasePreview/CasePreview.js.map +1 -0
  73. package/lib/components/CasePreview/CasePreview.test-ids.d.ts +2 -0
  74. package/lib/components/CasePreview/CasePreview.test-ids.d.ts.map +1 -0
  75. package/lib/components/CasePreview/CasePreview.test-ids.js +3 -0
  76. package/lib/components/CasePreview/CasePreview.test-ids.js.map +1 -0
  77. package/lib/components/CasePreview/index.d.ts +3 -0
  78. package/lib/components/CasePreview/index.d.ts.map +1 -0
  79. package/lib/components/CasePreview/index.js +2 -0
  80. package/lib/components/CasePreview/index.js.map +1 -0
  81. package/lib/components/CaseView/CaseHeader/CaseHeader.d.ts +4 -0
  82. package/lib/components/CaseView/CaseHeader/CaseHeader.d.ts.map +1 -0
  83. package/lib/components/CaseView/CaseHeader/CaseHeader.js +127 -0
  84. package/lib/components/CaseView/CaseHeader/CaseHeader.js.map +1 -0
  85. package/lib/components/CaseView/CaseHeader/Summary.d.ts +6 -0
  86. package/lib/components/CaseView/CaseHeader/Summary.d.ts.map +1 -0
  87. package/lib/components/CaseView/CaseHeader/Summary.js +182 -0
  88. package/lib/components/CaseView/CaseHeader/Summary.js.map +1 -0
  89. package/lib/components/CaseView/CaseSummary.d.ts +4 -0
  90. package/lib/components/CaseView/CaseSummary.d.ts.map +1 -0
  91. package/lib/components/CaseView/CaseSummary.js +18 -0
  92. package/lib/components/CaseView/CaseSummary.js.map +1 -0
  93. package/lib/components/CaseView/CaseSummaryFields.d.ts +6 -0
  94. package/lib/components/CaseView/CaseSummaryFields.d.ts.map +1 -0
  95. package/lib/components/CaseView/CaseSummaryFields.js +18 -0
  96. package/lib/components/CaseView/CaseSummaryFields.js.map +1 -0
  97. package/lib/components/CaseView/CaseView.context.d.ts +5 -0
  98. package/lib/components/CaseView/CaseView.context.d.ts.map +1 -0
  99. package/lib/components/CaseView/CaseView.context.js +5 -0
  100. package/lib/components/CaseView/CaseView.context.js.map +1 -0
  101. package/lib/components/CaseView/CaseView.d.ts +8 -0
  102. package/lib/components/CaseView/CaseView.d.ts.map +1 -0
  103. package/lib/components/CaseView/CaseView.js +421 -0
  104. package/lib/components/CaseView/CaseView.js.map +1 -0
  105. package/lib/components/CaseView/CaseView.styles.d.ts +45 -0
  106. package/lib/components/CaseView/CaseView.styles.d.ts.map +1 -0
  107. package/lib/components/CaseView/CaseView.styles.js +559 -0
  108. package/lib/components/CaseView/CaseView.styles.js.map +1 -0
  109. package/lib/components/CaseView/CaseView.test-ids.d.ts +2 -0
  110. package/lib/components/CaseView/CaseView.test-ids.d.ts.map +1 -0
  111. package/lib/components/CaseView/CaseView.test-ids.js +18 -0
  112. package/lib/components/CaseView/CaseView.test-ids.js.map +1 -0
  113. package/lib/components/CaseView/CaseView.types.d.ts +98 -0
  114. package/lib/components/CaseView/CaseView.types.d.ts.map +1 -0
  115. package/lib/components/CaseView/CaseView.types.js +2 -0
  116. package/lib/components/CaseView/CaseView.types.js.map +1 -0
  117. package/lib/components/CaseView/UtilitiesSummary.d.ts +9 -0
  118. package/lib/components/CaseView/UtilitiesSummary.d.ts.map +1 -0
  119. package/lib/components/CaseView/UtilitiesSummary.js +53 -0
  120. package/lib/components/CaseView/UtilitiesSummary.js.map +1 -0
  121. package/lib/components/CaseView/UtilitySummaryItemDialog.d.ts +9 -0
  122. package/lib/components/CaseView/UtilitySummaryItemDialog.d.ts.map +1 -0
  123. package/lib/components/CaseView/UtilitySummaryItemDialog.js +33 -0
  124. package/lib/components/CaseView/UtilitySummaryItemDialog.js.map +1 -0
  125. package/lib/components/CaseView/index.d.ts +5 -0
  126. package/lib/components/CaseView/index.d.ts.map +1 -0
  127. package/lib/components/CaseView/index.js +4 -0
  128. package/lib/components/CaseView/index.js.map +1 -0
  129. package/lib/components/ConfigurableLayout/ConfigurableLayout.d.ts +4 -0
  130. package/lib/components/ConfigurableLayout/ConfigurableLayout.d.ts.map +1 -0
  131. package/lib/components/ConfigurableLayout/ConfigurableLayout.js +86 -0
  132. package/lib/components/ConfigurableLayout/ConfigurableLayout.js.map +1 -0
  133. package/lib/components/ConfigurableLayout/ConfigurableLayout.types.d.ts +41 -0
  134. package/lib/components/ConfigurableLayout/ConfigurableLayout.types.d.ts.map +1 -0
  135. package/lib/components/ConfigurableLayout/ConfigurableLayout.types.js +2 -0
  136. package/lib/components/ConfigurableLayout/ConfigurableLayout.types.js.map +1 -0
  137. package/lib/components/ConfigurableLayout/LayoutCell.d.ts +6 -0
  138. package/lib/components/ConfigurableLayout/LayoutCell.d.ts.map +1 -0
  139. package/lib/components/ConfigurableLayout/LayoutCell.js +64 -0
  140. package/lib/components/ConfigurableLayout/LayoutCell.js.map +1 -0
  141. package/lib/components/ConfigurableLayout/defaults.d.ts +4 -0
  142. package/lib/components/ConfigurableLayout/defaults.d.ts.map +1 -0
  143. package/lib/components/ConfigurableLayout/defaults.js +4 -0
  144. package/lib/components/ConfigurableLayout/defaults.js.map +1 -0
  145. package/lib/components/ConfigurableLayout/index.d.ts +4 -0
  146. package/lib/components/ConfigurableLayout/index.d.ts.map +1 -0
  147. package/lib/components/ConfigurableLayout/index.js +3 -0
  148. package/lib/components/ConfigurableLayout/index.js.map +1 -0
  149. package/lib/components/ConfigurableLayout/options.d.ts +10 -0
  150. package/lib/components/ConfigurableLayout/options.d.ts.map +1 -0
  151. package/lib/components/ConfigurableLayout/options.js +10 -0
  152. package/lib/components/ConfigurableLayout/options.js.map +1 -0
  153. package/lib/components/ConfigurableLayout/useTrackWrappedRegions.d.ts +7 -0
  154. package/lib/components/ConfigurableLayout/useTrackWrappedRegions.d.ts.map +1 -0
  155. package/lib/components/ConfigurableLayout/useTrackWrappedRegions.js +37 -0
  156. package/lib/components/ConfigurableLayout/useTrackWrappedRegions.js.map +1 -0
  157. package/lib/components/Confirmation/Confirmation.d.ts +19 -0
  158. package/lib/components/Confirmation/Confirmation.d.ts.map +1 -0
  159. package/lib/components/Confirmation/Confirmation.js +29 -0
  160. package/lib/components/Confirmation/Confirmation.js.map +1 -0
  161. package/lib/components/Confirmation/index.d.ts +3 -0
  162. package/lib/components/Confirmation/index.d.ts.map +1 -0
  163. package/lib/components/Confirmation/index.js +2 -0
  164. package/lib/components/Confirmation/index.js.map +1 -0
  165. package/lib/components/Details/Details.d.ts +43 -0
  166. package/lib/components/Details/Details.d.ts.map +1 -0
  167. package/lib/components/Details/Details.js +95 -0
  168. package/lib/components/Details/Details.js.map +1 -0
  169. package/lib/components/Details/Details.styles.d.ts +50 -0
  170. package/lib/components/Details/Details.styles.d.ts.map +1 -0
  171. package/lib/components/Details/Details.styles.js +204 -0
  172. package/lib/components/Details/Details.styles.js.map +1 -0
  173. package/lib/components/Details/Details.test-ids.d.ts +2 -0
  174. package/lib/components/Details/Details.test-ids.d.ts.map +1 -0
  175. package/lib/components/Details/Details.test-ids.js +9 -0
  176. package/lib/components/Details/Details.test-ids.js.map +1 -0
  177. package/lib/components/Details/DetailsContext.d.ts +9 -0
  178. package/lib/components/Details/DetailsContext.d.ts.map +1 -0
  179. package/lib/components/Details/DetailsContext.js +9 -0
  180. package/lib/components/Details/DetailsContext.js.map +1 -0
  181. package/lib/components/Details/index.d.ts +4 -0
  182. package/lib/components/Details/index.d.ts.map +1 -0
  183. package/lib/components/Details/index.js +4 -0
  184. package/lib/components/Details/index.js.map +1 -0
  185. package/lib/components/Glimpse/Glimpse.d.ts +20 -0
  186. package/lib/components/Glimpse/Glimpse.d.ts.map +1 -0
  187. package/lib/components/Glimpse/Glimpse.js +12 -0
  188. package/lib/components/Glimpse/Glimpse.js.map +1 -0
  189. package/lib/components/Glimpse/index.d.ts +3 -0
  190. package/lib/components/Glimpse/index.d.ts.map +1 -0
  191. package/lib/components/Glimpse/index.js +2 -0
  192. package/lib/components/Glimpse/index.js.map +1 -0
  193. package/lib/components/IntelligentGuidance/IntelligentGuidance.d.ts +6 -0
  194. package/lib/components/IntelligentGuidance/IntelligentGuidance.d.ts.map +1 -0
  195. package/lib/components/IntelligentGuidance/IntelligentGuidance.js +83 -0
  196. package/lib/components/IntelligentGuidance/IntelligentGuidance.js.map +1 -0
  197. package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.d.ts +9 -0
  198. package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.d.ts.map +1 -0
  199. package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.js +199 -0
  200. package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.js.map +1 -0
  201. package/lib/components/IntelligentGuidance/IntelligentGuidance.types.d.ts +35 -0
  202. package/lib/components/IntelligentGuidance/IntelligentGuidance.types.d.ts.map +1 -0
  203. package/lib/components/IntelligentGuidance/IntelligentGuidance.types.js +2 -0
  204. package/lib/components/IntelligentGuidance/IntelligentGuidance.types.js.map +1 -0
  205. package/lib/components/IntelligentGuidance/index.d.ts +3 -0
  206. package/lib/components/IntelligentGuidance/index.d.ts.map +1 -0
  207. package/lib/components/IntelligentGuidance/index.js +2 -0
  208. package/lib/components/IntelligentGuidance/index.js.map +1 -0
  209. package/lib/components/Predictions/Predictions.d.ts +6 -0
  210. package/lib/components/Predictions/Predictions.d.ts.map +1 -0
  211. package/lib/components/Predictions/Predictions.js +68 -0
  212. package/lib/components/Predictions/Predictions.js.map +1 -0
  213. package/lib/components/Predictions/Predictions.types.d.ts +23 -0
  214. package/lib/components/Predictions/Predictions.types.d.ts.map +1 -0
  215. package/lib/components/Predictions/Predictions.types.js +2 -0
  216. package/lib/components/Predictions/Predictions.types.js.map +1 -0
  217. package/lib/components/Predictions/index.d.ts +3 -0
  218. package/lib/components/Predictions/index.d.ts.map +1 -0
  219. package/lib/components/Predictions/index.js +2 -0
  220. package/lib/components/Predictions/index.js.map +1 -0
  221. package/lib/components/SearchResults/Filter.d.ts +8 -0
  222. package/lib/components/SearchResults/Filter.d.ts.map +1 -0
  223. package/lib/components/SearchResults/Filter.js +45 -0
  224. package/lib/components/SearchResults/Filter.js.map +1 -0
  225. package/lib/components/SearchResults/SearchResult.d.ts +4 -0
  226. package/lib/components/SearchResults/SearchResult.d.ts.map +1 -0
  227. package/lib/components/SearchResults/SearchResult.js +27 -0
  228. package/lib/components/SearchResults/SearchResult.js.map +1 -0
  229. package/lib/components/SearchResults/SearchResults.d.ts +6 -0
  230. package/lib/components/SearchResults/SearchResults.d.ts.map +1 -0
  231. package/lib/components/SearchResults/SearchResults.js +121 -0
  232. package/lib/components/SearchResults/SearchResults.js.map +1 -0
  233. package/lib/components/SearchResults/SearchResults.styles.d.ts +11 -0
  234. package/lib/components/SearchResults/SearchResults.styles.d.ts.map +1 -0
  235. package/lib/components/SearchResults/SearchResults.styles.js +88 -0
  236. package/lib/components/SearchResults/SearchResults.styles.js.map +1 -0
  237. package/lib/components/SearchResults/SearchResults.types.d.ts +100 -0
  238. package/lib/components/SearchResults/SearchResults.types.d.ts.map +1 -0
  239. package/lib/components/SearchResults/SearchResults.types.js +2 -0
  240. package/lib/components/SearchResults/SearchResults.types.js.map +1 -0
  241. package/lib/components/SearchResults/index.d.ts +3 -0
  242. package/lib/components/SearchResults/index.d.ts.map +1 -0
  243. package/lib/components/SearchResults/index.js +2 -0
  244. package/lib/components/SearchResults/index.js.map +1 -0
  245. package/lib/components/Stages/StageGlimpse.d.ts +8 -0
  246. package/lib/components/Stages/StageGlimpse.d.ts.map +1 -0
  247. package/lib/components/Stages/StageGlimpse.js +11 -0
  248. package/lib/components/Stages/StageGlimpse.js.map +1 -0
  249. package/lib/components/Stages/Stages.d.ts +6 -0
  250. package/lib/components/Stages/Stages.d.ts.map +1 -0
  251. package/lib/components/Stages/Stages.js +107 -0
  252. package/lib/components/Stages/Stages.js.map +1 -0
  253. package/lib/components/Stages/Stages.styles.d.ts +14 -0
  254. package/lib/components/Stages/Stages.styles.d.ts.map +1 -0
  255. package/lib/components/Stages/Stages.styles.js +270 -0
  256. package/lib/components/Stages/Stages.styles.js.map +1 -0
  257. package/lib/components/Stages/Stages.types.d.ts +38 -0
  258. package/lib/components/Stages/Stages.types.d.ts.map +1 -0
  259. package/lib/components/Stages/Stages.types.js +2 -0
  260. package/lib/components/Stages/Stages.types.js.map +1 -0
  261. package/lib/components/Stages/index.d.ts +3 -0
  262. package/lib/components/Stages/index.d.ts.map +1 -0
  263. package/lib/components/Stages/index.js +2 -0
  264. package/lib/components/Stages/index.js.map +1 -0
  265. package/lib/components/Stakeholders/StakeholderForm.d.ts +7 -0
  266. package/lib/components/Stakeholders/StakeholderForm.d.ts.map +1 -0
  267. package/lib/components/Stakeholders/StakeholderForm.js +49 -0
  268. package/lib/components/Stakeholders/StakeholderForm.js.map +1 -0
  269. package/lib/components/Stakeholders/Stakeholders.d.ts +6 -0
  270. package/lib/components/Stakeholders/Stakeholders.d.ts.map +1 -0
  271. package/lib/components/Stakeholders/Stakeholders.js +220 -0
  272. package/lib/components/Stakeholders/Stakeholders.js.map +1 -0
  273. package/lib/components/Stakeholders/Stakeholders.types.d.ts +75 -0
  274. package/lib/components/Stakeholders/Stakeholders.types.d.ts.map +1 -0
  275. package/lib/components/Stakeholders/Stakeholders.types.js +2 -0
  276. package/lib/components/Stakeholders/Stakeholders.types.js.map +1 -0
  277. package/lib/components/Stakeholders/index.d.ts +3 -0
  278. package/lib/components/Stakeholders/index.d.ts.map +1 -0
  279. package/lib/components/Stakeholders/index.js +2 -0
  280. package/lib/components/Stakeholders/index.js.map +1 -0
  281. package/lib/components/Tags/Tags.d.ts +34 -0
  282. package/lib/components/Tags/Tags.d.ts.map +1 -0
  283. package/lib/components/Tags/Tags.js +230 -0
  284. package/lib/components/Tags/Tags.js.map +1 -0
  285. package/lib/components/Tags/index.d.ts +3 -0
  286. package/lib/components/Tags/index.d.ts.map +1 -0
  287. package/lib/components/Tags/index.js +2 -0
  288. package/lib/components/Tags/index.js.map +1 -0
  289. package/lib/components/Tasks/TaskList.d.ts +39 -0
  290. package/lib/components/Tasks/TaskList.d.ts.map +1 -0
  291. package/lib/components/Tasks/TaskList.js +71 -0
  292. package/lib/components/Tasks/TaskList.js.map +1 -0
  293. package/lib/components/Tasks/Tasks.d.ts +29 -0
  294. package/lib/components/Tasks/Tasks.d.ts.map +1 -0
  295. package/lib/components/Tasks/Tasks.js +52 -0
  296. package/lib/components/Tasks/Tasks.js.map +1 -0
  297. package/lib/components/Tasks/Tasks.test-ids.d.ts +4 -0
  298. package/lib/components/Tasks/Tasks.test-ids.d.ts.map +1 -0
  299. package/lib/components/Tasks/Tasks.test-ids.js +5 -0
  300. package/lib/components/Tasks/Tasks.test-ids.js.map +1 -0
  301. package/lib/components/Tasks/index.d.ts +6 -0
  302. package/lib/components/Tasks/index.d.ts.map +1 -0
  303. package/lib/components/Tasks/index.js +4 -0
  304. package/lib/components/Tasks/index.js.map +1 -0
  305. package/lib/components/Timeline/Timeline.d.ts +6 -0
  306. package/lib/components/Timeline/Timeline.d.ts.map +1 -0
  307. package/lib/components/Timeline/Timeline.js +26 -0
  308. package/lib/components/Timeline/Timeline.js.map +1 -0
  309. package/lib/components/Timeline/Timeline.styles.d.ts +21 -0
  310. package/lib/components/Timeline/Timeline.styles.d.ts.map +1 -0
  311. package/lib/components/Timeline/Timeline.styles.js +165 -0
  312. package/lib/components/Timeline/Timeline.styles.js.map +1 -0
  313. package/lib/components/Timeline/Timeline.types.d.ts +66 -0
  314. package/lib/components/Timeline/Timeline.types.d.ts.map +1 -0
  315. package/lib/components/Timeline/Timeline.types.js +2 -0
  316. package/lib/components/Timeline/Timeline.types.js.map +1 -0
  317. package/lib/components/Timeline/TimelineItem.d.ts +13 -0
  318. package/lib/components/Timeline/TimelineItem.d.ts.map +1 -0
  319. package/lib/components/Timeline/TimelineItem.js +33 -0
  320. package/lib/components/Timeline/TimelineItem.js.map +1 -0
  321. package/lib/components/Timeline/TimelineToolbar.d.ts +6 -0
  322. package/lib/components/Timeline/TimelineToolbar.d.ts.map +1 -0
  323. package/lib/components/Timeline/TimelineToolbar.js +68 -0
  324. package/lib/components/Timeline/TimelineToolbar.js.map +1 -0
  325. package/lib/components/Timeline/index.d.ts +4 -0
  326. package/lib/components/Timeline/index.d.ts.map +1 -0
  327. package/lib/components/Timeline/index.js +3 -0
  328. package/lib/components/Timeline/index.js.map +1 -0
  329. package/lib/components/Timeline/utils.d.ts +15 -0
  330. package/lib/components/Timeline/utils.d.ts.map +1 -0
  331. package/lib/components/Timeline/utils.js +75 -0
  332. package/lib/components/Timeline/utils.js.map +1 -0
  333. package/lib/index.d.ts +37 -0
  334. package/lib/index.d.ts.map +1 -0
  335. package/lib/index.js +38 -0
  336. package/lib/index.js.map +1 -0
  337. package/package.json +2 -2
@@ -0,0 +1,7 @@
1
+ export { default } from './Article';
2
+ export { default as ArticleFooter } from './ArticleFooter';
3
+ export { default as ArticleRating } from './ArticleRating';
4
+ export type { ArticleProps } from './Article';
5
+ export type { ArticleTag, ArticleFooterProps } from './ArticleFooter';
6
+ export type { ArticleRatingProps } from './ArticleRating';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Article/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { default } from './Article';
2
+ export { default as ArticleFooter } from './ArticleFooter';
3
+ export { default as ArticleRating } from './ArticleRating';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Article/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["export { default } from './Article';\nexport { default as ArticleFooter } from './ArticleFooter';\nexport { default as ArticleRating } from './ArticleRating';\nexport type { ArticleProps } from './Article';\nexport type { ArticleTag, ArticleFooterProps } from './ArticleFooter';\nexport type { ArticleRatingProps } from './ArticleRating';\n"]}
@@ -0,0 +1,9 @@
1
+ import type { FunctionComponent } from 'react';
2
+ import type { ForwardProps } from '@pega/cosmos-react-core';
3
+ import type { ArticleBuddyProps } from './ArticleList.types';
4
+ export declare const StyledDisclaimerHeader: import("styled-components").StyledComponent<FunctionComponent<import("@pega/cosmos-react-core").TextProps & ForwardProps>, import("styled-components").DefaultTheme, {}, never>;
5
+ export declare const StyledDisclaimerText: import("styled-components").StyledComponent<FunctionComponent<import("@pega/cosmos-react-core").TextProps & ForwardProps>, import("styled-components").DefaultTheme, {}, never>;
6
+ export declare const StyledBuddyContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
7
+ declare const ArticleBuddy: FunctionComponent<ArticleBuddyProps & ForwardProps>;
8
+ export default ArticleBuddy;
9
+ //# sourceMappingURL=ArticleBuddy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArticleBuddy.d.ts","sourceRoot":"","sources":["../../../src/components/ArticleList/ArticleBuddy.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAc,MAAM,OAAO,CAAC;AAmB3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,eAAO,MAAM,sBAAsB,iLAYlC,CAAC;AAIF,eAAO,MAAM,oBAAoB,iLAahC,CAAC;AAIF,eAAO,MAAM,oBAAoB,yGAahC,CAAC;AAMF,QAAA,MAAM,YAAY,EAAE,iBAAiB,CAAC,iBAAiB,GAAG,YAAY,CA4GrE,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect } from 'react';
3
+ import styled, { css } from 'styled-components';
4
+ import { Text, Actions, Flex, defaultThemeProp, SearchInput, EmptyState, useI18n, Link, calculateFontSize, Progress, Button, useConfiguration, formatNumber, useLiveLog } from '@pega/cosmos-react-core';
5
+ import { isExternalLink, isInternalArticle } from './ArticleList.types';
6
+ export const StyledDisclaimerHeader = styled(Text)(({ theme: { base: { spacing, palette } } }) => {
7
+ return css `
8
+ font-weight: bold;
9
+ border-block-start: 0.0625rem solid ${palette['border-line']};
10
+ padding-block: ${spacing};
11
+ `;
12
+ });
13
+ StyledDisclaimerHeader.defaultProps = defaultThemeProp;
14
+ export const StyledDisclaimerText = styled(Text)(({ theme: { base: { 'font-size': fontSize, 'font-scale': fontScale, spacing } } }) => {
15
+ const systemFontSize = calculateFontSize(fontSize, fontScale).xs;
16
+ return css `
17
+ font-style: italic;
18
+ font-size: ${systemFontSize};
19
+ margin-block-end: calc(2.5 * ${spacing});
20
+ `;
21
+ });
22
+ StyledDisclaimerText.defaultProps = defaultThemeProp;
23
+ export const StyledBuddyContainer = styled.div(({ theme: { base: { spacing } } }) => {
24
+ return css `
25
+ padding: calc(2 * ${spacing});
26
+ overflow-y: auto;
27
+ max-height: inherit;
28
+ height: 100%;
29
+ `;
30
+ });
31
+ StyledBuddyContainer.defaultProps = defaultThemeProp;
32
+ const StyledBuddyArticleHeader = styled.header ``;
33
+ const ArticleBuddy = ({ searchInput, title, content, actions, references, disclaimer, loading = false, ...restProps }) => {
34
+ const t = useI18n();
35
+ const { locale } = useConfiguration();
36
+ const { announcePolite } = useLiveLog();
37
+ useEffect(() => {
38
+ if (content) {
39
+ announcePolite({
40
+ message: t('result_available'),
41
+ type: 'acknowledgement'
42
+ });
43
+ }
44
+ }, [content]);
45
+ return (_jsxs(Flex, { ...restProps, as: StyledBuddyContainer, container: { direction: 'column', gap: 1 }, "aria-busy": loading ? true : undefined, children: [_jsx(SearchInput, { ...searchInput }), loading && _jsx(Progress, { visible: !!loading, placement: 'block', message: t('loading') }), !loading && title && content && (_jsxs(_Fragment, { children: [_jsxs("article", { children: [_jsxs(Flex, { container: { alignItems: 'start' }, item: { grow: 1 }, children: [_jsx(Flex, { container: { pad: [1, undefined, undefined] }, item: { grow: 1, shrink: 0 }, as: StyledBuddyArticleHeader, children: _jsx(Text, { variant: 'h3', children: title }) }), actions && _jsx(Actions, { items: actions })] }), _jsx(Flex, { container: true, item: { grow: 1 }, children: content })] }), references && (_jsxs(Flex, { container: { direction: 'column', gap: 1, pad: [undefined, 1] }, children: [_jsx(Text, { variant: 'h3', children: t('references') }), references?.map(reference => {
46
+ return (_jsxs(Flex, { container: true, children: [_jsxs(Flex, { container: { alignItems: 'start', gap: 1 }, item: { grow: 1 }, children: [isExternalLink(reference) && (_jsx(Link, { href: reference.href, target: '_blank', children: title }, reference.id)), isInternalArticle(reference) && (_jsx(Button, { variant: 'link', onClick: (e) => reference.onClick(reference.id, e), children: reference.name }))] }), _jsx(Flex, { container: { alignItems: 'start' }, item: { grow: 0 }, children: _jsx(Text, { children: formatNumber(reference.confidence, {
47
+ locale,
48
+ options: {
49
+ style: 'unit',
50
+ unit: 'percent',
51
+ maximumFractionDigits: 0
52
+ }
53
+ }) }) })] }, reference.id));
54
+ })] }))] })), !loading && (!title || !content) && (_jsx(Flex, { container: { direction: 'column', pad: [2, undefined] }, children: _jsx(EmptyState, {}) })), disclaimer && (_jsxs(Flex, { container: { direction: 'column', pad: [1] }, children: [_jsx(StyledDisclaimerHeader, { children: t('disclaimer') }), _jsx(StyledDisclaimerText, { children: disclaimer })] }))] }));
55
+ };
56
+ export default ArticleBuddy;
57
+ //# sourceMappingURL=ArticleBuddy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArticleBuddy.js","sourceRoot":"","sources":["../../../src/components/ArticleList/ArticleBuddy.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect } from 'react';\nimport type { FunctionComponent, MouseEvent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Text,\n Actions,\n Flex,\n defaultThemeProp,\n SearchInput,\n EmptyState,\n useI18n,\n Link,\n calculateFontSize,\n Progress,\n Button,\n useConfiguration,\n formatNumber,\n useLiveLog\n} from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\n\nimport { isExternalLink, isInternalArticle } from './ArticleList.types';\nimport type { ArticleBuddyProps } from './ArticleList.types';\n\nexport const StyledDisclaimerHeader = styled(Text)(\n ({\n theme: {\n base: { spacing, palette }\n }\n }) => {\n return css`\n font-weight: bold;\n border-block-start: 0.0625rem solid ${palette['border-line']};\n padding-block: ${spacing};\n `;\n }\n);\n\nStyledDisclaimerHeader.defaultProps = defaultThemeProp;\n\nexport const StyledDisclaimerText = styled(Text)(\n ({\n theme: {\n base: { 'font-size': fontSize, 'font-scale': fontScale, spacing }\n }\n }) => {\n const systemFontSize = calculateFontSize(fontSize, fontScale).xs;\n return css`\n font-style: italic;\n font-size: ${systemFontSize};\n margin-block-end: calc(2.5 * ${spacing});\n `;\n }\n);\n\nStyledDisclaimerText.defaultProps = defaultThemeProp;\n\nexport const StyledBuddyContainer = styled.div(\n ({\n theme: {\n base: { spacing }\n }\n }) => {\n return css`\n padding: calc(2 * ${spacing});\n overflow-y: auto;\n max-height: inherit;\n height: 100%;\n `;\n }\n);\n\nStyledBuddyContainer.defaultProps = defaultThemeProp;\n\nconst StyledBuddyArticleHeader = styled.header``;\n\nconst ArticleBuddy: FunctionComponent<ArticleBuddyProps & ForwardProps> = ({\n searchInput,\n title,\n content,\n actions,\n references,\n disclaimer,\n loading = false,\n ...restProps\n}) => {\n const t = useI18n();\n const { locale } = useConfiguration();\n const { announcePolite } = useLiveLog();\n\n useEffect(() => {\n if (content) {\n announcePolite({\n message: t('result_available'),\n type: 'acknowledgement'\n });\n }\n }, [content]);\n\n return (\n <Flex\n {...restProps}\n as={StyledBuddyContainer}\n container={{ direction: 'column', gap: 1 }}\n aria-busy={loading ? true : undefined}\n >\n <SearchInput {...searchInput} />\n\n {loading && <Progress visible={!!loading} placement='block' message={t('loading')} />}\n {!loading && title && content && (\n <>\n <article>\n <Flex container={{ alignItems: 'start' }} item={{ grow: 1 }}>\n <Flex\n container={{ pad: [1, undefined, undefined] }}\n item={{ grow: 1, shrink: 0 }}\n as={StyledBuddyArticleHeader}\n >\n <Text variant='h3'>{title}</Text>\n </Flex>\n\n {actions && <Actions items={actions} />}\n </Flex>\n <Flex container item={{ grow: 1 }}>\n {content}\n </Flex>\n </article>\n {references && (\n <Flex container={{ direction: 'column', gap: 1, pad: [undefined, 1] }}>\n <Text variant='h3'>{t('references')}</Text>\n {references?.map(reference => {\n return (\n <Flex container key={reference.id}>\n <Flex container={{ alignItems: 'start', gap: 1 }} item={{ grow: 1 }}>\n {isExternalLink(reference) && (\n <Link href={reference.href} target='_blank' key={reference.id}>\n {title}\n </Link>\n )}\n {isInternalArticle(reference) && (\n <Button\n variant='link'\n onClick={(e: MouseEvent<HTMLButtonElement>) =>\n reference.onClick(reference.id, e)\n }\n >\n {reference.name}\n </Button>\n )}\n </Flex>\n <Flex container={{ alignItems: 'start' }} item={{ grow: 0 }}>\n <Text>\n {formatNumber(reference.confidence, {\n locale,\n options: {\n style: 'unit',\n unit: 'percent',\n maximumFractionDigits: 0\n }\n })}\n </Text>\n </Flex>\n </Flex>\n );\n })}\n </Flex>\n )}\n </>\n )}\n\n {!loading && (!title || !content) && (\n <Flex container={{ direction: 'column', pad: [2, undefined] }}>\n <EmptyState />\n </Flex>\n )}\n\n {disclaimer && (\n <Flex container={{ direction: 'column', pad: [1] }}>\n <StyledDisclaimerHeader>{t('disclaimer')}</StyledDisclaimerHeader>\n <StyledDisclaimerText>{disclaimer}</StyledDisclaimerText>\n </Flex>\n )}\n </Flex>\n );\n};\n\nexport default ArticleBuddy;\n"]}
@@ -0,0 +1,6 @@
1
+ import type { FunctionComponent } from 'react';
2
+ import type { ForwardProps } from '@pega/cosmos-react-core';
3
+ import type { ArticleListProps } from './ArticleList.types';
4
+ declare const ArticleList: FunctionComponent<ArticleListProps & ForwardProps>;
5
+ export default ArticleList;
6
+ //# sourceMappingURL=ArticleList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArticleList.d.ts","sourceRoot":"","sources":["../../../src/components/ArticleList/ArticleList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAmC,MAAM,OAAO,CAAC;AAehF,OAAO,KAAK,EAAE,YAAY,EAAO,MAAM,yBAAyB,CAAC;AAIjE,OAAO,KAAK,EAEV,gBAAgB,EAGjB,MAAM,qBAAqB,CAAC;AAiD7B,QAAA,MAAM,WAAW,EAAE,iBAAiB,CAAC,gBAAgB,GAAG,YAAY,CAyOnE,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,146 @@
1
+ import { createElement as _createElement } from "react";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { forwardRef, useMemo, useEffect, useRef, createRef } from 'react';
4
+ import styled, { css } from 'styled-components';
5
+ import { Flex, useI18n, defaultThemeProp, TabPanel, Tabs, EmptyState, Progress, getFocusables, useLiveLog, useItemIntersection } from '@pega/cosmos-react-core';
6
+ import ArticleListFilter from './ArticleListFilter';
7
+ import ArticleSummary from './ArticleSummary';
8
+ import ArticleListHeader from './ArticleListHeader';
9
+ import ArticleBuddy from './ArticleBuddy';
10
+ const StyledSummaryList = styled.ul(({ theme }) => {
11
+ return css `
12
+ max-height: calc(100vh - 8 * ${theme.base.spacing});
13
+ flex-grow: 1;
14
+ height: 100%;
15
+ list-style-type: none;
16
+ overflow-y: auto;
17
+ border-end-start-radius: ${theme.base['border-radius']};
18
+ border-end-end-radius: ${theme.base['border-radius']};
19
+ > li[role='article'] {
20
+ padding-block: ${theme.base.spacing};
21
+ }
22
+ `;
23
+ });
24
+ StyledSummaryList.defaultProps = defaultThemeProp;
25
+ const StyledArticleTabPanel = styled.div(({ theme }) => {
26
+ return css `
27
+ display: flex;
28
+ flex-direction: column;
29
+ min-height: 0;
30
+ flex: 1 1;
31
+ gap: ${theme.base.spacing};
32
+ `;
33
+ });
34
+ StyledArticleTabPanel.defaultProps = defaultThemeProp;
35
+ const StyledArticleList = styled.article(({ theme }) => {
36
+ return css `
37
+ height: 100%;
38
+ padding-block: 0;
39
+ background: ${theme.base.palette['primary-background']};
40
+ border-radius: ${theme.components.card['border-radius']};
41
+ > div[role='tablist'] {
42
+ button[role='tab'] {
43
+ padding: 0 calc(1.5 * ${theme.base.spacing});
44
+ }
45
+ }
46
+ `;
47
+ });
48
+ StyledArticleList.defaultProps = defaultThemeProp;
49
+ const ArticleList = forwardRef(function ArticleList(props, ref) {
50
+ const { header, suggested, followed, search, buddy, onTabClick, activeTab, loading = false, loadingMore = false, onQuickFilterClick, onLoadMore, ...restProps } = props;
51
+ const t = useI18n();
52
+ const { announcePolite } = useLiveLog();
53
+ const articleContentRefs = useRef([]);
54
+ const activeTabContentRef = useRef(null);
55
+ const tabsRef = useRef(null);
56
+ const activeElementRef = useRef(null);
57
+ const tabs = useMemo(() => {
58
+ const tabsArr = [];
59
+ if (suggested)
60
+ tabsArr.push({
61
+ id: 'Suggested',
62
+ name: t('suggested'),
63
+ count: suggested?.count,
64
+ content: suggested.articles ?? []
65
+ });
66
+ if (search)
67
+ tabsArr.push({
68
+ id: 'Search',
69
+ name: t('search'),
70
+ count: search?.count,
71
+ content: search?.articles ?? []
72
+ });
73
+ if (followed)
74
+ tabsArr.push({
75
+ id: 'Followed',
76
+ name: t('followed'),
77
+ count: followed?.count,
78
+ content: followed?.articles ?? []
79
+ });
80
+ if (buddy)
81
+ tabsArr.push({
82
+ id: 'Buddy',
83
+ name: t('buddy')
84
+ });
85
+ return tabsArr;
86
+ }, [suggested, followed, search, buddy]);
87
+ const listUlRef = tabs.reduce((acc, tab) => {
88
+ return { ...acc, [tab.id]: createRef() };
89
+ }, {});
90
+ useEffect(() => {
91
+ if (tabsRef.current && getFocusables(tabsRef)?.length > 0)
92
+ activeElementRef.current = getFocusables(tabsRef)[0];
93
+ else {
94
+ activeTabContentRef.current =
95
+ articleContentRefs.current[tabs.findIndex(({ id }) => id === activeTab)];
96
+ if (activeTabContentRef && getFocusables(activeTabContentRef)?.length > 0) {
97
+ activeElementRef.current = getFocusables(activeTabContentRef)[0];
98
+ }
99
+ }
100
+ }, []);
101
+ useEffect(() => {
102
+ if (!loading) {
103
+ const currentTabContent = tabs.find(tab => tab.id === activeTab)?.content;
104
+ announcePolite({
105
+ type: 'status',
106
+ message: currentTabContent && currentTabContent?.length > 0
107
+ ? `${header?.title || t('article_list_label_a11y')} ${t('loaded')}`
108
+ : t('no_items')
109
+ });
110
+ }
111
+ }, [loading]);
112
+ const getItemLength = (tabName) => {
113
+ const currentTab = tabs.find(item => item.id === tabName);
114
+ if (!currentTab || !currentTab.content) {
115
+ return 0;
116
+ }
117
+ return currentTab.content.length - 1;
118
+ };
119
+ useItemIntersection(listUlRef[activeTab], getItemLength(activeTab), () => {
120
+ if (!loadingMore)
121
+ onLoadMore?.();
122
+ }, ':scope > li[role="article"]');
123
+ const articleContent = ({ content, tabId, headerTitle }) => {
124
+ return (_jsxs(_Fragment, { children: [activeTab === t('search') && search && _jsx(ArticleListFilter, { ...search }), activeTab === t('followed') && followed && _jsx(ArticleListFilter, { ...followed }), loading && (_jsx(Progress, { visible: !!loading, placement: 'block', message: t('loading'), liveConfig: { contextualLabel: headerTitle ?? t('article_list_label_a11y') } })), !loading &&
125
+ (content.length > 0 ? (_jsxs(Flex, { container: { direction: 'column', gap: 0.5, pad: [1.5, 2] }, as: StyledSummaryList, role: 'feed', ref: listUlRef[tabId], children: [content.map(summaryItem => (_createElement(ArticleSummary, { ...summaryItem, key: summaryItem.articleId, onQuickFilterClick: onQuickFilterClick }))), loadingMore && _jsx(Progress, { placement: 'block' })] })) : (_jsx(EmptyState, {})))] }));
126
+ };
127
+ return (_jsxs(Flex, { ...restProps, container: {
128
+ direction: 'column',
129
+ pad: [0.5, undefined]
130
+ }, as: StyledArticleList, "aria-label": t('article_list_label_a11y'), ref: ref, "aria-busy": loading ? true : undefined, children: [header && (_jsx(ArticleListHeader, { icon: header.icon, title: header.title, actions: header.actions })), tabs.length === 1 && (_jsx(_Fragment, { children: tabs[0].id === 'Buddy' && buddy ? (_jsx(ArticleBuddy, { ...buddy })) : (articleContent({
131
+ content: tabs[0]?.content || [],
132
+ tabId: tabs[0].id,
133
+ headerTitle: header?.title
134
+ })) })), tabs.length > 1 && (_jsxs(_Fragment, { children: [_jsx(Tabs, { ref: tabsRef, tabs: tabs, onTabClick: (name, e) => {
135
+ if (document.activeElement instanceof HTMLElement) {
136
+ activeElementRef.current = document.activeElement;
137
+ onTabClick?.(name, e);
138
+ }
139
+ }, currentTabId: activeTab }), tabs.map(({ id, content }) => {
140
+ return (_jsx(TabPanel, { tabId: id, currentTabId: activeTab, as: activeTab === id ? StyledArticleTabPanel : undefined, children: activeTab === t('buddy') ? (_jsx(ArticleBuddy, { searchInput: buddy?.searchInput ?? {}, title: buddy?.title ?? '', actions: buddy?.actions ?? [], content: buddy?.content, disclaimer: buddy?.disclaimer, references: buddy?.references, loading: buddy?.loading })) : (_jsx(_Fragment, { children: activeTab === id &&
141
+ content &&
142
+ articleContent({ content, tabId: id, headerTitle: header?.title }) })) }, id));
143
+ })] }))] }));
144
+ });
145
+ export default ArticleList;
146
+ //# sourceMappingURL=ArticleList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArticleList.js","sourceRoot":"","sources":["../../../src/components/ArticleList/ArticleList.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useMemo, useEffect, useRef, createRef } from 'react';\nimport type { FunctionComponent, Ref, PropsWithoutRef, RefObject } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Flex,\n useI18n,\n defaultThemeProp,\n TabPanel,\n Tabs,\n EmptyState,\n Progress,\n getFocusables,\n useLiveLog,\n useItemIntersection\n} from '@pega/cosmos-react-core';\nimport type { ForwardProps, Tab } from '@pega/cosmos-react-core';\n\nimport ArticleListFilter from './ArticleListFilter';\nimport ArticleSummary from './ArticleSummary';\nimport type {\n ArticleListTabId,\n ArticleListProps,\n ArticleSummaryProps,\n ArticleListHeaderProps\n} from './ArticleList.types';\nimport ArticleListHeader from './ArticleListHeader';\nimport ArticleBuddy from './ArticleBuddy';\n\nconst StyledSummaryList = styled.ul(({ theme }) => {\n return css`\n max-height: calc(100vh - 8 * ${theme.base.spacing});\n flex-grow: 1;\n height: 100%;\n list-style-type: none;\n overflow-y: auto;\n border-end-start-radius: ${theme.base['border-radius']};\n border-end-end-radius: ${theme.base['border-radius']};\n > li[role='article'] {\n padding-block: ${theme.base.spacing};\n }\n `;\n});\n\nStyledSummaryList.defaultProps = defaultThemeProp;\n\nconst StyledArticleTabPanel = styled.div(({ theme }) => {\n return css`\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1 1;\n gap: ${theme.base.spacing};\n `;\n});\n\nStyledArticleTabPanel.defaultProps = defaultThemeProp;\n\nconst StyledArticleList = styled.article(({ theme }) => {\n return css`\n height: 100%;\n padding-block: 0;\n background: ${theme.base.palette['primary-background']};\n border-radius: ${theme.components.card['border-radius']};\n > div[role='tablist'] {\n button[role='tab'] {\n padding: 0 calc(1.5 * ${theme.base.spacing});\n }\n }\n `;\n});\n\nStyledArticleList.defaultProps = defaultThemeProp;\n\nconst ArticleList: FunctionComponent<ArticleListProps & ForwardProps> = forwardRef(\n function ArticleList(props: PropsWithoutRef<ArticleListProps>, ref: Ref<HTMLDivElement>) {\n const {\n header,\n suggested,\n followed,\n search,\n buddy,\n onTabClick,\n activeTab,\n loading = false,\n loadingMore = false,\n onQuickFilterClick,\n onLoadMore,\n ...restProps\n } = props;\n const t = useI18n();\n const { announcePolite } = useLiveLog();\n\n const articleContentRefs = useRef<HTMLDivElement[]>([]);\n const activeTabContentRef = useRef<HTMLDivElement | null>(null);\n const tabsRef = useRef<HTMLButtonElement>(null);\n const activeElementRef = useRef<HTMLElement | null>(null);\n\n const tabs = useMemo(() => {\n const tabsArr: (Tab & {\n content?: ArticleSummaryProps[];\n id: ArticleListTabId;\n })[] = [];\n\n if (suggested)\n tabsArr.push({\n id: 'Suggested',\n name: t('suggested'),\n count: suggested?.count,\n content: suggested.articles ?? []\n });\n\n if (search)\n tabsArr.push({\n id: 'Search',\n name: t('search'),\n count: search?.count,\n content: search?.articles ?? []\n });\n\n if (followed)\n tabsArr.push({\n id: 'Followed',\n name: t('followed'),\n count: followed?.count,\n content: followed?.articles ?? []\n });\n\n if (buddy)\n tabsArr.push({\n id: 'Buddy',\n name: t('buddy')\n });\n\n return tabsArr;\n }, [suggested, followed, search, buddy]);\n\n const listUlRef: { [id: string]: RefObject<HTMLElement> } = tabs.reduce((acc, tab) => {\n return { ...acc, [tab.id]: createRef() };\n }, {});\n\n useEffect(() => {\n if (tabsRef.current && getFocusables(tabsRef)?.length > 0)\n activeElementRef.current = getFocusables(tabsRef)[0];\n else {\n activeTabContentRef.current =\n articleContentRefs.current[tabs.findIndex(({ id }) => id === activeTab)];\n if (activeTabContentRef && getFocusables(activeTabContentRef)?.length > 0) {\n activeElementRef.current = getFocusables(activeTabContentRef)[0];\n }\n }\n }, []);\n\n useEffect(() => {\n if (!loading) {\n const currentTabContent = tabs.find(tab => tab.id === activeTab)?.content;\n announcePolite({\n type: 'status',\n message:\n currentTabContent && currentTabContent?.length > 0\n ? `${header?.title || t('article_list_label_a11y')} ${t('loaded')}`\n : t('no_items')\n });\n }\n }, [loading]);\n\n const getItemLength = (tabName: string): number => {\n const currentTab = tabs.find(item => item.id === tabName);\n if (!currentTab || !currentTab.content) {\n return 0;\n }\n return currentTab.content.length - 1;\n };\n\n useItemIntersection(\n listUlRef[activeTab],\n getItemLength(activeTab),\n () => {\n if (!loadingMore) onLoadMore?.();\n },\n ':scope > li[role=\"article\"]'\n );\n\n const articleContent = ({\n content,\n tabId,\n headerTitle\n }: {\n count?: Tab['count'];\n content: ArticleSummaryProps[];\n headerTitle?: ArticleListHeaderProps['title'];\n tabId: ArticleListTabId;\n }) => {\n return (\n <>\n {activeTab === t('search') && search && <ArticleListFilter {...search} />}\n {activeTab === t('followed') && followed && <ArticleListFilter {...followed} />}\n {loading && (\n <Progress\n visible={!!loading}\n placement='block'\n message={t('loading')}\n liveConfig={{ contextualLabel: headerTitle ?? t('article_list_label_a11y') }}\n />\n )}\n {!loading &&\n (content.length > 0 ? (\n <Flex\n container={{ direction: 'column', gap: 0.5, pad: [1.5, 2] }}\n as={StyledSummaryList}\n role='feed'\n ref={listUlRef[tabId]}\n >\n {content.map(summaryItem => (\n <ArticleSummary\n {...summaryItem}\n key={summaryItem.articleId}\n onQuickFilterClick={onQuickFilterClick}\n />\n ))}\n {loadingMore && <Progress placement='block' />}\n </Flex>\n ) : (\n <EmptyState />\n ))}\n </>\n );\n };\n\n return (\n <Flex\n {...restProps}\n container={{\n direction: 'column',\n pad: [0.5, undefined]\n }}\n as={StyledArticleList}\n aria-label={t('article_list_label_a11y')}\n ref={ref}\n aria-busy={loading ? true : undefined}\n >\n {header && (\n <ArticleListHeader icon={header.icon} title={header.title} actions={header.actions} />\n )}\n\n {tabs.length === 1 && (\n <>\n {tabs[0].id === 'Buddy' && buddy ? (\n <ArticleBuddy {...buddy} />\n ) : (\n articleContent({\n content: tabs[0]?.content || [],\n tabId: tabs[0].id,\n headerTitle: header?.title\n })\n )}\n </>\n )}\n\n {/* When multiple tabs present. */}\n\n {tabs.length > 1 && (\n <>\n <Tabs\n ref={tabsRef}\n tabs={tabs}\n onTabClick={(name, e) => {\n if (document.activeElement instanceof HTMLElement) {\n activeElementRef.current = document.activeElement;\n onTabClick?.(name, e);\n }\n }}\n currentTabId={activeTab}\n />\n {tabs.map(({ id, content }) => {\n return (\n <TabPanel\n key={id}\n tabId={id}\n currentTabId={activeTab}\n as={activeTab === id ? StyledArticleTabPanel : undefined}\n >\n {activeTab === t('buddy') ? (\n <ArticleBuddy\n searchInput={buddy?.searchInput ?? {}}\n title={buddy?.title ?? ''}\n actions={buddy?.actions ?? []}\n content={buddy?.content}\n disclaimer={buddy?.disclaimer}\n references={buddy?.references}\n loading={buddy?.loading}\n />\n ) : (\n <>\n {activeTab === id &&\n content &&\n articleContent({ content, tabId: id, headerTitle: header?.title })}\n </>\n )}\n </TabPanel>\n );\n })}\n </>\n )}\n </Flex>\n );\n }\n);\n\nexport default ArticleList;\n"]}
@@ -0,0 +1,128 @@
1
+ import type { MouseEvent, MouseEventHandler, ReactNode } from 'react';
2
+ import type { Action, BaseProps, ComboBoxProps, OmitStrict, RequireAtLeastOne, SearchInputProps } from '@pega/cosmos-react-core';
3
+ import type { ArticleRatingProps } from '../Article/ArticleRating';
4
+ import type { ArticleMetaProps } from '../Article/ArticleMeta';
5
+ export interface ArticleSummaryProps extends BaseProps {
6
+ /** Unique id of article */
7
+ articleId: string;
8
+ /** URL or DOM id to navigate to. This will render the nav item as a link. */
9
+ href?: string;
10
+ /** Article title */
11
+ title: string;
12
+ /** Article content */
13
+ abstract: string;
14
+ /** Callback fired when article title is clicked */
15
+ onTitleClick?: (id?: string, event?: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;
16
+ /** Primary actions which needs to be displayed with an icon */
17
+ primaryActions?: Action[];
18
+ /** A list of elements to be rendered within a MetaList. */
19
+ meta?: ArticleMetaProps;
20
+ /** Rating - likes and dislikes of the article. */
21
+ feedback?: OmitStrict<ArticleRatingProps, 'onReaction'> & {
22
+ onReaction: (articleId: ArticleSummaryProps['articleId'], reaction: ArticleRatingProps['reaction']) => void;
23
+ };
24
+ /** Quick filters to filter articles. */
25
+ quickFilters?: QuickFilter[];
26
+ /** callback fired when quick filter is clicked */
27
+ onQuickFilterClick?: ArticleListProps['onQuickFilterClick'];
28
+ }
29
+ export interface BaseReferenceProps {
30
+ id: string;
31
+ name: string;
32
+ confidence: number;
33
+ }
34
+ export type ExternalLinkProps = BaseReferenceProps & {
35
+ type: 'link';
36
+ href: string;
37
+ };
38
+ export type InternalArticleProps = BaseReferenceProps & {
39
+ type: 'object';
40
+ onClick: (id: BaseReferenceProps['id'], e: MouseEvent<HTMLButtonElement>) => void;
41
+ };
42
+ type Reference = ExternalLinkProps | InternalArticleProps;
43
+ export interface ArticleBuddyProps {
44
+ /** search input params */
45
+ searchInput: OmitStrict<SearchInputProps, 'searchResults' | 'recentSearches' | 'advancedSearchLink' | 'resultsPopover'>;
46
+ /** title of the search content */
47
+ title?: string;
48
+ /** Main body of search content */
49
+ content?: ReactNode;
50
+ /** Action for share and copy */
51
+ actions?: Action[];
52
+ /** References with confidence level */
53
+ references?: Reference[];
54
+ disclaimer?: string;
55
+ /**
56
+ * Optionally renders an indeterminate progress indicator while result are being fetched.
57
+ * @default false
58
+ */
59
+ loading?: boolean;
60
+ }
61
+ export declare const isExternalLink: (reference: Reference) => reference is ExternalLinkProps;
62
+ export declare const isInternalArticle: (reference: Reference) => reference is InternalArticleProps;
63
+ export interface Articles {
64
+ /** List of articles */
65
+ articles: ArticleSummaryProps[];
66
+ /** count of articles */
67
+ count?: number;
68
+ /** Props related to the Search Input. */
69
+ searchInput: OmitStrict<SearchInputProps, 'placeholder' | 'onSearchSubmit' | 'searchResults' | 'recentSearches' | 'advancedSearchLink' | 'resultsPopover'>;
70
+ /** Props related to the Category Input. */
71
+ category?: OmitStrict<ComboBoxProps, 'id' | 'labelHidden' | 'required' | 'disabled' | 'readOnly' | 'status' | 'info' | 'actions' | 'additionalInfo'>;
72
+ /** Props related to the SortBy Input. */
73
+ sortBy?: OmitStrict<ComboBoxProps, 'id' | 'labelHidden' | 'required' | 'disabled' | 'readOnly' | 'status' | 'info' | 'mode' | 'actions' | 'additionalInfo' | 'onChange' | 'value'>;
74
+ /** Callback fired when clear button is clicked */
75
+ onClearClick?: MouseEventHandler<HTMLButtonElement>;
76
+ /** Quick filters to filter articles */
77
+ quickFilters?: QuickFilter[];
78
+ /** Callback fired when applied quick filter is removed */
79
+ handleQuickFilterRemove?: (id: string) => void;
80
+ /** Prop to enable show / hide results */
81
+ showResults?: boolean;
82
+ }
83
+ export interface ArticleListHeaderProps {
84
+ /** Title of article list */
85
+ title: string;
86
+ /** Article list header icon */
87
+ icon?: string;
88
+ /** Actions which needs to be displayed with an icon */
89
+ actions?: Action[];
90
+ }
91
+ export type ArticleListProps = RequireAtLeastOne<{
92
+ /** Props related to article list header */
93
+ header?: ArticleListHeaderProps;
94
+ /** Data of suggested articles */
95
+ suggested?: Pick<Articles, 'articles' | 'count'>;
96
+ /** Data of followed articles */
97
+ followed?: Articles;
98
+ /** Data of search articles */
99
+ search?: Articles;
100
+ buddy?: ArticleBuddyProps;
101
+ /** current active tab whose list has to be rendered */
102
+ activeTab: string;
103
+ /** Callback fired when tab is clicked */
104
+ onTabClick?: (name: string, event?: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;
105
+ /**
106
+ * Optionally renders an indeterminate progress indicator while articles are being fetched.
107
+ * @default false
108
+ */
109
+ loading?: boolean;
110
+ /**
111
+ * Optionally renders an indeterminate progress indicator while progressively fetching articles
112
+ * @default false
113
+ */
114
+ loadingMore?: boolean;
115
+ /** callback fired when quick filter is clicked */
116
+ onQuickFilterClick?: (quickFilterParam: QuickFilter, event: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;
117
+ /** Callback to fetch more rows */
118
+ onLoadMore?: () => void;
119
+ }, 'suggested' | 'followed' | 'search' | 'buddy'>;
120
+ export interface QuickFilter {
121
+ /** Unique id of quick Filter */
122
+ id: string;
123
+ /** Name of quick Filter */
124
+ name: string;
125
+ }
126
+ export type ArticleListTabId = 'Suggested' | 'Followed' | 'Search' | 'Buddy';
127
+ export {};
128
+ //# sourceMappingURL=ArticleList.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArticleList.types.d.ts","sourceRoot":"","sources":["../../../src/components/ArticleList/ArticleList.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export const isExternalLink = (reference) => {
2
+ return reference.type === 'link';
3
+ };
4
+ export const isInternalArticle = (reference) => {
5
+ return reference.type === 'object';
6
+ };
7
+ //# sourceMappingURL=ArticleList.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArticleList.types.js","sourceRoot":"","sources":["../../../src/components/ArticleList/ArticleList.types.ts"],"names":[],"mappings":"AAgFA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAoB,EAAkC,EAAE;IACrF,OAAO,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAoB,EAAqC,EAAE;IAC3F,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC;AACrC,CAAC,CAAC","sourcesContent":["import type { MouseEvent, MouseEventHandler, ReactNode } from 'react';\n\nimport type {\n Action,\n BaseProps,\n ComboBoxProps,\n OmitStrict,\n RequireAtLeastOne,\n SearchInputProps\n} from '@pega/cosmos-react-core';\n\nimport type { ArticleRatingProps } from '../Article/ArticleRating';\nimport type { ArticleMetaProps } from '../Article/ArticleMeta';\n\nexport interface ArticleSummaryProps extends BaseProps {\n /** Unique id of article */\n articleId: string;\n /** URL or DOM id to navigate to. This will render the nav item as a link. */\n href?: string;\n /** Article title */\n title: string;\n /** Article content */\n abstract: string;\n /** Callback fired when article title is clicked */\n onTitleClick?: (id?: string, event?: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;\n /** Primary actions which needs to be displayed with an icon */\n primaryActions?: Action[];\n /** A list of elements to be rendered within a MetaList. */\n meta?: ArticleMetaProps;\n /** Rating - likes and dislikes of the article. */\n feedback?: OmitStrict<ArticleRatingProps, 'onReaction'> & {\n onReaction: (\n articleId: ArticleSummaryProps['articleId'],\n reaction: ArticleRatingProps['reaction']\n ) => void;\n };\n /** Quick filters to filter articles. */\n quickFilters?: QuickFilter[];\n /** callback fired when quick filter is clicked */\n onQuickFilterClick?: ArticleListProps['onQuickFilterClick'];\n}\n\nexport interface BaseReferenceProps {\n id: string;\n name: string;\n confidence: number;\n}\n\nexport type ExternalLinkProps = BaseReferenceProps & { type: 'link'; href: string };\n\nexport type InternalArticleProps = BaseReferenceProps & {\n type: 'object';\n onClick: (id: BaseReferenceProps['id'], e: MouseEvent<HTMLButtonElement>) => void;\n};\n\ntype Reference = ExternalLinkProps | InternalArticleProps;\n\nexport interface ArticleBuddyProps {\n /** search input params */\n searchInput: OmitStrict<\n SearchInputProps,\n 'searchResults' | 'recentSearches' | 'advancedSearchLink' | 'resultsPopover'\n >;\n /** title of the search content */\n title?: string;\n /** Main body of search content */\n content?: ReactNode;\n /** Action for share and copy */\n actions?: Action[];\n /** References with confidence level */\n references?: Reference[];\n\n disclaimer?: string;\n /**\n * Optionally renders an indeterminate progress indicator while result are being fetched.\n * @default false\n */\n loading?: boolean;\n}\n\nexport const isExternalLink = (reference: Reference): reference is ExternalLinkProps => {\n return reference.type === 'link';\n};\n\nexport const isInternalArticle = (reference: Reference): reference is InternalArticleProps => {\n return reference.type === 'object';\n};\n\nexport interface Articles {\n /** List of articles */\n articles: ArticleSummaryProps[];\n /** count of articles */\n count?: number;\n /** Props related to the Search Input. */\n searchInput: OmitStrict<\n SearchInputProps,\n | 'placeholder'\n | 'onSearchSubmit'\n | 'searchResults'\n | 'recentSearches'\n | 'advancedSearchLink'\n | 'resultsPopover'\n >;\n /** Props related to the Category Input. */\n category?: OmitStrict<\n ComboBoxProps,\n | 'id'\n | 'labelHidden'\n | 'required'\n | 'disabled'\n | 'readOnly'\n | 'status'\n | 'info'\n | 'actions'\n | 'additionalInfo'\n >;\n /** Props related to the SortBy Input. */\n sortBy?: OmitStrict<\n ComboBoxProps,\n | 'id'\n | 'labelHidden'\n | 'required'\n | 'disabled'\n | 'readOnly'\n | 'status'\n | 'info'\n | 'mode'\n | 'actions'\n | 'additionalInfo'\n | 'onChange'\n | 'value'\n >;\n /** Callback fired when clear button is clicked */\n onClearClick?: MouseEventHandler<HTMLButtonElement>;\n /** Quick filters to filter articles */\n quickFilters?: QuickFilter[];\n /** Callback fired when applied quick filter is removed */\n handleQuickFilterRemove?: (id: string) => void;\n /** Prop to enable show / hide results */\n showResults?: boolean;\n}\n\nexport interface ArticleListHeaderProps {\n /** Title of article list */\n title: string;\n /** Article list header icon */\n icon?: string;\n /** Actions which needs to be displayed with an icon */\n actions?: Action[];\n}\n\nexport type ArticleListProps = RequireAtLeastOne<\n {\n /** Props related to article list header */\n header?: ArticleListHeaderProps;\n /** Data of suggested articles */\n suggested?: Pick<Articles, 'articles' | 'count'>;\n /** Data of followed articles */\n followed?: Articles;\n /** Data of search articles */\n search?: Articles;\n buddy?: ArticleBuddyProps;\n /** current active tab whose list has to be rendered */\n activeTab: string;\n /** Callback fired when tab is clicked */\n onTabClick?: (name: string, event?: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;\n /**\n * Optionally renders an indeterminate progress indicator while articles are being fetched.\n * @default false\n */\n loading?: boolean;\n /**\n * Optionally renders an indeterminate progress indicator while progressively fetching articles\n * @default false\n */\n loadingMore?: boolean;\n /** callback fired when quick filter is clicked */\n onQuickFilterClick?: (\n quickFilterParam: QuickFilter,\n event: MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => void;\n /** Callback to fetch more rows */\n onLoadMore?: () => void;\n },\n 'suggested' | 'followed' | 'search' | 'buddy'\n>;\n\nexport interface QuickFilter {\n /** Unique id of quick Filter */\n id: string;\n /** Name of quick Filter */\n name: string;\n}\n\nexport type ArticleListTabId = 'Suggested' | 'Followed' | 'Search' | 'Buddy';\n"]}
@@ -0,0 +1,6 @@
1
+ import type { FunctionComponent } from 'react';
2
+ import type { ForwardProps } from '@pega/cosmos-react-core';
3
+ import type { ArticleListProps } from './ArticleList.types';
4
+ declare const ArticleListFilter: FunctionComponent<ArticleListProps['search'] & ForwardProps>;
5
+ export default ArticleListFilter;
6
+ //# sourceMappingURL=ArticleListFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArticleListFilter.d.ts","sourceRoot":"","sources":["../../../src/components/ArticleList/ArticleListFilter.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAe/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA8C5D,QAAA,MAAM,iBAAiB,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,YAAY,CAkEnF,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from 'react';
3
+ import styled, { css } from 'styled-components';
4
+ import { Button, Flex, SearchInput, useI18n, defaultThemeProp, ComboBox, StyledSearchInput, Text, Selectable, useLiveLog } from '@pega/cosmos-react-core';
5
+ import { StyledFormContent } from '@pega/cosmos-react-core/lib/components/MultiStepForm/MultiStepForm';
6
+ const StyledClearButton = styled(Button)(({ theme }) => {
7
+ return css `
8
+ margin-block-start: calc(4.5 * ${theme.base.spacing});
9
+ `;
10
+ });
11
+ StyledClearButton.defaultProps = defaultThemeProp;
12
+ const StyledFilterContainer = styled(Flex) `
13
+ flex-grow: 1;
14
+ `;
15
+ const StyledSelectable = styled(Selectable)(({ theme }) => {
16
+ return css `
17
+ line-height: calc(2 * ${theme.base.spacing});
18
+ margin: calc(0.25 * ${theme.base.spacing});
19
+ `;
20
+ });
21
+ StyledSelectable.defaultProps = defaultThemeProp;
22
+ const StyledSearchFilters = styled.div(({ theme }) => {
23
+ return css `
24
+ width: 100%;
25
+ padding-block-start: ${theme.base.spacing};
26
+ padding-inline: calc(2 * ${theme.base.spacing});
27
+
28
+ > div:last-child {
29
+ margin: 0;
30
+ }
31
+
32
+ ${StyledFormContent} {
33
+ gap: ${theme.base.spacing};
34
+ }
35
+
36
+ ${StyledFilterContainer} > div {
37
+ margin-top: calc(1.5 * ${theme.base.spacing});
38
+ width: 100%;
39
+ }
40
+ ${StyledSearchInput} {
41
+ flex-grow: 1;
42
+ }
43
+ `;
44
+ });
45
+ StyledSearchFilters.defaultProps = defaultThemeProp;
46
+ const ArticleListFilter = (props) => {
47
+ const { searchInput, category, sortBy, onClearClick, articles, quickFilters = [], showResults = false, handleQuickFilterRemove, ...restProps } = props || {};
48
+ const t = useI18n();
49
+ const searchResults = t('results_count', [articles?.length ?? 0]);
50
+ const { announcePolite } = useLiveLog();
51
+ useEffect(() => {
52
+ if (showResults) {
53
+ announcePolite({ message: searchResults });
54
+ }
55
+ }, [articles, showResults]);
56
+ const quickFiltersRef = useRef([]);
57
+ useEffect(() => {
58
+ if (quickFilters.length > 0 && quickFiltersRef.current.length > 0) {
59
+ quickFiltersRef.current[quickFilters.length - 1]?.focus();
60
+ }
61
+ }, [articles]);
62
+ return (_jsxs(StyledSearchFilters, { ...restProps, children: [_jsx(Flex, { container: { alignItems: 'center', gap: 1, pad: [0.5, undefined] }, children: _jsx(SearchInput, { ...searchInput }) }), quickFilters.map(({ id, name }, i) => (_jsx(StyledSelectable, { id: id, ref: (el) => {
63
+ quickFiltersRef.current[i] = el;
64
+ }, onRemove: handleQuickFilterRemove ? () => handleQuickFilterRemove?.(id) : undefined, onClick: handleQuickFilterRemove ? () => handleQuickFilterRemove?.(id) : undefined, children: name }))), _jsxs(StyledFilterContainer, { container: { gap: 1, alignItems: 'start' }, children: [category && _jsx(ComboBox, { ...category }), sortBy && _jsx(ComboBox, { ...sortBy }), onClearClick && (_jsx(StyledClearButton, { variant: 'link', label: t('clear'), "aria-label": t('clear_filters'), onClick: onClearClick, children: t('clear') }))] }), showResults && _jsx(Text, { variant: 'secondary', children: searchResults })] }));
65
+ };
66
+ export default ArticleListFilter;
67
+ //# sourceMappingURL=ArticleListFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArticleListFilter.js","sourceRoot":"","sources":["../../../src/components/ArticleList/ArticleListFilter.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useRef } from 'react';\nimport type { FunctionComponent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Button,\n Flex,\n SearchInput,\n useI18n,\n defaultThemeProp,\n ComboBox,\n StyledSearchInput,\n Text,\n Selectable,\n useLiveLog\n} from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\nimport { StyledFormContent } from '@pega/cosmos-react-core/lib/components/MultiStepForm/MultiStepForm';\n\nimport type { ArticleListProps } from './ArticleList.types';\n\nconst StyledClearButton = styled(Button)(({ theme }) => {\n return css`\n margin-block-start: calc(4.5 * ${theme.base.spacing});\n `;\n});\nStyledClearButton.defaultProps = defaultThemeProp;\n\nconst StyledFilterContainer = styled(Flex)`\n flex-grow: 1;\n`;\n\nconst StyledSelectable = styled(Selectable)(({ theme }) => {\n return css`\n line-height: calc(2 * ${theme.base.spacing});\n margin: calc(0.25 * ${theme.base.spacing});\n `;\n});\nStyledSelectable.defaultProps = defaultThemeProp;\n\nconst StyledSearchFilters = styled.div(({ theme }) => {\n return css`\n width: 100%;\n padding-block-start: ${theme.base.spacing};\n padding-inline: calc(2 * ${theme.base.spacing});\n\n > div:last-child {\n margin: 0;\n }\n\n ${StyledFormContent} {\n gap: ${theme.base.spacing};\n }\n\n ${StyledFilterContainer} > div {\n margin-top: calc(1.5 * ${theme.base.spacing});\n width: 100%;\n }\n ${StyledSearchInput} {\n flex-grow: 1;\n }\n `;\n});\nStyledSearchFilters.defaultProps = defaultThemeProp;\n\nconst ArticleListFilter: FunctionComponent<ArticleListProps['search'] & ForwardProps> = (\n props: ArticleListProps['search']\n) => {\n const {\n searchInput,\n category,\n sortBy,\n onClearClick,\n articles,\n quickFilters = [],\n showResults = false,\n handleQuickFilterRemove,\n ...restProps\n } = props || {};\n const t = useI18n();\n const searchResults = t('results_count', [articles?.length ?? 0]);\n const { announcePolite } = useLiveLog();\n\n useEffect(() => {\n if (showResults) {\n announcePolite({ message: searchResults });\n }\n }, [articles, showResults]);\n\n const quickFiltersRef = useRef<HTMLButtonElement[]>([]);\n\n useEffect(() => {\n if (quickFilters.length > 0 && quickFiltersRef.current.length > 0) {\n quickFiltersRef.current[quickFilters.length - 1]?.focus();\n }\n }, [articles]);\n\n return (\n <StyledSearchFilters {...restProps}>\n <Flex container={{ alignItems: 'center', gap: 1, pad: [0.5, undefined] }}>\n <SearchInput {...searchInput} />\n </Flex>\n {quickFilters.map(({ id, name }, i) => (\n <StyledSelectable\n id={id}\n ref={(el: HTMLButtonElement) => {\n quickFiltersRef.current[i] = el;\n }}\n onRemove={handleQuickFilterRemove ? () => handleQuickFilterRemove?.(id) : undefined}\n onClick={handleQuickFilterRemove ? () => handleQuickFilterRemove?.(id) : undefined}\n >\n {name}\n </StyledSelectable>\n ))}\n <StyledFilterContainer container={{ gap: 1, alignItems: 'start' }}>\n {category && <ComboBox {...category} />}\n {sortBy && <ComboBox {...sortBy} />}\n {onClearClick && (\n <StyledClearButton\n variant='link'\n label={t('clear')}\n aria-label={t('clear_filters')}\n onClick={onClearClick}\n >\n {t('clear')}\n </StyledClearButton>\n )}\n </StyledFilterContainer>\n {showResults && <Text variant='secondary'>{searchResults}</Text>}\n </StyledSearchFilters>\n );\n};\n\nexport default ArticleListFilter;\n"]}
@@ -0,0 +1,5 @@
1
+ import type { FunctionComponent } from 'react';
2
+ import type { ArticleListHeaderProps } from './ArticleList.types';
3
+ declare const ArticleListHeader: FunctionComponent<ArticleListHeaderProps>;
4
+ export default ArticleListHeader;
5
+ //# sourceMappingURL=ArticleListHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArticleListHeader.d.ts","sourceRoot":"","sources":["../../../src/components/ArticleList/ArticleListHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAK/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAuBlE,QAAA,MAAM,iBAAiB,EAAE,iBAAiB,CAAC,sBAAsB,CAQhE,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import styled, { css } from 'styled-components';
3
+ import { Flex, Icon, Actions, Text, defaultThemeProp } from '@pega/cosmos-react-core';
4
+ const StyledHeaderText = styled(Text) `
5
+ text-overflow: ellipsis;
6
+ white-space: nowrap;
7
+ overflow: hidden;
8
+ flex-grow: 1;
9
+ `;
10
+ const StyledIcon = styled(Icon)(({ theme: { base: { spacing } } }) => {
11
+ return css `
12
+ min-width: calc(3 * ${spacing});
13
+ `;
14
+ });
15
+ StyledIcon.defaultProps = defaultThemeProp;
16
+ const ArticleListHeader = ({ icon, title, actions }) => {
17
+ return (_jsxs(Flex, { container: { alignItems: 'center', gap: 1, pad: [1.5, 2] }, children: [icon && _jsx(StyledIcon, { name: icon }), _jsx(StyledHeaderText, { variant: 'h2', children: title }), actions && _jsx(Actions, { items: actions })] }));
18
+ };
19
+ export default ArticleListHeader;
20
+ //# sourceMappingURL=ArticleListHeader.js.map