@coveo/atomic 3.32.4-pre.2b440cbf84 → 3.32.4-pre.2fd8f6feda

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 (265) hide show
  1. package/dist/atomic/_atomic.esm.js +1 -1
  2. package/dist/atomic/components/analytics-config.js +1 -1
  3. package/dist/atomic/components/atomic-folded-result-list.js +1 -1
  4. package/dist/atomic/components/atomic-folded-result-list.js.map +1 -1
  5. package/dist/atomic/components/atomic-insight-folded-result-list.js +1 -1
  6. package/dist/atomic/components/atomic-insight-folded-result-list.js.map +1 -1
  7. package/dist/atomic/components/atomic-insight-interface.js +1 -1
  8. package/dist/atomic/components/atomic-insight-interface.js.map +1 -1
  9. package/dist/atomic/components/atomic-insight-result-list.js +1 -1
  10. package/dist/atomic/components/atomic-insight-result-list.js.map +1 -1
  11. package/dist/atomic/components/atomic-insight-user-actions-timeline2.js.map +1 -1
  12. package/dist/atomic/components/atomic-insight-user-actions-toggle.js +1 -1
  13. package/dist/atomic/components/atomic-insight-user-actions-toggle.js.map +1 -1
  14. package/dist/atomic/components/atomic-ipx-recs-list.js +1 -1
  15. package/dist/atomic/components/atomic-ipx-recs-list.js.map +1 -1
  16. package/dist/atomic/components/atomic-quickview-modal2.js +4 -4
  17. package/dist/atomic/components/atomic-quickview-modal2.js.map +1 -1
  18. package/dist/atomic/components/atomic-recs-list.js +1 -1
  19. package/dist/atomic/components/atomic-recs-list.js.map +1 -1
  20. package/dist/atomic/components/atomic-result-list.js +1 -1
  21. package/dist/atomic/components/atomic-result-list.js.map +1 -1
  22. package/dist/atomic/components/atomic-result-table-placeholder2.js +1 -1
  23. package/dist/atomic/components/atomic-result-table-placeholder2.js.map +1 -1
  24. package/dist/atomic/components/atomic-search-interface.js +3 -3
  25. package/dist/atomic/components/atomic-search-interface.js.map +1 -1
  26. package/dist/atomic/components/atomic-timeframe.js.map +1 -1
  27. package/dist/atomic/components/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.js +2 -2
  28. package/dist/atomic/components/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.tw.css.js +3 -2
  29. package/dist/atomic/components/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.js +2 -2
  30. package/dist/atomic/components/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.tw.css.js +3 -2
  31. package/dist/atomic/components/components/commerce/atomic-commerce-facet/atomic-commerce-facet.js +3 -3
  32. package/dist/atomic/components/components/commerce/atomic-commerce-facet-number-input/atomic-commerce-facet-number-input.js +2 -2
  33. package/dist/atomic/components/components/commerce/atomic-commerce-facet-number-input/atomic-commerce-facet-number-input.tw.css.js +3 -2
  34. package/dist/atomic/components/components/commerce/atomic-commerce-interface/atomic-commerce-interface.js +15 -0
  35. package/dist/atomic/components/components/commerce/atomic-commerce-layout/atomic-commerce-layout.js +2 -2
  36. package/dist/atomic/components/components/commerce/atomic-commerce-layout/atomic-commerce-layout.tw.css.js +3 -2
  37. package/dist/atomic/components/components/commerce/atomic-commerce-numeric-facet/atomic-commerce-numeric-facet.js +3 -3
  38. package/dist/atomic/components/components/commerce/atomic-commerce-product-list/atomic-commerce-product-list.js +2 -2
  39. package/dist/atomic/components/components/commerce/atomic-commerce-product-list/atomic-commerce-product-list.tw.css.js +3 -2
  40. package/dist/atomic/components/components/commerce/atomic-commerce-recommendation-list/atomic-commerce-recommendation-list.js +5 -8
  41. package/dist/atomic/components/components/commerce/atomic-commerce-recommendation-list/atomic-commerce-recommendation-list.tw.css.js +3 -2
  42. package/dist/atomic/components/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +3 -3
  43. package/dist/atomic/components/components/commerce/atomic-commerce-timeframe-facet/atomic-commerce-timeframe-facet.js +3 -3
  44. package/dist/atomic/components/components/commerce/atomic-product/atomic-product.js +2 -2
  45. package/dist/atomic/components/components/commerce/atomic-product/atomic-product.tw.css.js +3 -2
  46. package/dist/atomic/components/components/commerce/atomic-product-link/atomic-product-link.js +3 -17
  47. package/dist/atomic/components/components/commerce/atomic-product-link/atomic-product-link.tw.css.js +3 -2
  48. package/dist/atomic/components/components/commerce/atomic-product-rating/atomic-product-rating.js +5 -6
  49. package/dist/atomic/components/components/commerce/atomic-product-template/atomic-product-template.js +1 -1
  50. package/dist/atomic/components/components/commerce/atomic-product-text/atomic-product-text.js +20 -2
  51. package/dist/atomic/components/components/common/atomic-rating/atomic-rating.tw.css.js +2 -1
  52. package/dist/atomic/components/decorators/bind-state.js +6 -6
  53. package/dist/atomic/components/global/environment.js +1 -1
  54. package/dist/atomic/components/mixins/slots-for-no-shadow-dom-mixin.js +43 -99
  55. package/dist/atomic/components/slot-utils.js +11 -0
  56. package/dist/atomic/components/slot-utils.js.map +1 -1
  57. package/dist/atomic/components/utils/coveo.tw.css.js +1 -1
  58. package/dist/atomic/components/utils/slot-utils.js +11 -0
  59. package/dist/atomic/lang/cs.json +1 -1
  60. package/dist/atomic/lang/da.json +1 -1
  61. package/dist/atomic/lang/de.json +1 -1
  62. package/dist/atomic/lang/dev.json +1 -1
  63. package/dist/atomic/lang/el.json +1 -1
  64. package/dist/atomic/lang/en.json +1 -1
  65. package/dist/atomic/lang/es.json +1 -1
  66. package/dist/atomic/lang/fi.json +1 -1
  67. package/dist/atomic/lang/fr.json +1 -1
  68. package/dist/atomic/lang/hu.json +1 -1
  69. package/dist/atomic/lang/id.json +1 -1
  70. package/dist/atomic/lang/it.json +1 -1
  71. package/dist/atomic/lang/ja.json +1 -1
  72. package/dist/atomic/lang/ko.json +1 -1
  73. package/dist/atomic/lang/nl.json +1 -1
  74. package/dist/atomic/lang/no.json +1 -1
  75. package/dist/atomic/lang/pl.json +1 -1
  76. package/dist/atomic/lang/pt-BR.json +1 -1
  77. package/dist/atomic/lang/pt.json +1 -1
  78. package/dist/atomic/lang/ru.json +1 -1
  79. package/dist/atomic/lang/sv.json +1 -1
  80. package/dist/atomic/lang/th.json +1 -1
  81. package/dist/atomic/lang/tr.json +1 -1
  82. package/dist/atomic/lang/zh-CN.json +1 -1
  83. package/dist/atomic/lang/zh-TW.json +1 -1
  84. package/dist/atomic/lang/zh.json +1 -1
  85. package/dist/atomic/p-005dcc88.entry.js +2 -0
  86. package/dist/atomic/{p-08d7290a.entry.js.map → p-005dcc88.entry.js.map} +1 -1
  87. package/dist/atomic/{p-bbdbf7c5.entry.js → p-0c076058.entry.js} +2 -2
  88. package/dist/atomic/p-1891bbcf.js +2 -0
  89. package/dist/atomic/p-1891bbcf.js.map +1 -0
  90. package/dist/atomic/{p-6d8cf61b.js → p-251b4fc3.js} +2 -2
  91. package/dist/atomic/{p-c344bb56.entry.js → p-2b99353d.entry.js} +2 -2
  92. package/dist/atomic/p-2b99353d.entry.js.map +1 -0
  93. package/dist/atomic/{p-64963829.entry.js → p-3bda3e96.entry.js} +2 -2
  94. package/dist/atomic/{p-64963829.entry.js.map → p-3bda3e96.entry.js.map} +1 -1
  95. package/dist/atomic/{p-b79a7896.entry.js → p-421850f9.entry.js} +2 -2
  96. package/dist/atomic/{p-57d5db65.entry.js → p-4cda93be.entry.js} +2 -2
  97. package/dist/atomic/p-58fe83ae.entry.js +2 -0
  98. package/dist/atomic/{p-1899894c.entry.js.map → p-58fe83ae.entry.js.map} +1 -1
  99. package/dist/atomic/{p-486ad8f3.js → p-5fca1435.js} +2 -2
  100. package/dist/atomic/p-6083c9be.entry.js +2 -0
  101. package/dist/atomic/p-6083c9be.entry.js.map +1 -0
  102. package/dist/atomic/p-62dbc255.entry.js +2 -0
  103. package/dist/atomic/{p-a13ee8b3.entry.js.map → p-62dbc255.entry.js.map} +1 -1
  104. package/dist/atomic/p-8d0b9f5a.entry.js +2 -0
  105. package/dist/atomic/{p-0dc84319.entry.js.map → p-8d0b9f5a.entry.js.map} +1 -1
  106. package/dist/atomic/{p-8ef7e37a.entry.js → p-91d64c67.entry.js} +2 -2
  107. package/dist/atomic/{p-8ef7e37a.entry.js.map → p-91d64c67.entry.js.map} +1 -1
  108. package/dist/atomic/p-a3aaf456.entry.js.map +1 -1
  109. package/dist/atomic/{p-efca37de.entry.js → p-a6be5ee3.entry.js} +2 -2
  110. package/dist/atomic/{p-4a6faf22.entry.js → p-ab55ee64.entry.js} +2 -2
  111. package/dist/atomic/{p-142c4b9f.entry.js → p-aea45a7a.entry.js} +2 -2
  112. package/dist/atomic/{p-142c4b9f.entry.js.map → p-aea45a7a.entry.js.map} +1 -1
  113. package/dist/atomic/{p-7464f00a.entry.js → p-b24d5a13.entry.js} +2 -2
  114. package/dist/atomic/p-b24d5a13.entry.js.map +1 -0
  115. package/dist/atomic/{p-8ff9d07e.js → p-b309aadd.js} +2 -2
  116. package/dist/atomic/p-ba52e9f3.entry.js.map +1 -1
  117. package/dist/atomic/{p-11b9e476.entry.js → p-d3e1a9aa.entry.js} +2 -2
  118. package/dist/atomic/{p-6a33b860.entry.js → p-dc89e560.entry.js} +2 -2
  119. package/dist/atomic/{p-506d47e2.entry.js → p-e43fe680.entry.js} +2 -2
  120. package/dist/atomic/{p-9c3859fb.entry.js → p-f37d666a.entry.js} +2 -2
  121. package/dist/atomic/p-f9289f2f.entry.js +2 -0
  122. package/dist/atomic/{p-3ace419e.entry.js.map → p-f9289f2f.entry.js.map} +1 -1
  123. package/dist/atomic/{p-a2e1fa2c.entry.js → p-ff653000.entry.js} +2 -2
  124. package/dist/cjs/{analytics-config-04d6e134.js → analytics-config-63839953.js} +2 -2
  125. package/dist/cjs/{analytics-config-04d6e134.js.map → analytics-config-63839953.js.map} +1 -1
  126. package/dist/cjs/atomic-folded-result-list.cjs.entry.js +1 -1
  127. package/dist/cjs/atomic-folded-result-list.cjs.entry.js.map +1 -1
  128. package/dist/cjs/atomic-generated-answer.cjs.entry.js +2 -2
  129. package/dist/cjs/atomic-insight-folded-result-list.cjs.entry.js +1 -1
  130. package/dist/cjs/atomic-insight-folded-result-list.cjs.entry.js.map +1 -1
  131. package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js +2 -2
  132. package/dist/cjs/atomic-insight-interface.cjs.entry.js +2 -2
  133. package/dist/cjs/atomic-insight-interface.cjs.entry.js.map +1 -1
  134. package/dist/cjs/atomic-insight-result-list.cjs.entry.js +1 -1
  135. package/dist/cjs/atomic-insight-result-list.cjs.entry.js.map +1 -1
  136. package/dist/cjs/atomic-insight-smart-snippet-suggestions.cjs.entry.js +2 -2
  137. package/dist/cjs/atomic-insight-smart-snippet.cjs.entry.js +2 -2
  138. package/dist/cjs/atomic-insight-user-actions-session_2.cjs.entry.js.map +1 -1
  139. package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js +1 -1
  140. package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js.map +1 -1
  141. package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js +1 -1
  142. package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js.map +1 -1
  143. package/dist/cjs/atomic-ipx-result-link.cjs.entry.js +2 -2
  144. package/dist/cjs/atomic-quickview-modal.cjs.entry.js +4 -4
  145. package/dist/cjs/atomic-quickview-modal.cjs.entry.js.map +1 -1
  146. package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
  147. package/dist/cjs/atomic-recs-list.cjs.entry.js +1 -1
  148. package/dist/cjs/atomic-recs-list.cjs.entry.js.map +1 -1
  149. package/dist/cjs/atomic-result-link.cjs.entry.js +2 -2
  150. package/dist/cjs/atomic-result-list.cjs.entry.js +1 -1
  151. package/dist/cjs/atomic-result-list.cjs.entry.js.map +1 -1
  152. package/dist/cjs/atomic-result-placeholder_8.cjs.entry.js +1 -1
  153. package/dist/cjs/atomic-result-placeholder_8.cjs.entry.js.map +1 -1
  154. package/dist/cjs/atomic-result-printable-uri.cjs.entry.js +2 -2
  155. package/dist/cjs/atomic-search-interface.cjs.entry.js +4 -4
  156. package/dist/cjs/atomic-search-interface.cjs.entry.js.map +1 -1
  157. package/dist/cjs/atomic-smart-snippet-suggestions.cjs.entry.js +2 -2
  158. package/dist/cjs/atomic-smart-snippet.cjs.entry.js +2 -2
  159. package/dist/cjs/atomic-timeframe.cjs.entry.js.map +1 -1
  160. package/dist/cjs/{attributes-slot-5799cb5b.js → attributes-slot-4e7d7a75.js} +2 -2
  161. package/dist/cjs/{attributes-slot-5799cb5b.js.map → attributes-slot-4e7d7a75.js.map} +1 -1
  162. package/dist/cjs/{generated-answer-common-e5cd257b.js → generated-answer-common-4cd4b7c6.js} +2 -2
  163. package/dist/cjs/{generated-answer-common-e5cd257b.js.map → generated-answer-common-4cd4b7c6.js.map} +1 -1
  164. package/dist/cjs/{slot-utils-948feedc.js → slot-utils-a30cb814.js} +12 -1
  165. package/dist/cjs/slot-utils-a30cb814.js.map +1 -0
  166. package/dist/cjs/version.cjs.js +2 -2
  167. package/dist/esm/{analytics-config-2ea3b217.js → analytics-config-a16517f6.js} +2 -2
  168. package/dist/esm/{analytics-config-2ea3b217.js.map → analytics-config-a16517f6.js.map} +1 -1
  169. package/dist/esm/atomic-folded-result-list.entry.js +1 -1
  170. package/dist/esm/atomic-folded-result-list.entry.js.map +1 -1
  171. package/dist/esm/atomic-generated-answer.entry.js +2 -2
  172. package/dist/esm/atomic-insight-folded-result-list.entry.js +1 -1
  173. package/dist/esm/atomic-insight-folded-result-list.entry.js.map +1 -1
  174. package/dist/esm/atomic-insight-generated-answer.entry.js +2 -2
  175. package/dist/esm/atomic-insight-interface.entry.js +2 -2
  176. package/dist/esm/atomic-insight-interface.entry.js.map +1 -1
  177. package/dist/esm/atomic-insight-result-list.entry.js +1 -1
  178. package/dist/esm/atomic-insight-result-list.entry.js.map +1 -1
  179. package/dist/esm/atomic-insight-smart-snippet-suggestions.entry.js +2 -2
  180. package/dist/esm/atomic-insight-smart-snippet.entry.js +2 -2
  181. package/dist/esm/atomic-insight-user-actions-session_2.entry.js.map +1 -1
  182. package/dist/esm/atomic-insight-user-actions-toggle.entry.js +1 -1
  183. package/dist/esm/atomic-insight-user-actions-toggle.entry.js.map +1 -1
  184. package/dist/esm/atomic-ipx-recs-list.entry.js +1 -1
  185. package/dist/esm/atomic-ipx-recs-list.entry.js.map +1 -1
  186. package/dist/esm/atomic-ipx-result-link.entry.js +2 -2
  187. package/dist/esm/atomic-quickview-modal.entry.js +4 -4
  188. package/dist/esm/atomic-quickview-modal.entry.js.map +1 -1
  189. package/dist/esm/atomic-recs-interface.entry.js +1 -1
  190. package/dist/esm/atomic-recs-list.entry.js +1 -1
  191. package/dist/esm/atomic-recs-list.entry.js.map +1 -1
  192. package/dist/esm/atomic-result-link.entry.js +2 -2
  193. package/dist/esm/atomic-result-list.entry.js +1 -1
  194. package/dist/esm/atomic-result-list.entry.js.map +1 -1
  195. package/dist/esm/atomic-result-placeholder_8.entry.js +1 -1
  196. package/dist/esm/atomic-result-placeholder_8.entry.js.map +1 -1
  197. package/dist/esm/atomic-result-printable-uri.entry.js +2 -2
  198. package/dist/esm/atomic-search-interface.entry.js +4 -4
  199. package/dist/esm/atomic-search-interface.entry.js.map +1 -1
  200. package/dist/esm/atomic-smart-snippet-suggestions.entry.js +2 -2
  201. package/dist/esm/atomic-smart-snippet.entry.js +2 -2
  202. package/dist/esm/atomic-timeframe.entry.js.map +1 -1
  203. package/dist/esm/{attributes-slot-0fb13fa2.js → attributes-slot-cb60f29b.js} +2 -2
  204. package/dist/esm/{attributes-slot-0fb13fa2.js.map → attributes-slot-cb60f29b.js.map} +1 -1
  205. package/dist/esm/{generated-answer-common-835787fa.js → generated-answer-common-06146290.js} +2 -2
  206. package/dist/esm/{generated-answer-common-835787fa.js.map → generated-answer-common-06146290.js.map} +1 -1
  207. package/dist/esm/{slot-utils-39a2fc43.js → slot-utils-dcf4fc27.js} +12 -1
  208. package/dist/esm/slot-utils-dcf4fc27.js.map +1 -0
  209. package/dist/esm/version.js +2 -2
  210. package/dist/types/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.tw.css.d.ts +2 -0
  211. package/dist/types/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.d.ts +8 -0
  212. package/dist/types/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.tw.css.d.ts +2 -0
  213. package/dist/types/components/commerce/atomic-commerce-facet-number-input/atomic-commerce-facet-number-input.tw.css.d.ts +2 -0
  214. package/dist/types/components/commerce/atomic-commerce-interface/atomic-commerce-interface.d.ts +6 -1
  215. package/dist/types/components/commerce/atomic-commerce-layout/atomic-commerce-layout.tw.css.d.ts +2 -0
  216. package/dist/types/components/commerce/atomic-commerce-product-list/atomic-commerce-product-list.tw.css.d.ts +2 -0
  217. package/dist/types/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.d.ts +1 -1
  218. package/dist/types/components/commerce/atomic-commerce-recommendation-list/atomic-commerce-recommendation-list.d.ts +14 -1
  219. package/dist/types/components/commerce/atomic-commerce-recommendation-list/atomic-commerce-recommendation-list.tw.css.d.ts +2 -0
  220. package/dist/types/components/commerce/atomic-product/atomic-product.tw.css.d.ts +2 -0
  221. package/dist/types/components/commerce/atomic-product-link/atomic-product-link.d.ts +1 -2
  222. package/dist/types/components/commerce/atomic-product-link/atomic-product-link.tw.css.d.ts +2 -0
  223. package/dist/types/components/commerce/atomic-product-rating/atomic-product-rating.d.ts +1 -1
  224. package/dist/types/components/commerce/atomic-product-text/atomic-product-text.d.ts +6 -1
  225. package/dist/types/components/insight/atomic-insight-interface/atomic-insight-interface.d.ts +0 -3
  226. package/dist/types/components/insight/user-actions/atomic-insight-user-actions-timeline/atomic-insight-user-actions-timeline.d.ts +2 -1
  227. package/dist/types/components/insight/user-actions/atomic-insight-user-actions-toggle/atomic-insight-user-actions-toggle.d.ts +1 -1
  228. package/dist/types/components/search/atomic-search-interface/atomic-search-interface.d.ts +1 -1
  229. package/dist/types/components/search/result-template-components/quickview-iframe/quickview-iframe.d.ts +1 -0
  230. package/dist/types/components.d.ts +33 -1
  231. package/dist/types/mixins/slots-for-no-shadow-dom-mixin.d.ts +3 -8
  232. package/docs/atomic-docs.json +618 -2
  233. package/package.json +9 -14
  234. package/dist/atomic/components/components/commerce/atomic-commerce-facet/atomic-commerce-facet.tw.css.js +0 -3
  235. package/dist/atomic/components/components/commerce/atomic-commerce-numeric-facet/atomic-commerce-numeric-facet.tw.css.js +0 -3
  236. package/dist/atomic/components/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.tw.css.js +0 -3
  237. package/dist/atomic/components/components/commerce/atomic-commerce-timeframe-facet/atomic-commerce-timeframe-facet.tw.css.js +0 -3
  238. package/dist/atomic/components/components/commerce/atomic-product-children/atomic-product-children.tw.css.js +0 -2
  239. package/dist/atomic/components/components/commerce/atomic-product-rating/atomic-product-rating.tw.css.js +0 -3
  240. package/dist/atomic/p-08d7290a.entry.js +0 -2
  241. package/dist/atomic/p-0dc84319.entry.js +0 -2
  242. package/dist/atomic/p-1899894c.entry.js +0 -2
  243. package/dist/atomic/p-3ace419e.entry.js +0 -2
  244. package/dist/atomic/p-634ca060.js +0 -2
  245. package/dist/atomic/p-634ca060.js.map +0 -1
  246. package/dist/atomic/p-7464f00a.entry.js.map +0 -1
  247. package/dist/atomic/p-8bba9f56.entry.js +0 -2
  248. package/dist/atomic/p-8bba9f56.entry.js.map +0 -1
  249. package/dist/atomic/p-a13ee8b3.entry.js +0 -2
  250. package/dist/atomic/p-c344bb56.entry.js.map +0 -1
  251. package/dist/cjs/slot-utils-948feedc.js.map +0 -1
  252. package/dist/esm/slot-utils-39a2fc43.js.map +0 -1
  253. /package/dist/atomic/{p-bbdbf7c5.entry.js.map → p-0c076058.entry.js.map} +0 -0
  254. /package/dist/atomic/{p-6d8cf61b.js.map → p-251b4fc3.js.map} +0 -0
  255. /package/dist/atomic/{p-b79a7896.entry.js.map → p-421850f9.entry.js.map} +0 -0
  256. /package/dist/atomic/{p-57d5db65.entry.js.map → p-4cda93be.entry.js.map} +0 -0
  257. /package/dist/atomic/{p-486ad8f3.js.map → p-5fca1435.js.map} +0 -0
  258. /package/dist/atomic/{p-efca37de.entry.js.map → p-a6be5ee3.entry.js.map} +0 -0
  259. /package/dist/atomic/{p-4a6faf22.entry.js.map → p-ab55ee64.entry.js.map} +0 -0
  260. /package/dist/atomic/{p-8ff9d07e.js.map → p-b309aadd.js.map} +0 -0
  261. /package/dist/atomic/{p-11b9e476.entry.js.map → p-d3e1a9aa.entry.js.map} +0 -0
  262. /package/dist/atomic/{p-6a33b860.entry.js.map → p-dc89e560.entry.js.map} +0 -0
  263. /package/dist/atomic/{p-506d47e2.entry.js.map → p-e43fe680.entry.js.map} +0 -0
  264. /package/dist/atomic/{p-9c3859fb.entry.js.map → p-f37d666a.entry.js.map} +0 -0
  265. /package/dist/atomic/{p-a2e1fa2c.entry.js.map → p-ff653000.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["getFieldTableColumns","props","itemRenderingFunction","getFieldTableColumnsFromRenderingFunction","getFieldTableColumnsFromHTMLTemplate","contentOfRenderingFunction","document","createElement","contentOfRenderingFunctionAsString","firstItem","innerHTML","Array","from","querySelectorAll","tableElementTagName","templateContentForFirstItem","DisplayTable","children","fieldColumns","length","logger","error","host","h","class","listClasses","part","map","column","value","getAttribute","DisplayTableRow","key","rowIndex","setRef","ref","element","DisplayTableData","renderItem","TabGuard","tabsIncluded","tabsExcluded","activeTab","shouldDisplayOnCurrentTab","Hidden","Fragment","atomicResultListCss","AtomicResultListStyle0","AtomicResultList","this","loadingFlag","randomID","resultTemplateRegistered","isAppLoaded","templateHasError","display","density","imageSize","setRenderFunction","resultRenderingFunction","focusTarget","nextNewResultTarget","FocusTargetController","initialize","includes","console","warn","tabManager","buildTabManager","bindings","engine","resultList","buildResultList","resultsPerPage","buildResultsPerPage","itemTemplateProvider","ItemTemplateProvider","includeDefaultTemplate","templateElements","getResultTemplateRegistered","getTemplateHasError","setResultTemplateRegistered","setTemplateHasError","resultListCommon","ItemListCommon","engineSubscribe","subscribe","getCurrentNumberOfItems","resultListState","results","getIsLoading","isLoading","nextNewItemTarget","store","createAppLoadedListener","watchTabManagerState","newValue","oldValue","unsetLoadingFlag","render","updateBreakpoints","computeListDisplayClasses","tabManagerState","ItemListGuard","hasError","hasTemplate","firstRequestExecuted","firstSearchExecuted","hasItems","hasResults","DisplayWrapper","ResultsPlaceholdersGuard","displayPlaceholders","numberOfPlaceholders","resultsPerPageState","numberOfResults","ItemDisplayGuard","renderAsTable","renderAsGrid","renderAsList","getPropsForAtomicResult","result","interactiveResult","buildInteractiveResult","options","renderingFunction","getResultId","uniqueId","searchResponseId","content","getTemplateContent","linkContent","getLinkTemplateContent","getEmptyLinkTemplateContent","getItemListDisplayClasses","i","propsForAtomicResult","DisplayGrid","selectorForItem","item","setNewResultRef","propsForTableColumns","__decorate","InitializeBindings","BindStateToController","ArrayProp"],"sources":["src/components/common/item-list/stencil-display-table.tsx","src/components/common/tabs/tab-guard.tsx","src/components/search/result-lists/atomic-result-list/atomic-result-list.pcss?tag=atomic-result-list&encapsulation=shadow","src/components/search/result-lists/atomic-result-list/atomic-result-list.tsx"],"sourcesContent":["// The Lit equivalent of this file is table-layout.ts\nimport {FunctionalComponent, VNode, h} from '@stencil/core';\nimport {tableElementTagName} from '../../search/atomic-table-result/table-element-utils.js';\nimport {AnyItem} from './unfolded-item.js';\nimport {ItemRenderingFunction} from './stencil-item-list-common.js';\n\ninterface TableColumnsProps {\n templateContentForFirstItem: DocumentFragment;\n firstItem: AnyItem;\n itemRenderingFunction?: ItemRenderingFunction;\n}\n\nexport interface DisplayTableProps extends TableColumnsProps {\n logger: Pick<Console, 'error'>;\n host: HTMLElement;\n listClasses: string;\n}\n\nexport interface TableDataProps extends TableColumnsProps {\n key: string;\n}\n\nexport interface DisplayTableRowProps {\n key: string;\n rowIndex: number;\n setRef: (element?: HTMLElement) => void;\n}\n\nconst getFieldTableColumns = (props: TableColumnsProps) => {\n if (props.itemRenderingFunction) {\n return getFieldTableColumnsFromRenderingFunction(props);\n }\n return getFieldTableColumnsFromHTMLTemplate(props);\n};\n\nconst getFieldTableColumnsFromRenderingFunction = (\n props: Pick<TableColumnsProps, 'itemRenderingFunction' | 'firstItem'>\n): HTMLAtomicTableElementElement[] => {\n const contentOfRenderingFunction = document.createElement('div');\n\n const contentOfRenderingFunctionAsString = props.itemRenderingFunction!(\n props.firstItem,\n document.createElement('div')\n );\n contentOfRenderingFunction.innerHTML = contentOfRenderingFunctionAsString;\n\n return Array.from(\n contentOfRenderingFunction.querySelectorAll(tableElementTagName)\n );\n};\n\nconst getFieldTableColumnsFromHTMLTemplate = (\n props: Pick<DisplayTableProps, 'templateContentForFirstItem'>\n): HTMLAtomicTableElementElement[] =>\n Array.from(\n props.templateContentForFirstItem.querySelectorAll(tableElementTagName)\n );\n\nexport const DisplayTable: FunctionalComponent<DisplayTableProps> = (\n props,\n children\n) => {\n const fieldColumns = getFieldTableColumns(props);\n\n if (!fieldColumns.length) {\n props.logger.error(\n 'atomic-table-element elements missing in the template to display columns.',\n props.host\n );\n }\n\n return (\n <table class={`list-root ${props.listClasses}`} part=\"result-table\">\n <thead part=\"result-table-heading\">\n <tr part=\"result-table-heading-row\">\n {fieldColumns.map((column) => (\n <th part=\"result-table-heading-cell\">\n <atomic-text value={column.getAttribute('label')!}></atomic-text>\n </th>\n ))}\n </tr>\n </thead>\n <tbody part=\"result-table-body\">{...children}</tbody>\n </table>\n );\n};\n\nexport const DisplayTableRow: FunctionalComponent<DisplayTableRowProps> = (\n {key, rowIndex, setRef},\n children\n) => {\n return (\n <tr\n key={key}\n part={\n 'result-table-row ' +\n (rowIndex % 2 === 1 ? 'result-table-row-even' : 'result-table-row-odd')\n }\n ref={(element) => setRef(element)}\n >\n {...children}\n </tr>\n );\n};\n\nexport const DisplayTableData: FunctionalComponent<\n TableDataProps & {\n renderItem: (content: HTMLAtomicTableElementElement) => VNode;\n }\n> = (props) => {\n const fieldColumns = getFieldTableColumns(props);\n\n return fieldColumns.map((column) => {\n const key = column.getAttribute('label')! + props.key;\n return (\n <td key={key} part=\"result-table-cell\">\n {props.renderItem(column)}\n </td>\n );\n });\n};\n","import {Fragment, FunctionalComponent, h} from '@stencil/core';\nimport {shouldDisplayOnCurrentTab} from '../../../utils/tab-utils';\nimport {Hidden} from '../stencil-hidden';\n\ninterface TabGuardProps {\n tabsIncluded: string | string[];\n tabsExcluded: string | string[];\n activeTab: string;\n}\n\nexport const TabGuard: FunctionalComponent<TabGuardProps> = (\n {tabsIncluded, tabsExcluded, activeTab},\n children\n) => {\n if (\n !shouldDisplayOnCurrentTab([...tabsIncluded], [...tabsExcluded], activeTab)\n ) {\n return <Hidden></Hidden>;\n }\n return <Fragment>{...children}</Fragment>;\n};\n","@import '../../../../global/global.pcss';\n@import '../../../common/item-list/styles/placeholders.pcss';\n@import '../../../common/item-list/styles/table-display.pcss';\n@import '../../../common/item-list/styles/list-display.pcss';\n@import '../../../common/item-list/styles/grid-display.pcss';\n\natomic-result:not(.hydrated) {\n visibility: hidden;\n}\n","import {\n ResultList,\n ResultListState,\n buildResultList,\n ResultsPerPageState,\n ResultsPerPage,\n buildResultsPerPage,\n buildInteractiveResult,\n Result,\n TabManager,\n TabManagerState,\n buildTabManager,\n} from '@coveo/headless';\nimport {Component, Element, State, Prop, Method, h, Watch} from '@stencil/core';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {ArrayProp} from '../../../../utils/props-utils';\nimport {FocusTargetController} from '../../../../utils/stencil-accessibility-utils';\nimport {randomID} from '../../../../utils/utils';\nimport {ResultsPlaceholdersGuard} from '../../../common/atomic-result-placeholder/stencil-placeholders';\nimport {createAppLoadedListener} from '../../../common/interface/store';\nimport {ItemDisplayGuard} from '../../../common/item-list/item-display-guard';\nimport {ItemListGuard} from '../../../common/item-list/item-list-guard';\nimport {ItemTemplateProvider} from '../../../common/item-list/item-template-provider';\nimport {DisplayGrid} from '../../../common/item-list/stencil-display-grid';\nimport {\n DisplayTableData,\n DisplayTable,\n DisplayTableRow,\n} from '../../../common/item-list/stencil-display-table';\nimport {DisplayWrapper} from '../../../common/item-list/stencil-display-wrapper';\nimport {\n ItemListCommon,\n ItemRenderingFunction,\n} from '../../../common/item-list/stencil-item-list-common';\nimport {\n ItemDisplayDensity,\n ItemDisplayImageSize,\n ItemDisplayLayout,\n getItemListDisplayClasses,\n} from '../../../common/layout/display-options';\nimport {TabGuard} from '../../../common/tabs/tab-guard';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-result-list` component is responsible for displaying query results by applying one or more result templates.\n *\n * @slot default - The default slot where the result templates are inserted.\n * @part result-list - The element containing every result of a result list\n * @part outline - The element displaying an outline or a divider around a result\n * @part result-list-grid-clickable-container - The parent of the result & the clickable link encompassing it, when results are displayed as a grid\n * @part result-list-grid-clickable - The clickable link encompassing the result when results are displayed as a grid\n * @part result-table - The element of the result table containing a heading and a body\n * @part result-table-heading - The element containing the row of cells in the result table's heading\n * @part result-table-heading-row - The element containing cells of the result table's heading\n * @part result-table-heading-cell - The element representing a cell of the result table's heading\n * @part result-table-body - The element containing the rows of the result table's body\n * @part result-table-row - The element containing the cells of a row in the result table's body\n * @part result-table-row-odd - The element containing the cells of an odd row in the result table's body\n * @part result-table-row-even - The element containing the cells of an even row in the result table's body\n * @part result-table-cell - The element representing a cell of the result table's body\n */\n@Component({\n tag: 'atomic-result-list',\n styleUrl: 'atomic-result-list.pcss',\n shadow: true,\n})\nexport class AtomicResultList implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n public resultList!: ResultList;\n public resultsPerPage!: ResultsPerPage;\n private loadingFlag = randomID('firstResultLoaded-');\n private itemRenderingFunction: ItemRenderingFunction;\n private nextNewResultTarget?: FocusTargetController;\n private itemTemplateProvider!: ItemTemplateProvider;\n private resultListCommon!: ItemListCommon;\n\n @Element() public host!: HTMLDivElement;\n\n @BindStateToController('resultList')\n @State()\n private resultListState!: ResultListState;\n @BindStateToController('resultsPerPage')\n @State()\n private resultsPerPageState!: ResultsPerPageState;\n public tabManager!: TabManager;\n @BindStateToController('tabManager')\n @State()\n public tabManagerState!: TabManagerState;\n @State() private resultTemplateRegistered = false;\n @State() public error!: Error;\n @State() private isAppLoaded = false;\n\n @State() private templateHasError = false;\n\n /**\n * The desired layout to use when displaying results. Layouts affect how many results to display per row and how visually distinct they are from each other.\n */\n @Prop({reflect: true}) public display: ItemDisplayLayout = 'list';\n /**\n * The spacing of various elements in the result list, including the gap between results, the gap between parts of a result, and the font sizes of different parts in a result.\n */\n @Prop({reflect: true}) public density: ItemDisplayDensity = 'normal';\n\n /**\n * The expected size of the image displayed in the results.\n */\n @Prop({reflect: true, mutable: true})\n public imageSize: ItemDisplayImageSize = 'icon';\n\n /**\n * The tabs on which the result list can be displayed. This property should not be used at the same time as `tabs-excluded`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-result-list tabs-included='[\"tabIDA\", \"tabIDB\"]'></atomic-result-list snippet>\n * ```\n * If you don't set this property, the result list can be displayed on any tab. Otherwise, the result list can only be displayed on the specified tabs.\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public tabsIncluded: string[] | string = '[]';\n\n /**\n * The tabs on which this result list must not be displayed. This property should not be used at the same time as `tabs-included`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-result-list tabs-excluded='[\"tabIDA\", \"tabIDB\"]'></atomic-result-list>\n * ```\n * If you don't set this property, the result list can be displayed on any tab. Otherwise, the result list won't be displayed on any of the specified tabs.\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public tabsExcluded: string[] | string = '[]';\n\n /**\n * Sets a rendering function to bypass the standard HTML template mechanism for rendering results.\n * You can use this function while working with web frameworks that don't use plain HTML syntax, e.g., React, Angular or Vue.\n *\n * Do not use this method if you integrate Atomic in a plain HTML deployment.\n *\n * @param resultRenderingFunction\n */\n @Method() public async setRenderFunction(\n resultRenderingFunction: ItemRenderingFunction\n ) {\n this.itemRenderingFunction = resultRenderingFunction;\n }\n\n public get focusTarget() {\n if (!this.nextNewResultTarget) {\n this.nextNewResultTarget = new FocusTargetController(this);\n }\n return this.nextNewResultTarget;\n }\n\n public initialize() {\n if (this.host.innerHTML.includes('<atomic-result-children')) {\n console.warn(\n 'Folded results will not render any children for the \"atomic-result-list\". Please use \"atomic-folded-result-list\" instead.'\n );\n }\n this.tabManager = buildTabManager(this.bindings.engine);\n this.resultList = buildResultList(this.bindings.engine);\n this.resultsPerPage = buildResultsPerPage(this.bindings.engine);\n this.itemTemplateProvider = new ItemTemplateProvider({\n includeDefaultTemplate: true,\n templateElements: Array.from(\n this.host.querySelectorAll('atomic-result-template')\n ),\n getResultTemplateRegistered: () => this.resultTemplateRegistered,\n getTemplateHasError: () => this.templateHasError,\n setResultTemplateRegistered: (value: boolean) => {\n this.resultTemplateRegistered = value;\n },\n setTemplateHasError: (value: boolean) => {\n this.templateHasError = value;\n },\n bindings: this.bindings,\n });\n\n this.resultListCommon = new ItemListCommon({\n engineSubscribe: this.bindings.engine.subscribe,\n getCurrentNumberOfItems: () => this.resultListState.results.length,\n getIsLoading: () => this.resultListState.isLoading,\n host: this.host,\n loadingFlag: this.loadingFlag,\n nextNewItemTarget: this.focusTarget,\n store: this.bindings.store,\n });\n createAppLoadedListener(this.bindings.store, (isAppLoaded) => {\n this.isAppLoaded = isAppLoaded;\n });\n }\n\n @Watch('tabManagerState')\n watchTabManagerState(\n newValue: {activeTab: string},\n oldValue: {activeTab: string}\n ) {\n if (newValue?.activeTab !== oldValue?.activeTab) {\n this.bindings.store.unsetLoadingFlag(this.loadingFlag);\n }\n }\n\n public render() {\n this.resultListCommon.updateBreakpoints();\n const listClasses = this.computeListDisplayClasses();\n\n return (\n <TabGuard\n tabsIncluded={this.tabsIncluded}\n tabsExcluded={this.tabsExcluded}\n activeTab={this.tabManagerState.activeTab}\n >\n <ItemListGuard\n hasError={this.resultListState.hasError}\n hasTemplate={this.resultTemplateRegistered}\n templateHasError={this.itemTemplateProvider.hasError}\n firstRequestExecuted={this.resultListState.firstSearchExecuted}\n hasItems={this.resultListState.hasResults}\n >\n <DisplayWrapper display={this.display} listClasses={listClasses}>\n <ResultsPlaceholdersGuard\n density={this.density}\n display={this.display}\n imageSize={this.imageSize}\n displayPlaceholders={!this.isAppLoaded}\n numberOfPlaceholders={this.resultsPerPageState.numberOfResults}\n ></ResultsPlaceholdersGuard>\n <ItemDisplayGuard\n firstRequestExecuted={this.resultListState.firstSearchExecuted}\n hasItems={this.resultListState.hasResults}\n >\n {this.display === 'table'\n ? this.renderAsTable()\n : this.display === 'grid'\n ? this.renderAsGrid()\n : this.renderAsList()}\n </ItemDisplayGuard>\n </DisplayWrapper>\n </ItemListGuard>\n </TabGuard>\n );\n }\n\n private getPropsForAtomicResult(result: Result) {\n return {\n interactiveResult: buildInteractiveResult(this.bindings.engine, {\n options: {result},\n }),\n result,\n renderingFunction: this.itemRenderingFunction,\n loadingFlag: this.loadingFlag,\n key: this.resultListCommon.getResultId(\n result.uniqueId,\n this.resultListState.searchResponseId,\n this.density,\n this.imageSize\n ),\n content: this.itemTemplateProvider.getTemplateContent(result),\n linkContent:\n this.display === 'grid'\n ? this.itemTemplateProvider.getLinkTemplateContent(result)\n : this.itemTemplateProvider.getEmptyLinkTemplateContent(),\n store: this.bindings.store,\n density: this.density,\n imageSize: this.imageSize,\n display: this.display,\n };\n }\n\n private computeListDisplayClasses() {\n const displayPlaceholders = !this.isAppLoaded;\n\n return getItemListDisplayClasses(\n this.display,\n this.density,\n this.imageSize,\n this.resultListState.firstSearchExecuted &&\n this.resultListState.isLoading,\n displayPlaceholders\n );\n }\n\n private renderAsGrid() {\n return this.resultListState.results.map((result, i) => {\n const propsForAtomicResult = this.getPropsForAtomicResult(result);\n return (\n <DisplayGrid\n selectorForItem=\"atomic-result\"\n item={result}\n {...propsForAtomicResult.interactiveResult}\n setRef={(element) =>\n element && this.resultListCommon.setNewResultRef(element, i)\n }\n >\n <atomic-result {...this} {...propsForAtomicResult}></atomic-result>\n </DisplayGrid>\n );\n });\n }\n\n private renderAsTable() {\n if (!this.resultListState.hasResults) {\n return;\n }\n const listClasses = this.computeListDisplayClasses();\n const firstItem = this.resultListState.results[0];\n\n const propsForTableColumns = {\n firstItem,\n templateContentForFirstItem:\n this.itemTemplateProvider.getTemplateContent(firstItem),\n };\n\n return (\n <DisplayTable\n {...propsForTableColumns}\n listClasses={listClasses}\n logger={this.bindings.engine.logger}\n itemRenderingFunction={this.itemRenderingFunction}\n host={this.host}\n >\n {this.resultListState.results.map((result, i) => {\n const propsForAtomicResult = this.getPropsForAtomicResult(result);\n return (\n <DisplayTableRow\n {...propsForAtomicResult}\n rowIndex={i}\n setRef={(element) =>\n element && this.resultListCommon.setNewResultRef(element, i)\n }\n >\n <DisplayTableData\n {...propsForTableColumns}\n {...propsForAtomicResult}\n renderItem={(content) => {\n return (\n <atomic-result\n {...propsForAtomicResult}\n content={content}\n ></atomic-result>\n );\n }}\n ></DisplayTableData>\n </DisplayTableRow>\n );\n })}\n </DisplayTable>\n );\n }\n\n private renderAsList() {\n return this.resultListState.results.map((result, i) => {\n const propsForAtomicResult = this.getPropsForAtomicResult(result);\n return (\n <atomic-result\n {...propsForAtomicResult}\n ref={(element) =>\n element && this.resultListCommon.setNewResultRef(element, i)\n }\n part=\"outline\"\n ></atomic-result>\n );\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getFieldTableColumns","props","itemRenderingFunction","getFieldTableColumnsFromRenderingFunction","getFieldTableColumnsFromHTMLTemplate","contentOfRenderingFunction","document","createElement","contentOfRenderingFunctionAsString","firstItem","innerHTML","Array","from","querySelectorAll","tableElementTagName","templateContentForFirstItem","DisplayTable","children","fieldColumns","length","logger","error","host","h","class","listClasses","part","map","column","value","getAttribute","DisplayTableRow","key","rowIndex","setRef","ref","element","DisplayTableData","renderItem","TabGuard","tabsIncluded","tabsExcluded","activeTab","shouldDisplayOnCurrentTab","Hidden","Fragment","atomicResultListCss","AtomicResultListStyle0","AtomicResultList","this","loadingFlag","randomID","resultTemplateRegistered","isAppLoaded","templateHasError","display","density","imageSize","setRenderFunction","resultRenderingFunction","focusTarget","nextNewResultTarget","FocusTargetController","initialize","includes","console","warn","tabManager","buildTabManager","bindings","engine","resultList","buildResultList","resultsPerPage","buildResultsPerPage","itemTemplateProvider","ItemTemplateProvider","includeDefaultTemplate","templateElements","getResultTemplateRegistered","getTemplateHasError","setResultTemplateRegistered","setTemplateHasError","resultListCommon","ItemListCommon","engineSubscribe","subscribe","getCurrentNumberOfItems","resultListState","results","getIsLoading","isLoading","nextNewItemTarget","store","createAppLoadedListener","watchTabManagerState","newValue","oldValue","unsetLoadingFlag","render","updateBreakpoints","computeListDisplayClasses","tabManagerState","ItemListGuard","hasError","hasTemplate","firstRequestExecuted","firstSearchExecuted","hasItems","hasResults","DisplayWrapper","ResultsPlaceholdersGuard","displayPlaceholders","numberOfPlaceholders","resultsPerPageState","numberOfResults","ItemDisplayGuard","renderAsTable","renderAsGrid","renderAsList","getPropsForAtomicResult","result","interactiveResult","buildInteractiveResult","options","renderingFunction","getResultId","uniqueId","searchResponseId","content","getTemplateContent","linkContent","getLinkTemplateContent","getEmptyLinkTemplateContent","getItemListDisplayClasses","i","propsForAtomicResult","DisplayGrid","selectorForItem","item","setNewResultRef","propsForTableColumns","__decorate","InitializeBindings","BindStateToController","ArrayProp"],"sources":["src/components/common/item-list/stencil-display-table.tsx","src/components/common/tabs/tab-guard.tsx","src/components/search/result-lists/atomic-result-list/atomic-result-list.pcss?tag=atomic-result-list&encapsulation=shadow","src/components/search/result-lists/atomic-result-list/atomic-result-list.tsx"],"sourcesContent":["// The Lit equivalent of this file is table-layout.ts\nimport {FunctionalComponent, VNode, h} from '@stencil/core';\nimport {tableElementTagName} from '../../search/atomic-table-result/table-element-utils.js';\nimport {AnyItem} from './unfolded-item.js';\nimport {ItemRenderingFunction} from './stencil-item-list-common.js';\n\ninterface TableColumnsProps {\n templateContentForFirstItem: DocumentFragment;\n firstItem: AnyItem;\n itemRenderingFunction?: ItemRenderingFunction;\n}\n\nexport interface DisplayTableProps extends TableColumnsProps {\n logger: Pick<Console, 'error'>;\n host: HTMLElement;\n listClasses: string;\n}\n\nexport interface TableDataProps extends TableColumnsProps {\n key: string;\n}\n\nexport interface DisplayTableRowProps {\n key: string;\n rowIndex: number;\n setRef: (element?: HTMLElement) => void;\n}\n\nconst getFieldTableColumns = (props: TableColumnsProps) => {\n if (props.itemRenderingFunction) {\n return getFieldTableColumnsFromRenderingFunction(props);\n }\n return getFieldTableColumnsFromHTMLTemplate(props);\n};\n\nconst getFieldTableColumnsFromRenderingFunction = (\n props: Pick<TableColumnsProps, 'itemRenderingFunction' | 'firstItem'>\n): HTMLAtomicTableElementElement[] => {\n const contentOfRenderingFunction = document.createElement('div');\n\n const contentOfRenderingFunctionAsString = props.itemRenderingFunction!(\n props.firstItem,\n document.createElement('div')\n );\n contentOfRenderingFunction.innerHTML = contentOfRenderingFunctionAsString;\n\n return Array.from(\n contentOfRenderingFunction.querySelectorAll(tableElementTagName)\n );\n};\n\nconst getFieldTableColumnsFromHTMLTemplate = (\n props: Pick<DisplayTableProps, 'templateContentForFirstItem'>\n): HTMLAtomicTableElementElement[] =>\n Array.from(\n props.templateContentForFirstItem.querySelectorAll(tableElementTagName)\n );\n\nexport const DisplayTable: FunctionalComponent<DisplayTableProps> = (\n props,\n children\n) => {\n const fieldColumns = getFieldTableColumns(props);\n\n if (!fieldColumns.length) {\n props.logger.error(\n 'atomic-table-element elements missing in the template to display columns.',\n props.host\n );\n }\n\n return (\n <table class={`list-root ${props.listClasses}`} part=\"result-table\">\n <thead part=\"result-table-heading\">\n <tr part=\"result-table-heading-row\">\n {fieldColumns.map((column) => (\n <th part=\"result-table-heading-cell\">\n <atomic-text value={column.getAttribute('label')!}></atomic-text>\n </th>\n ))}\n </tr>\n </thead>\n <tbody part=\"result-table-body\">{...children}</tbody>\n </table>\n );\n};\n\nexport const DisplayTableRow: FunctionalComponent<DisplayTableRowProps> = (\n {key, rowIndex, setRef},\n children\n) => {\n return (\n <tr\n key={key}\n part={\n 'result-table-row ' +\n (rowIndex % 2 === 1 ? 'result-table-row-even' : 'result-table-row-odd')\n }\n ref={(element) => setRef(element)}\n >\n {...children}\n </tr>\n );\n};\n\nexport const DisplayTableData: FunctionalComponent<\n TableDataProps & {\n renderItem: (content: HTMLAtomicTableElementElement) => VNode;\n }\n> = (props) => {\n const fieldColumns = getFieldTableColumns(props);\n\n return fieldColumns.map((column) => {\n const key = column.getAttribute('label')! + props.key;\n return (\n <td key={key} part=\"result-table-cell\">\n {props.renderItem(column)}\n </td>\n );\n });\n};\n","import {Fragment, FunctionalComponent, h} from '@stencil/core';\nimport {shouldDisplayOnCurrentTab} from '../../../utils/tab-utils';\nimport {Hidden} from '../stencil-hidden';\n\ninterface TabGuardProps {\n tabsIncluded: string | string[];\n tabsExcluded: string | string[];\n activeTab: string;\n}\n\nexport const TabGuard: FunctionalComponent<TabGuardProps> = (\n {tabsIncluded, tabsExcluded, activeTab},\n children\n) => {\n if (\n !shouldDisplayOnCurrentTab([...tabsIncluded], [...tabsExcluded], activeTab)\n ) {\n return <Hidden></Hidden>;\n }\n return <Fragment>{...children}</Fragment>;\n};\n","@import '../../../../global/global.pcss';\n@import '../../../common/item-list/styles/placeholders.pcss';\n@import '../../../common/item-list/styles/table-display.pcss';\n@import '../../../common/item-list/styles/list-display.pcss';\n@import '../../../common/item-list/styles/grid-display.pcss';\n\natomic-result:not(.hydrated) {\n visibility: hidden;\n}\n","import {\n ResultList,\n ResultListState,\n buildResultList,\n ResultsPerPageState,\n ResultsPerPage,\n buildResultsPerPage,\n buildInteractiveResult,\n Result,\n TabManager,\n TabManagerState,\n buildTabManager,\n} from '@coveo/headless';\nimport {Component, Element, State, Prop, Method, h, Watch} from '@stencil/core';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {ArrayProp} from '../../../../utils/props-utils';\nimport {FocusTargetController} from '../../../../utils/stencil-accessibility-utils';\nimport {randomID} from '../../../../utils/utils';\nimport {ResultsPlaceholdersGuard} from '../../../common/atomic-result-placeholder/stencil-placeholders';\nimport {createAppLoadedListener} from '../../../common/interface/store';\nimport {ItemDisplayGuard} from '../../../common/item-list/item-display-guard';\nimport {ItemListGuard} from '../../../common/item-list/item-list-guard';\nimport {ItemTemplateProvider} from '../../../common/item-list/item-template-provider';\nimport {DisplayGrid} from '../../../common/item-list/stencil-display-grid';\nimport {\n DisplayTableData,\n DisplayTable,\n DisplayTableRow,\n} from '../../../common/item-list/stencil-display-table';\nimport {DisplayWrapper} from '../../../common/item-list/stencil-display-wrapper';\nimport {\n ItemListCommon,\n ItemRenderingFunction,\n} from '../../../common/item-list/stencil-item-list-common';\nimport {\n ItemDisplayDensity,\n ItemDisplayImageSize,\n ItemDisplayLayout,\n getItemListDisplayClasses,\n} from '../../../common/layout/display-options';\nimport {TabGuard} from '../../../common/tabs/tab-guard';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-result-list` component is responsible for displaying query results by applying one or more result templates.\n *\n * @slot default - The default slot where the result templates are inserted.\n * @part result-list - The element containing every result of a result list\n * @part outline - The element displaying an outline or a divider around a result\n * @part result-list-grid-clickable-container - The parent of the result & the clickable link encompassing it, when results are displayed as a grid\n * @part result-list-grid-clickable - The clickable link encompassing the result when results are displayed as a grid\n * @part result-table - The element of the result table containing a heading and a body\n * @part result-table-heading - The element containing the row of cells in the result table's heading\n * @part result-table-heading-row - The element containing cells of the result table's heading\n * @part result-table-heading-cell - The element representing a cell of the result table's heading\n * @part result-table-body - The element containing the rows of the result table's body\n * @part result-table-row - The element containing the cells of a row in the result table's body\n * @part result-table-row-odd - The element containing the cells of an odd row in the result table's body\n * @part result-table-row-even - The element containing the cells of an even row in the result table's body\n * @part result-table-cell - The element representing a cell of the result table's body\n */\n@Component({\n tag: 'atomic-result-list',\n styleUrl: 'atomic-result-list.pcss',\n shadow: true,\n})\nexport class AtomicResultList implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n public resultList!: ResultList;\n public resultsPerPage!: ResultsPerPage;\n private loadingFlag = randomID('firstResultLoaded-');\n private itemRenderingFunction: ItemRenderingFunction;\n private nextNewResultTarget?: FocusTargetController;\n private itemTemplateProvider!: ItemTemplateProvider;\n private resultListCommon!: ItemListCommon;\n\n @Element() public host!: HTMLDivElement;\n\n @BindStateToController('resultList')\n @State()\n private resultListState!: ResultListState;\n @BindStateToController('resultsPerPage')\n @State()\n private resultsPerPageState!: ResultsPerPageState;\n public tabManager!: TabManager;\n @BindStateToController('tabManager')\n @State()\n public tabManagerState!: TabManagerState;\n @State() private resultTemplateRegistered = false;\n @State() public error!: Error;\n @State() private isAppLoaded = false;\n\n @State() private templateHasError = false;\n\n /**\n * The desired layout to use when displaying results. Layouts affect how many results to display per row and how visually distinct they are from each other.\n */\n @Prop({reflect: true}) public display: ItemDisplayLayout = 'list';\n /**\n * The spacing of various elements in the result list, including the gap between results, the gap between parts of a result, and the font sizes of different parts in a result.\n */\n @Prop({reflect: true}) public density: ItemDisplayDensity = 'normal';\n\n /**\n * The expected size of the image displayed in the results.\n */\n @Prop({reflect: true, mutable: true})\n public imageSize: ItemDisplayImageSize = 'icon';\n\n /**\n * The tabs on which the result list can be displayed. This property should not be used at the same time as `tabs-excluded`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-result-list tabs-included='[\"tabIDA\", \"tabIDB\"]'></atomic-result-list snippet>\n * ```\n * If you don't set this property, the result list can be displayed on any tab. Otherwise, the result list can only be displayed on the specified tabs.\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public tabsIncluded: string[] | string = '[]';\n\n /**\n * The tabs on which this result list must not be displayed. This property should not be used at the same time as `tabs-included`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-result-list tabs-excluded='[\"tabIDA\", \"tabIDB\"]'></atomic-result-list>\n * ```\n * If you don't set this property, the result list can be displayed on any tab. Otherwise, the result list won't be displayed on any of the specified tabs.\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public tabsExcluded: string[] | string = '[]';\n\n /**\n * Sets a rendering function to bypass the standard HTML template mechanism for rendering results.\n * You can use this function while working with web frameworks that don't use plain HTML syntax, e.g., React, Angular or Vue.\n *\n * Do not use this method if you integrate Atomic in a plain HTML deployment.\n *\n * @param resultRenderingFunction\n */\n @Method() public async setRenderFunction(\n resultRenderingFunction: ItemRenderingFunction\n ) {\n this.itemRenderingFunction = resultRenderingFunction;\n }\n\n public get focusTarget() {\n if (!this.nextNewResultTarget) {\n this.nextNewResultTarget = new FocusTargetController(this);\n }\n return this.nextNewResultTarget;\n }\n\n public initialize() {\n if (this.host.innerHTML.includes('<atomic-result-children')) {\n console.warn(\n 'Folded results will not render any children for the \"atomic-result-list\". Please use \"atomic-folded-result-list\" instead.'\n );\n }\n this.tabManager = buildTabManager(this.bindings.engine);\n this.resultList = buildResultList(this.bindings.engine);\n this.resultsPerPage = buildResultsPerPage(this.bindings.engine);\n this.itemTemplateProvider = new ItemTemplateProvider({\n includeDefaultTemplate: true,\n templateElements: Array.from(\n this.host.querySelectorAll('atomic-result-template')\n ),\n getResultTemplateRegistered: () => this.resultTemplateRegistered,\n getTemplateHasError: () => this.templateHasError,\n setResultTemplateRegistered: (value: boolean) => {\n this.resultTemplateRegistered = value;\n },\n setTemplateHasError: (value: boolean) => {\n this.templateHasError = value;\n },\n bindings: this.bindings,\n });\n\n this.resultListCommon = new ItemListCommon({\n engineSubscribe: this.bindings.engine.subscribe,\n getCurrentNumberOfItems: () => this.resultListState.results.length,\n getIsLoading: () => this.resultListState.isLoading,\n host: this.host,\n loadingFlag: this.loadingFlag,\n nextNewItemTarget: this.focusTarget,\n store: this.bindings.store,\n });\n createAppLoadedListener(this.bindings.store, (isAppLoaded) => {\n this.isAppLoaded = isAppLoaded;\n });\n }\n\n @Watch('tabManagerState')\n watchTabManagerState(\n newValue: {activeTab: string},\n oldValue: {activeTab: string}\n ) {\n if (newValue?.activeTab !== oldValue?.activeTab) {\n this.bindings.store.unsetLoadingFlag(this.loadingFlag);\n }\n }\n\n public render() {\n this.resultListCommon.updateBreakpoints();\n const listClasses = this.computeListDisplayClasses();\n\n return (\n <TabGuard\n tabsIncluded={this.tabsIncluded}\n tabsExcluded={this.tabsExcluded}\n activeTab={this.tabManagerState.activeTab}\n >\n <ItemListGuard\n hasError={this.resultListState.hasError}\n hasTemplate={this.resultTemplateRegistered}\n templateHasError={this.itemTemplateProvider.hasError}\n firstRequestExecuted={this.resultListState.firstSearchExecuted}\n hasItems={this.resultListState.hasResults}\n >\n <DisplayWrapper display={this.display} listClasses={listClasses}>\n <ResultsPlaceholdersGuard\n density={this.density}\n display={this.display}\n imageSize={this.imageSize}\n displayPlaceholders={!this.isAppLoaded}\n numberOfPlaceholders={this.resultsPerPageState.numberOfResults}\n ></ResultsPlaceholdersGuard>\n <ItemDisplayGuard\n firstRequestExecuted={this.resultListState.firstSearchExecuted}\n hasItems={this.resultListState.hasResults}\n >\n {this.display === 'table'\n ? this.renderAsTable()\n : this.display === 'grid'\n ? this.renderAsGrid()\n : this.renderAsList()}\n </ItemDisplayGuard>\n </DisplayWrapper>\n </ItemListGuard>\n </TabGuard>\n );\n }\n\n private getPropsForAtomicResult(result: Result) {\n return {\n interactiveResult: buildInteractiveResult(this.bindings.engine, {\n options: {result},\n }),\n result,\n renderingFunction: this.itemRenderingFunction,\n loadingFlag: this.loadingFlag,\n key: this.resultListCommon.getResultId(\n result.uniqueId,\n this.resultListState.searchResponseId,\n this.density,\n this.imageSize\n ),\n content: this.itemTemplateProvider.getTemplateContent(result),\n linkContent:\n this.display === 'grid'\n ? this.itemTemplateProvider.getLinkTemplateContent(result)\n : this.itemTemplateProvider.getEmptyLinkTemplateContent(),\n store: this.bindings.store,\n density: this.density,\n imageSize: this.imageSize,\n display: this.display,\n };\n }\n\n private computeListDisplayClasses() {\n const displayPlaceholders = !this.isAppLoaded;\n\n return getItemListDisplayClasses(\n this.display,\n this.density,\n this.imageSize,\n this.resultListState.firstSearchExecuted &&\n this.resultListState.isLoading,\n displayPlaceholders\n );\n }\n\n private renderAsGrid() {\n return this.resultListState.results.map((result, i) => {\n const propsForAtomicResult = this.getPropsForAtomicResult(result);\n return (\n <DisplayGrid\n selectorForItem=\"atomic-result\"\n item={result}\n {...propsForAtomicResult.interactiveResult}\n setRef={(element) =>\n element && this.resultListCommon.setNewResultRef(element, i)\n }\n >\n <atomic-result {...this} {...propsForAtomicResult}></atomic-result>\n </DisplayGrid>\n );\n });\n }\n\n private renderAsTable() {\n if (!this.resultListState.hasResults) {\n return;\n }\n const listClasses = this.computeListDisplayClasses();\n const firstItem = this.resultListState.results[0];\n\n const propsForTableColumns = {\n firstItem,\n templateContentForFirstItem:\n this.itemTemplateProvider.getTemplateContent(firstItem),\n };\n\n return (\n <DisplayTable\n {...propsForTableColumns}\n listClasses={listClasses}\n logger={this.bindings.engine.logger}\n itemRenderingFunction={this.itemRenderingFunction}\n host={this.host}\n >\n {this.resultListState.results.map((result, i) => {\n const propsForAtomicResult = this.getPropsForAtomicResult(result);\n return (\n <DisplayTableRow\n {...propsForAtomicResult}\n rowIndex={i}\n setRef={(element) =>\n element && this.resultListCommon.setNewResultRef(element, i)\n }\n >\n <DisplayTableData\n {...propsForTableColumns}\n {...propsForAtomicResult}\n renderItem={(content) => {\n return (\n <atomic-result\n {...propsForAtomicResult}\n content={content}\n ></atomic-result>\n );\n }}\n ></DisplayTableData>\n </DisplayTableRow>\n );\n })}\n </DisplayTable>\n );\n }\n\n private renderAsList() {\n return this.resultListState.results.map((result, i) => {\n const propsForAtomicResult = this.getPropsForAtomicResult(result);\n return (\n <atomic-result\n {...propsForAtomicResult}\n ref={(element) =>\n element && this.resultListCommon.setNewResultRef(element, i)\n }\n part=\"outline\"\n ></atomic-result>\n );\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["icons","SEARCH","SearchIcon","CLICK","DocumentIcon","VIEW","QuickviewIcon","CUSTOM","PointIcon","TICKET_CREATION","BookmarkIcon","UserAction","bindings","action","renderActionTimestamp","hours","minutes","parseTimestampToDateDetails","timestamp","formattedHours","String","padStart","formattedMinutes","renderIcon","iconClasses","includes","actionType","h","icon","class","renderActionTitle","i18n","t","eventData","value","type","query","href","document","contentIdValue","target","title","searchHub","atomicInsightUserActionsSessionCss","AtomicInsightUserActionsSessionStyle0","AtomicInsightUserActionsSession","this","userActionsToDisplay","userActionsAfterCaseCreation","areActionsAfterCaseCreationVisible","connectedCallback","prepareUserActionsToDisplay","caseCreationIndex","userActions","findIndex","isCaseCreationSession","slice","showActionsAfterCaseCreation","renderSessionStartDate","year","month","dayOfWeek","day","startTimestamp","formatedStartDate","Flag","renderActions","actions","map","renderShowMoreActionsButton","btnClasses","label","count","length","ThreeDotsIcon","Button","style","part","ariaLabel","onClick","bind","render","isShowMoreActionsButtonVisible","key","__decorate","InitializeBindings","atomicInsightUserActionsTimelineCss","AtomicInsightUserActionsTimelineStyle0","AtomicInsightUserActionsTimeline","excludedCustomActions","followingSessionsAreVisible","precedingSessionsAreVisible","initialize","buildInsightUserActions","engine","options","ticketCreationDate","ticketCreationDateTime","fetchUserActions","userId","toggleFollowingSessions","togglePrecedingSessions","renderSessions","sessions","renderSeparator","testId","start","renderToggleFollowingSessionsButton","ArrowDownIcon","ArrowUpIcon","renderTogglePrecedingSessionsButton","renderFollowingSessionsSection","userActionsState","timeline","followingSessions","renderPrecedingSessionsSection","precedingSessions","renderTimeline","session","renderNoUserActionsScreen","NoItemsContainer","MagnifyingGlass","areUserActionsAvailable","hasError","error","BindStateToController"],"sources":["src/components/insight/user-actions/atomic-insight-user-actions-session/user-action.tsx","src/components/insight/user-actions/atomic-insight-user-actions-session/atomic-insight-user-actions-session.pcss?tag=atomic-insight-user-actions-session&encapsulation=shadow","src/components/insight/user-actions/atomic-insight-user-actions-session/atomic-insight-user-actions-session.tsx","src/components/insight/user-actions/atomic-insight-user-actions-timeline/atomic-insight-user-actions-timeline.pcss?tag=atomic-insight-user-actions-timeline&encapsulation=shadow","src/components/insight/user-actions/atomic-insight-user-actions-timeline/atomic-insight-user-actions-timeline.tsx"],"sourcesContent":["import {UserAction as IUserAction} from '@coveo/headless/insight';\nimport {FunctionalComponent, h} from '@stencil/core';\nimport BookmarkIcon from '../../../../images/bookmark.svg';\nimport DocumentIcon from '../../../../images/document.svg';\nimport PointIcon from '../../../../images/point.svg';\nimport QuickviewIcon from '../../../../images/quickview.svg';\nimport SearchIcon from '../../../../images/search.svg';\nimport {parseTimestampToDateDetails} from '../../../../utils/date-utils';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\n\nconst icons = {\n SEARCH: SearchIcon,\n CLICK: DocumentIcon,\n VIEW: QuickviewIcon,\n CUSTOM: PointIcon,\n TICKET_CREATION: BookmarkIcon,\n};\n\ninterface UserAction {\n action: IUserAction;\n bindings: InsightBindings;\n}\n\nexport const UserAction: FunctionalComponent<UserAction> = ({\n bindings,\n action,\n}) => {\n const renderActionTimestamp = () => {\n const {hours, minutes} = parseTimestampToDateDetails(action.timestamp);\n\n const formattedHours = String(hours).padStart(2, '0');\n const formattedMinutes = String(minutes).padStart(2, '0');\n\n return `${formattedHours}:${formattedMinutes}`;\n };\n\n const renderIcon = () => {\n const iconClasses = `w-3 h-3 ${['CLICK', 'VIEW'].includes(action.actionType) ? 'text-primary' : ''}`;\n\n return (\n <atomic-icon\n icon={icons[action.actionType]}\n class={iconClasses}\n ></atomic-icon>\n );\n };\n\n const renderActionTitle = () => {\n switch (action.actionType) {\n case 'TICKET_CREATION':\n return (\n <div class=\"ticket-creation-action__text text-xs font-semibold\">\n {bindings.i18n.t('ticket-created')}\n </div>\n );\n case 'CUSTOM':\n return (\n <div class=\"text-xs font-semibold\">\n {action.eventData?.value ?? action.eventData?.type}\n </div>\n );\n case 'SEARCH':\n return (\n <div class=\"text-xs font-semibold\">\n {action.query || bindings.i18n.t('empty-search')}\n </div>\n );\n case 'VIEW':\n return (\n <a\n href={action.document?.contentIdValue}\n class=\"text-primary text-xs font-semibold\"\n target=\"_blank\"\n >\n {action.document?.title}\n </a>\n );\n case 'CLICK':\n return (\n <div class=\"text-xs font-semibold\">{action.document?.title}</div>\n );\n default:\n return null;\n }\n };\n\n return (\n <div class=\"flex\">\n <div class=\"flex-none pr-2\">\n <div class=\"flex justify-center py-1\">{renderIcon()}</div>\n <div class=\"flex justify-center py-1\">\n <div class=\"user-action__separator h-7 w-0.5 rounded\"></div>\n </div>\n </div>\n <div class=\"flex-1\">\n {renderActionTitle()}\n <div class=\"text-neutral-dark text-xxs flex py-2 font-light\">\n <div>{renderActionTimestamp()}</div>\n <div class=\"px-2\">{action.searchHub}</div>\n </div>\n </div>\n </div>\n );\n};\n","@import '../../../../global/global.pcss';\n\n.session-start-icon__container {\n background-color: #fbb439;\n}\n\n.user-action__separator {\n @apply bg-neutral;\n}\n\n.ticket-creation-action__text {\n @apply text-success;\n}\n\n.text-xxs {\n font-size: 0.625rem;\n}\n","import {UserAction as IUserAction} from '@coveo/headless/insight';\nimport {Component, h, Prop, Watch, State} from '@stencil/core';\nimport Flag from '../../../../images/flag.svg';\nimport ThreeDotsIcon from '../../../../images/three-dots.svg';\nimport {parseTimestampToDateDetails} from '../../../../utils/date-utils';\nimport {InitializeBindings} from '../../../../utils/initialization-utils';\nimport {Button} from '../../../common/stencil-button';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\nimport {UserAction} from './user-action';\n\nexport type UserActionType =\n | 'SEARCH'\n | 'CLICK'\n | 'TICKET_CREATION'\n | 'VIEW'\n | 'CUSTOM';\n\n/**\n * @internal\n * The `AtomicInsightUserActionSession` component displays all the user actions that took place during a specific user session.\n * @category Insight Panel\n * @example\n * <atomic-insight-user-actions-session userActions={actions} startTimestamp={1723035731}></atomic-insight-user-actions-session>\n */\n@Component({\n tag: 'atomic-insight-user-actions-session',\n styleUrl: 'atomic-insight-user-actions-session.pcss',\n shadow: true,\n})\nexport class AtomicInsightUserActionsSession {\n @InitializeBindings() public bindings!: InsightBindings;\n @State() public error!: Error;\n\n /**\n * The start time of the session as a Unix timestamp.\n */\n @Prop() public startTimestamp!: number;\n /**\n * The list of user actions performed during the session.\n */\n @Prop() public userActions!: Array<IUserAction>;\n\n private userActionsToDisplay: Array<IUserAction> = [];\n private userActionsAfterCaseCreation: Array<IUserAction> = [];\n @State() areActionsAfterCaseCreationVisible = false;\n\n connectedCallback() {\n this.prepareUserActionsToDisplay();\n }\n\n @Watch('userActions')\n prepareUserActionsToDisplay() {\n const caseCreationIndex = this.userActions.findIndex(\n ({actionType}) => actionType === 'TICKET_CREATION'\n );\n const isCaseCreationSession = caseCreationIndex !== -1;\n\n if (!isCaseCreationSession) {\n this.userActionsToDisplay = this.userActions;\n this.userActionsAfterCaseCreation = [];\n } else {\n this.userActionsToDisplay = this.userActions.slice(caseCreationIndex);\n this.userActionsAfterCaseCreation = this.userActions.slice(\n 0,\n caseCreationIndex\n );\n }\n }\n\n showActionsAfterCaseCreation() {\n this.areActionsAfterCaseCreationVisible = true;\n }\n\n renderSessionStartDate() {\n const caseCreationIndex = this.userActions.findIndex(\n ({actionType}) => actionType === 'TICKET_CREATION'\n );\n const isCaseCreationSession = caseCreationIndex !== -1;\n\n const {year, month, dayOfWeek, day} = parseTimestampToDateDetails(\n this.startTimestamp\n );\n\n const formatedStartDate = `${dayOfWeek}. ${month} ${day}, ${year}`;\n return (\n <div class=\"flex items-center px-2 pb-3\">\n {isCaseCreationSession ? (\n <div class=\"session-start-icon__container mr-2 flex h-5 w-5 items-center justify-center rounded-full\">\n <atomic-icon icon={Flag} class=\"h-3 w-3\"></atomic-icon>\n </div>\n ) : null}\n\n <div class=\"flex-1 font-semibold\">{formatedStartDate}</div>\n </div>\n );\n }\n\n renderActions(actions: Array<IUserAction>) {\n return (\n <ol class=\"px-3\">\n {actions?.map((action) => (\n <UserAction action={action} bindings={this.bindings}></UserAction>\n ))}\n </ol>\n );\n }\n\n renderShowMoreActionsButton() {\n const btnClasses = 'flex items-center p-1 max-w-full';\n const label = this.bindings.i18n.t('more-actions-in-session', {\n count: this.userActionsAfterCaseCreation.length,\n });\n return (\n <div\n data-testid=\"show-more-actions-button\"\n class=\"flex items-center px-3 pb-3\"\n >\n <div class=\"flex justify-center pr-2\">\n <atomic-icon icon={ThreeDotsIcon} class=\"h-3 w-3\"></atomic-icon>\n </div>\n <div class=\"flex-1\">\n <Button\n style=\"text-primary\"\n part=\"show-more-actions-button\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.showActionsAfterCaseCreation.bind(this)}\n >\n <span class=\"truncate text-xs font-light\">{label}</span>\n </Button>\n </div>\n </div>\n );\n }\n\n public render() {\n const isShowMoreActionsButtonVisible =\n !this.areActionsAfterCaseCreationVisible &&\n !!this.userActionsAfterCaseCreation.length;\n\n return (\n <div>\n {this.renderSessionStartDate()}\n\n {this.areActionsAfterCaseCreationVisible && (\n <div data-testid=\"more-actions-section\">\n {this.renderActions(this.userActionsAfterCaseCreation)}\n </div>\n )}\n\n {isShowMoreActionsButtonVisible && this.renderShowMoreActionsButton()}\n\n {this.renderActions(this.userActionsToDisplay)}\n </div>\n );\n }\n}\n","@import '../../../../global/global.pcss';\n\n.separator {\n height: 1px;\n background-color: #e0e1dd;\n}\n","import {\n buildUserActions as buildInsightUserActions,\n UserActions as InsightUserActions,\n UserActionsState as InsightUserActionsState,\n UserSession as InsightUserSession,\n} from '@coveo/headless/insight';\nimport {Component, h, State, Prop} from '@stencil/core';\nimport ArrowDownIcon from '../../../../images/big-arrow-down.svg';\nimport ArrowUpIcon from '../../../../images/big-arrow-up.svg';\nimport {\n InitializableComponent,\n InitializeBindings,\n BindStateToController,\n} from '../../../../utils/initialization-utils';\nimport {NoItemsContainer} from '../../../common/no-items/stencil-container';\nimport {MagnifyingGlass} from '../../../common/no-items/stencil-magnifying-glass';\nimport {Button} from '../../../common/stencil-button';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\n\n/**\n * @internal\n * This component displays all the actions performed by a user around the time they created a case.\n * The actions are grouped into multiple sessions, including the session during which the case was created,\n * the sessions preceding the case creation and the sessions following the case creation.\n *\n * @component\n * @example\n * <AtomicInsightUserActionsTimeline userId={'123'} caseCreationDate={'2024-08-15T10:00:00Z'} />\n *\n */\n@Component({\n tag: 'atomic-insight-user-actions-timeline',\n styleUrl: 'atomic-insight-user-actions-timeline.pcss',\n shadow: true,\n})\nexport class AtomicInsightUserActionsTimeline\n implements InitializableComponent<InsightBindings>\n{\n @InitializeBindings() public bindings!: InsightBindings;\n public userActions!: InsightUserActions;\n\n @BindStateToController('userActions')\n @State()\n public userActionsState!: InsightUserActionsState;\n public error!: Error;\n\n /**\n * The ID of the user whose actions are being displayed. For example in email format \"someone@company.com\".\n */\n @Prop() public userId!: string;\n /**\n * The date and time when the case was created. For example \"2024-01-01T00:00:00Z\"\n */\n @Prop() public ticketCreationDateTime!: string;\n /**\n * The names of custom events to exclude.\n */\n @Prop() public excludedCustomActions: string[] = [];\n\n public initialize() {\n this.userActions = buildInsightUserActions(this.bindings.engine, {\n options: {\n ticketCreationDate: this.ticketCreationDateTime,\n excludedCustomActions: this.excludedCustomActions,\n },\n });\n\n this.userActions.fetchUserActions(this.userId);\n }\n\n @State() followingSessionsAreVisible = false;\n @State() precedingSessionsAreVisible = false;\n\n private toggleFollowingSessions() {\n this.followingSessionsAreVisible = !this.followingSessionsAreVisible;\n }\n\n private togglePrecedingSessions() {\n this.precedingSessionsAreVisible = !this.precedingSessionsAreVisible;\n }\n\n private renderSessions(\n sessions: Array<InsightUserSession> | undefined,\n renderSeparator?: Function,\n testId?: string\n ) {\n return (\n <div>\n {sessions?.map(({actions, start}) => [\n <div class=\"mt-4\">\n <atomic-insight-user-actions-session\n startTimestamp={start}\n userActions={actions}\n data-testid={testId}\n ></atomic-insight-user-actions-session>\n </div>,\n renderSeparator ? renderSeparator() : null,\n ])}\n </div>\n );\n }\n\n private renderToggleFollowingSessionsButton() {\n const btnClasses = 'flex items-center text-left p-2 text-sm max-w-full';\n const iconClasses = 'h-3 w-3 mr-1';\n const label = this.followingSessionsAreVisible\n ? this.bindings.i18n.t('hide-following-sessions')\n : this.bindings.i18n.t('show-following-sessions');\n const icon = this.followingSessionsAreVisible ? ArrowDownIcon : ArrowUpIcon;\n\n return (\n <div class=\"flex justify-center p-2\">\n <Button\n style=\"text-primary\"\n part=\"toggle-following-sessions\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.toggleFollowingSessions.bind(this)}\n >\n <atomic-icon\n part=\"toggle-following-sessions-icon\"\n class={iconClasses}\n icon={icon}\n ></atomic-icon>\n <span class=\"truncate\">{label}</span>\n </Button>\n </div>\n );\n }\n\n private renderTogglePrecedingSessionsButton() {\n const btnClasses = 'flex items-center text-left p-2 text-sm max-w-full';\n const iconClasses = 'h-3 w-3 mr-1';\n const label = this.precedingSessionsAreVisible\n ? this.bindings.i18n.t('hide-preceding-sessions')\n : this.bindings.i18n.t('show-preceding-sessions');\n const icon = this.precedingSessionsAreVisible ? ArrowUpIcon : ArrowDownIcon;\n\n return (\n <div class=\"flex justify-center p-2\">\n <Button\n style=\"text-primary\"\n part=\"toggle-preceding-sessions\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.togglePrecedingSessions.bind(this)}\n >\n <atomic-icon\n part=\"toggle-preceding-sessions-icon\"\n class={iconClasses}\n icon={icon}\n ></atomic-icon>\n <span class=\"truncate\">{label}</span>\n </Button>\n </div>\n );\n }\n\n private renderFollowingSessionsSection() {\n if (!this.userActionsState.timeline?.followingSessions?.length) {\n return null;\n }\n return [\n this.renderToggleFollowingSessionsButton(),\n <div class=\"separator mx-1 rounded\"></div>,\n this.followingSessionsAreVisible\n ? this.renderSessions(\n this.userActionsState.timeline?.followingSessions,\n () => <div class=\"separator mx-1 mt-4 rounded\"></div>,\n 'following-session'\n )\n : null,\n ];\n }\n\n private renderPrecedingSessionsSection() {\n if (!this.userActionsState.timeline?.precedingSessions?.length) {\n return null;\n }\n return [\n <div class=\"separator mx-1 mt-4 rounded\"></div>,\n this.precedingSessionsAreVisible\n ? this.renderSessions(\n this.userActionsState.timeline?.precedingSessions,\n () => <div class=\"separator mx-1 mt-4 rounded\"></div>,\n 'preceding-session'\n )\n : null,\n this.renderTogglePrecedingSessionsButton(),\n ];\n }\n\n private renderTimeline() {\n return (\n <div>\n {this.renderFollowingSessionsSection()}\n <div class=\"mt-4\">\n <atomic-insight-user-actions-session\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n startTimestamp={this.userActionsState.timeline?.session?.start!}\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n userActions={this.userActionsState?.timeline?.session?.actions!}\n data-testid=\"active-session\"\n ></atomic-insight-user-actions-session>\n </div>\n {this.renderPrecedingSessionsSection()}\n </div>\n );\n }\n\n private renderNoUserActionsScreen() {\n return (\n <div class=\"my-6 py-3\" data-testid=\"user-actions-error\">\n <NoItemsContainer>\n <MagnifyingGlass />\n <div class=\"my-2 max-w-full text-center text-2xl font-light\">\n {this.bindings.i18n.t('no-user-actions-available')}\n </div>\n <div class=\"text-neutral-dark my-2 text-center text-lg\">\n {this.bindings.i18n.t('no-user-actions-associated-with-params')}\n </div>\n </NoItemsContainer>\n </div>\n );\n }\n\n render() {\n const areUserActionsAvailable = this.userActionsState.timeline?.session;\n const hasError = this.userActionsState.error;\n\n if (areUserActionsAvailable && !hasError) {\n return this.renderTimeline();\n }\n return this.renderNoUserActionsScreen();\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["icons","SEARCH","SearchIcon","CLICK","DocumentIcon","VIEW","QuickviewIcon","CUSTOM","PointIcon","TICKET_CREATION","BookmarkIcon","UserAction","bindings","action","renderActionTimestamp","hours","minutes","parseTimestampToDateDetails","timestamp","formattedHours","String","padStart","formattedMinutes","renderIcon","iconClasses","includes","actionType","h","icon","class","renderActionTitle","i18n","t","eventData","value","type","query","href","document","contentIdValue","target","title","searchHub","atomicInsightUserActionsSessionCss","AtomicInsightUserActionsSessionStyle0","AtomicInsightUserActionsSession","this","userActionsToDisplay","userActionsAfterCaseCreation","areActionsAfterCaseCreationVisible","connectedCallback","prepareUserActionsToDisplay","caseCreationIndex","userActions","findIndex","isCaseCreationSession","slice","showActionsAfterCaseCreation","renderSessionStartDate","year","month","dayOfWeek","day","startTimestamp","formatedStartDate","Flag","renderActions","actions","map","renderShowMoreActionsButton","btnClasses","label","count","length","ThreeDotsIcon","Button","style","part","ariaLabel","onClick","bind","render","isShowMoreActionsButtonVisible","key","__decorate","InitializeBindings","atomicInsightUserActionsTimelineCss","AtomicInsightUserActionsTimelineStyle0","AtomicInsightUserActionsTimeline","excludedCustomActions","followingSessionsAreVisible","precedingSessionsAreVisible","initialize","buildInsightUserActions","engine","options","ticketCreationDate","ticketCreationDateTime","fetchUserActions","userId","toggleFollowingSessions","togglePrecedingSessions","renderSessions","sessions","renderSeparator","testId","start","renderToggleFollowingSessionsButton","ArrowDownIcon","ArrowUpIcon","renderTogglePrecedingSessionsButton","renderFollowingSessionsSection","userActionsState","timeline","followingSessions","renderPrecedingSessionsSection","precedingSessions","renderTimeline","session","renderNoUserActionsScreen","NoItemsContainer","MagnifyingGlass","areUserActionsAvailable","hasError","error","BindStateToController"],"sources":["src/components/insight/user-actions/atomic-insight-user-actions-session/user-action.tsx","src/components/insight/user-actions/atomic-insight-user-actions-session/atomic-insight-user-actions-session.pcss?tag=atomic-insight-user-actions-session&encapsulation=shadow","src/components/insight/user-actions/atomic-insight-user-actions-session/atomic-insight-user-actions-session.tsx","src/components/insight/user-actions/atomic-insight-user-actions-timeline/atomic-insight-user-actions-timeline.pcss?tag=atomic-insight-user-actions-timeline&encapsulation=shadow","src/components/insight/user-actions/atomic-insight-user-actions-timeline/atomic-insight-user-actions-timeline.tsx"],"sourcesContent":["import {UserAction as IUserAction} from '@coveo/headless/insight';\nimport {FunctionalComponent, h} from '@stencil/core';\nimport BookmarkIcon from '../../../../images/bookmark.svg';\nimport DocumentIcon from '../../../../images/document.svg';\nimport PointIcon from '../../../../images/point.svg';\nimport QuickviewIcon from '../../../../images/quickview.svg';\nimport SearchIcon from '../../../../images/search.svg';\nimport {parseTimestampToDateDetails} from '../../../../utils/date-utils';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\n\nconst icons = {\n SEARCH: SearchIcon,\n CLICK: DocumentIcon,\n VIEW: QuickviewIcon,\n CUSTOM: PointIcon,\n TICKET_CREATION: BookmarkIcon,\n};\n\ninterface UserAction {\n action: IUserAction;\n bindings: InsightBindings;\n}\n\nexport const UserAction: FunctionalComponent<UserAction> = ({\n bindings,\n action,\n}) => {\n const renderActionTimestamp = () => {\n const {hours, minutes} = parseTimestampToDateDetails(action.timestamp);\n\n const formattedHours = String(hours).padStart(2, '0');\n const formattedMinutes = String(minutes).padStart(2, '0');\n\n return `${formattedHours}:${formattedMinutes}`;\n };\n\n const renderIcon = () => {\n const iconClasses = `w-3 h-3 ${['CLICK', 'VIEW'].includes(action.actionType) ? 'text-primary' : ''}`;\n\n return (\n <atomic-icon\n icon={icons[action.actionType]}\n class={iconClasses}\n ></atomic-icon>\n );\n };\n\n const renderActionTitle = () => {\n switch (action.actionType) {\n case 'TICKET_CREATION':\n return (\n <div class=\"ticket-creation-action__text text-xs font-semibold\">\n {bindings.i18n.t('ticket-created')}\n </div>\n );\n case 'CUSTOM':\n return (\n <div class=\"text-xs font-semibold\">\n {action.eventData?.value ?? action.eventData?.type}\n </div>\n );\n case 'SEARCH':\n return (\n <div class=\"text-xs font-semibold\">\n {action.query || bindings.i18n.t('empty-search')}\n </div>\n );\n case 'VIEW':\n return (\n <a\n href={action.document?.contentIdValue}\n class=\"text-primary text-xs font-semibold\"\n target=\"_blank\"\n >\n {action.document?.title}\n </a>\n );\n case 'CLICK':\n return (\n <div class=\"text-xs font-semibold\">{action.document?.title}</div>\n );\n default:\n return null;\n }\n };\n\n return (\n <div class=\"flex\">\n <div class=\"flex-none pr-2\">\n <div class=\"flex justify-center py-1\">{renderIcon()}</div>\n <div class=\"flex justify-center py-1\">\n <div class=\"user-action__separator h-7 w-0.5 rounded\"></div>\n </div>\n </div>\n <div class=\"flex-1\">\n {renderActionTitle()}\n <div class=\"text-neutral-dark text-xxs flex py-2 font-light\">\n <div>{renderActionTimestamp()}</div>\n <div class=\"px-2\">{action.searchHub}</div>\n </div>\n </div>\n </div>\n );\n};\n","@import '../../../../global/global.pcss';\n\n.session-start-icon__container {\n background-color: #fbb439;\n}\n\n.user-action__separator {\n @apply bg-neutral;\n}\n\n.ticket-creation-action__text {\n @apply text-success;\n}\n\n.text-xxs {\n font-size: 0.625rem;\n}\n","import {UserAction as IUserAction} from '@coveo/headless/insight';\nimport {Component, h, Prop, Watch, State} from '@stencil/core';\nimport Flag from '../../../../images/flag.svg';\nimport ThreeDotsIcon from '../../../../images/three-dots.svg';\nimport {parseTimestampToDateDetails} from '../../../../utils/date-utils';\nimport {InitializeBindings} from '../../../../utils/initialization-utils';\nimport {Button} from '../../../common/stencil-button';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\nimport {UserAction} from './user-action';\n\nexport type UserActionType =\n | 'SEARCH'\n | 'CLICK'\n | 'TICKET_CREATION'\n | 'VIEW'\n | 'CUSTOM';\n\n/**\n * @internal\n * The `AtomicInsightUserActionSession` component displays all the user actions that took place during a specific user session.\n * @category Insight Panel\n * @example\n * <atomic-insight-user-actions-session userActions={actions} startTimestamp={1723035731}></atomic-insight-user-actions-session>\n */\n@Component({\n tag: 'atomic-insight-user-actions-session',\n styleUrl: 'atomic-insight-user-actions-session.pcss',\n shadow: true,\n})\nexport class AtomicInsightUserActionsSession {\n @InitializeBindings() public bindings!: InsightBindings;\n @State() public error!: Error;\n\n /**\n * The start time of the session as a Unix timestamp.\n */\n @Prop() public startTimestamp!: number;\n /**\n * The list of user actions performed during the session.\n */\n @Prop() public userActions!: Array<IUserAction>;\n\n private userActionsToDisplay: Array<IUserAction> = [];\n private userActionsAfterCaseCreation: Array<IUserAction> = [];\n @State() areActionsAfterCaseCreationVisible = false;\n\n connectedCallback() {\n this.prepareUserActionsToDisplay();\n }\n\n @Watch('userActions')\n prepareUserActionsToDisplay() {\n const caseCreationIndex = this.userActions.findIndex(\n ({actionType}) => actionType === 'TICKET_CREATION'\n );\n const isCaseCreationSession = caseCreationIndex !== -1;\n\n if (!isCaseCreationSession) {\n this.userActionsToDisplay = this.userActions;\n this.userActionsAfterCaseCreation = [];\n } else {\n this.userActionsToDisplay = this.userActions.slice(caseCreationIndex);\n this.userActionsAfterCaseCreation = this.userActions.slice(\n 0,\n caseCreationIndex\n );\n }\n }\n\n showActionsAfterCaseCreation() {\n this.areActionsAfterCaseCreationVisible = true;\n }\n\n renderSessionStartDate() {\n const caseCreationIndex = this.userActions.findIndex(\n ({actionType}) => actionType === 'TICKET_CREATION'\n );\n const isCaseCreationSession = caseCreationIndex !== -1;\n\n const {year, month, dayOfWeek, day} = parseTimestampToDateDetails(\n this.startTimestamp\n );\n\n const formatedStartDate = `${dayOfWeek}. ${month} ${day}, ${year}`;\n return (\n <div class=\"flex items-center px-2 pb-3\">\n {isCaseCreationSession ? (\n <div class=\"session-start-icon__container mr-2 flex h-5 w-5 items-center justify-center rounded-full\">\n <atomic-icon icon={Flag} class=\"h-3 w-3\"></atomic-icon>\n </div>\n ) : null}\n\n <div class=\"flex-1 font-semibold\">{formatedStartDate}</div>\n </div>\n );\n }\n\n renderActions(actions: Array<IUserAction>) {\n return (\n <ol class=\"px-3\">\n {actions?.map((action) => (\n <UserAction action={action} bindings={this.bindings}></UserAction>\n ))}\n </ol>\n );\n }\n\n renderShowMoreActionsButton() {\n const btnClasses = 'flex items-center p-1 max-w-full';\n const label = this.bindings.i18n.t('more-actions-in-session', {\n count: this.userActionsAfterCaseCreation.length,\n });\n return (\n <div\n data-testid=\"show-more-actions-button\"\n class=\"flex items-center px-3 pb-3\"\n >\n <div class=\"flex justify-center pr-2\">\n <atomic-icon icon={ThreeDotsIcon} class=\"h-3 w-3\"></atomic-icon>\n </div>\n <div class=\"flex-1\">\n <Button\n style=\"text-primary\"\n part=\"show-more-actions-button\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.showActionsAfterCaseCreation.bind(this)}\n >\n <span class=\"truncate text-xs font-light\">{label}</span>\n </Button>\n </div>\n </div>\n );\n }\n\n public render() {\n const isShowMoreActionsButtonVisible =\n !this.areActionsAfterCaseCreationVisible &&\n !!this.userActionsAfterCaseCreation.length;\n\n return (\n <div>\n {this.renderSessionStartDate()}\n\n {this.areActionsAfterCaseCreationVisible && (\n <div data-testid=\"more-actions-section\">\n {this.renderActions(this.userActionsAfterCaseCreation)}\n </div>\n )}\n\n {isShowMoreActionsButtonVisible && this.renderShowMoreActionsButton()}\n\n {this.renderActions(this.userActionsToDisplay)}\n </div>\n );\n }\n}\n","@import '../../../../global/global.pcss';\n\n.separator {\n height: 1px;\n background-color: #e0e1dd;\n}\n","import {\n buildUserActions as buildInsightUserActions,\n UserActions as InsightUserActions,\n UserActionsState as InsightUserActionsState,\n UserSession as InsightUserSession,\n} from '@coveo/headless/insight';\nimport {Component, h, State, Prop} from '@stencil/core';\nimport ArrowDownIcon from '../../../../images/big-arrow-down.svg';\nimport ArrowUpIcon from '../../../../images/big-arrow-up.svg';\nimport {\n InitializableComponent,\n InitializeBindings,\n BindStateToController,\n} from '../../../../utils/initialization-utils';\nimport {NoItemsContainer} from '../../../common/no-items/stencil-container';\nimport {MagnifyingGlass} from '../../../common/no-items/stencil-magnifying-glass';\nimport {Button} from '../../../common/stencil-button';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\n\n/**\n * Internal component used by the `atomic-insight-user-actions-modal`. Do not use directly.\n * \n * This component displays all the actions performed by a user around the time they created a case.\n * The actions are grouped into multiple sessions, including the session during which the case was created,\n * the sessions preceding the case creation and the sessions following the case creation.\n *\n * @component\n * @example\n * <AtomicInsightUserActionsTimeline userId={'123'} caseCreationDate={'2024-08-15T10:00:00Z'} />\n *\n */\n@Component({\n tag: 'atomic-insight-user-actions-timeline',\n styleUrl: 'atomic-insight-user-actions-timeline.pcss',\n shadow: true,\n})\nexport class AtomicInsightUserActionsTimeline\n implements InitializableComponent<InsightBindings>\n{\n @InitializeBindings() public bindings!: InsightBindings;\n public userActions!: InsightUserActions;\n\n @BindStateToController('userActions')\n @State()\n public userActionsState!: InsightUserActionsState;\n public error!: Error;\n\n /**\n * The ID of the user whose actions are being displayed. For example in email format \"someone@company.com\".\n */\n @Prop() public userId!: string;\n /**\n * The date and time when the case was created. For example \"2024-01-01T00:00:00Z\"\n */\n @Prop() public ticketCreationDateTime!: string;\n /**\n * The names of custom events to exclude.\n */\n @Prop() public excludedCustomActions: string[] = [];\n\n public initialize() {\n this.userActions = buildInsightUserActions(this.bindings.engine, {\n options: {\n ticketCreationDate: this.ticketCreationDateTime,\n excludedCustomActions: this.excludedCustomActions,\n },\n });\n\n this.userActions.fetchUserActions(this.userId);\n }\n\n @State() followingSessionsAreVisible = false;\n @State() precedingSessionsAreVisible = false;\n\n private toggleFollowingSessions() {\n this.followingSessionsAreVisible = !this.followingSessionsAreVisible;\n }\n\n private togglePrecedingSessions() {\n this.precedingSessionsAreVisible = !this.precedingSessionsAreVisible;\n }\n\n private renderSessions(\n sessions: Array<InsightUserSession> | undefined,\n renderSeparator?: Function,\n testId?: string\n ) {\n return (\n <div>\n {sessions?.map(({actions, start}) => [\n <div class=\"mt-4\">\n <atomic-insight-user-actions-session\n startTimestamp={start}\n userActions={actions}\n data-testid={testId}\n ></atomic-insight-user-actions-session>\n </div>,\n renderSeparator ? renderSeparator() : null,\n ])}\n </div>\n );\n }\n\n private renderToggleFollowingSessionsButton() {\n const btnClasses = 'flex items-center text-left p-2 text-sm max-w-full';\n const iconClasses = 'h-3 w-3 mr-1';\n const label = this.followingSessionsAreVisible\n ? this.bindings.i18n.t('hide-following-sessions')\n : this.bindings.i18n.t('show-following-sessions');\n const icon = this.followingSessionsAreVisible ? ArrowDownIcon : ArrowUpIcon;\n\n return (\n <div class=\"flex justify-center p-2\">\n <Button\n style=\"text-primary\"\n part=\"toggle-following-sessions\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.toggleFollowingSessions.bind(this)}\n >\n <atomic-icon\n part=\"toggle-following-sessions-icon\"\n class={iconClasses}\n icon={icon}\n ></atomic-icon>\n <span class=\"truncate\">{label}</span>\n </Button>\n </div>\n );\n }\n\n private renderTogglePrecedingSessionsButton() {\n const btnClasses = 'flex items-center text-left p-2 text-sm max-w-full';\n const iconClasses = 'h-3 w-3 mr-1';\n const label = this.precedingSessionsAreVisible\n ? this.bindings.i18n.t('hide-preceding-sessions')\n : this.bindings.i18n.t('show-preceding-sessions');\n const icon = this.precedingSessionsAreVisible ? ArrowUpIcon : ArrowDownIcon;\n\n return (\n <div class=\"flex justify-center p-2\">\n <Button\n style=\"text-primary\"\n part=\"toggle-preceding-sessions\"\n class={btnClasses}\n ariaLabel={label}\n onClick={this.togglePrecedingSessions.bind(this)}\n >\n <atomic-icon\n part=\"toggle-preceding-sessions-icon\"\n class={iconClasses}\n icon={icon}\n ></atomic-icon>\n <span class=\"truncate\">{label}</span>\n </Button>\n </div>\n );\n }\n\n private renderFollowingSessionsSection() {\n if (!this.userActionsState.timeline?.followingSessions?.length) {\n return null;\n }\n return [\n this.renderToggleFollowingSessionsButton(),\n <div class=\"separator mx-1 rounded\"></div>,\n this.followingSessionsAreVisible\n ? this.renderSessions(\n this.userActionsState.timeline?.followingSessions,\n () => <div class=\"separator mx-1 mt-4 rounded\"></div>,\n 'following-session'\n )\n : null,\n ];\n }\n\n private renderPrecedingSessionsSection() {\n if (!this.userActionsState.timeline?.precedingSessions?.length) {\n return null;\n }\n return [\n <div class=\"separator mx-1 mt-4 rounded\"></div>,\n this.precedingSessionsAreVisible\n ? this.renderSessions(\n this.userActionsState.timeline?.precedingSessions,\n () => <div class=\"separator mx-1 mt-4 rounded\"></div>,\n 'preceding-session'\n )\n : null,\n this.renderTogglePrecedingSessionsButton(),\n ];\n }\n\n private renderTimeline() {\n return (\n <div>\n {this.renderFollowingSessionsSection()}\n <div class=\"mt-4\">\n <atomic-insight-user-actions-session\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n startTimestamp={this.userActionsState.timeline?.session?.start!}\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n userActions={this.userActionsState?.timeline?.session?.actions!}\n data-testid=\"active-session\"\n ></atomic-insight-user-actions-session>\n </div>\n {this.renderPrecedingSessionsSection()}\n </div>\n );\n }\n\n private renderNoUserActionsScreen() {\n return (\n <div class=\"my-6 py-3\" data-testid=\"user-actions-error\">\n <NoItemsContainer>\n <MagnifyingGlass />\n <div class=\"my-2 max-w-full text-center text-2xl font-light\">\n {this.bindings.i18n.t('no-user-actions-available')}\n </div>\n <div class=\"text-neutral-dark my-2 text-center text-lg\">\n {this.bindings.i18n.t('no-user-actions-associated-with-params')}\n </div>\n </NoItemsContainer>\n </div>\n );\n }\n\n render() {\n const areUserActionsAvailable = this.userActionsState.timeline?.session;\n const hasError = this.userActionsState.error;\n\n if (areUserActionsAvailable && !hasError) {\n return this.renderTimeline();\n }\n return this.renderNoUserActionsScreen();\n }\n}\n"],"mappings":"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","ignoreList":[]}