@rh-support/troubleshoot 2.7.1 → 2.7.11

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 (585) hide show
  1. package/lib/esm/components/AccountInfo/AccountSelector.d.ts.map +1 -1
  2. package/lib/esm/components/AccountInfo/AccountSelector.js +23 -33
  3. package/lib/esm/components/AccountInfo/ManagedAccountsDropdown.js +1 -1
  4. package/lib/esm/components/AccountInfo/OwnerSelector.d.ts.map +1 -1
  5. package/lib/esm/components/AccountInfo/OwnerSelector.js +90 -24
  6. package/lib/esm/components/AccountInfo/css/accountSelector.css +3 -2
  7. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.d.ts.map +1 -1
  8. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.js +47 -35
  9. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
  10. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +167 -90
  11. package/lib/esm/components/CaseEditView/ArchivedCaseBanner.d.ts +7 -0
  12. package/lib/esm/components/CaseEditView/ArchivedCaseBanner.d.ts.map +1 -0
  13. package/lib/esm/components/CaseEditView/ArchivedCaseBanner.js +12 -0
  14. package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
  15. package/lib/esm/components/CaseEditView/Case.js +103 -37
  16. package/lib/esm/components/CaseEditView/CaseDetailsAside.d.ts.map +1 -1
  17. package/lib/esm/components/CaseEditView/CaseDetailsAside.js +44 -37
  18. package/lib/esm/components/CaseEditView/CaseDetailsErrorMessage.d.ts +1 -0
  19. package/lib/esm/components/CaseEditView/CaseDetailsErrorMessage.d.ts.map +1 -1
  20. package/lib/esm/components/CaseEditView/CaseDetailsErrorMessage.js +32 -11
  21. package/lib/esm/components/CaseEditView/CaseDetailsTabs.d.ts.map +1 -1
  22. package/lib/esm/components/CaseEditView/CaseDetailsTabs.js +94 -72
  23. package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.d.ts +2 -0
  24. package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.d.ts.map +1 -1
  25. package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.js +4 -4
  26. package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.d.ts +3 -2
  27. package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.d.ts.map +1 -1
  28. package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.js +24 -11
  29. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.d.ts.map +1 -1
  30. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.js +2 -4
  31. package/lib/esm/components/CaseEditView/CaseOverview/DateTime.d.ts.map +1 -1
  32. package/lib/esm/components/CaseEditView/CaseOverview/DateTime.js +1 -1
  33. package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
  34. package/lib/esm/components/CaseEditView/CaseOverview/index.js +123 -70
  35. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.d.ts.map +1 -1
  36. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.js +240 -121
  37. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.d.ts +0 -1
  38. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.d.ts.map +1 -1
  39. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.js +6 -6
  40. package/lib/esm/components/CaseEditView/CaseSolutions/HandpicketItem.js +3 -3
  41. package/lib/esm/components/CaseEditView/CaseSubscriptionAbuseAlert.js +1 -1
  42. package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.d.ts +1 -3
  43. package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.d.ts.map +1 -1
  44. package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.js +55 -43
  45. package/lib/esm/components/CaseEditView/PDFContainer.d.ts.map +1 -1
  46. package/lib/esm/components/CaseEditView/PDFContainer.js +19 -15
  47. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.d.ts.map +1 -1
  48. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.js +33 -16
  49. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSessionModal.d.ts.map +1 -1
  50. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSessionModal.js +31 -33
  51. package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.d.ts.map +1 -1
  52. package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.js +116 -91
  53. package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreement.d.ts.map +1 -1
  54. package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreement.js +33 -16
  55. package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map +1 -1
  56. package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.js +114 -89
  57. package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.d.ts +15 -0
  58. package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.d.ts.map +1 -0
  59. package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.js +47 -0
  60. package/lib/esm/components/CaseEditView/ShareCase/TnC.d.ts.map +1 -1
  61. package/lib/esm/components/CaseEditView/Tabs/CaseActionPlan/CaseActionPlan.d.ts.map +1 -1
  62. package/lib/esm/components/CaseEditView/Tabs/CaseActionPlan/CaseActionPlan.js +9 -6
  63. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.d.ts.map +1 -1
  64. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.js +54 -48
  65. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.d.ts.map +1 -1
  66. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.js +84 -17
  67. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseHostname.d.ts.map +1 -1
  68. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseHostname.js +8 -8
  69. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInformation.d.ts.map +1 -1
  70. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInformation.js +0 -2
  71. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.d.ts.map +1 -1
  72. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.js +4 -3
  73. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenShiftPopover.js +1 -1
  74. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenShiftV3Popover.js +1 -1
  75. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.d.ts.map +1 -1
  76. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.js +137 -59
  77. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CasePhoneNumberConfirmAlert.d.ts.map +1 -1
  78. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CasePhoneNumberConfirmAlert.js +6 -9
  79. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseReferenceNumber.d.ts.map +1 -1
  80. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseReferenceNumber.js +13 -8
  81. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseSbrGroups.d.ts.map +1 -1
  82. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseSbrGroups.js +3 -1
  83. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.d.ts.map +1 -1
  84. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.js +119 -65
  85. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/SFDCUrl.d.ts.map +1 -1
  86. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/SFDCUrl.js +3 -4
  87. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/Summary.d.ts.map +1 -1
  88. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/Summary.js +22 -15
  89. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/useCustomEmails.d.ts +1 -2
  90. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/useCustomEmails.d.ts.map +1 -1
  91. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/useCustomEmails.js +6 -5
  92. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.d.ts +25 -0
  93. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.d.ts.map +1 -0
  94. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.js +102 -0
  95. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.d.ts.map +1 -1
  96. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.js +44 -28
  97. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseChat.d.ts.map +1 -1
  98. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseChat.js +7 -1
  99. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.d.ts +1 -1
  100. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.d.ts.map +1 -1
  101. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.js +158 -101
  102. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts +10 -2
  103. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts.map +1 -1
  104. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.js +294 -143
  105. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseExternalTrackerUpdate.js +1 -1
  106. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.d.ts.map +1 -1
  107. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.js +16 -16
  108. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/DiscussionItemLink.d.ts.map +1 -1
  109. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/DiscussionItemLink.js +9 -2
  110. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/JumpAndCopyLink.d.ts.map +1 -1
  111. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/JumpAndCopyLink.js +8 -1
  112. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useAttachmentUploadCompletion.d.ts +29 -0
  113. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useAttachmentUploadCompletion.d.ts.map +1 -0
  114. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useAttachmentUploadCompletion.js +29 -0
  115. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.d.ts +17 -0
  116. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.d.ts.map +1 -0
  117. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.js +62 -0
  118. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.d.ts +1 -2
  119. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.d.ts.map +1 -1
  120. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.js +14 -12
  121. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts +9 -3
  122. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
  123. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +223 -277
  124. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.d.ts.map +1 -1
  125. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.js +33 -25
  126. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.d.ts +0 -1
  127. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.d.ts.map +1 -1
  128. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.js +8 -4
  129. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +55 -42
  130. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts +36 -3
  131. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts.map +1 -1
  132. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.js +100 -248
  133. package/lib/esm/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.d.ts +4 -5
  134. package/lib/esm/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.d.ts.map +1 -1
  135. package/lib/esm/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.js +29 -12
  136. package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.d.ts.map +1 -1
  137. package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.js +32 -18
  138. package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummaryErrorMessage.d.ts.map +1 -1
  139. package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummaryErrorMessage.js +5 -7
  140. package/lib/esm/components/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.d.ts.map +1 -1
  141. package/lib/esm/components/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.js +41 -55
  142. package/lib/esm/components/CaseEditView/Tabs/RelatedTasks/RelatedTasks.d.ts.map +1 -1
  143. package/lib/esm/components/CaseEditView/Tabs/RelatedTasks/RelatedTasks.js +2 -3
  144. package/lib/esm/components/CaseInformation/AISureMessageCard.d.ts +7 -0
  145. package/lib/esm/components/CaseInformation/AISureMessageCard.d.ts.map +1 -0
  146. package/lib/esm/components/CaseInformation/AISureMessageCard.js +15 -0
  147. package/lib/esm/components/CaseInformation/CaseGroup.d.ts.map +1 -1
  148. package/lib/esm/components/CaseInformation/CaseGroup.js +177 -55
  149. package/lib/esm/components/CaseInformation/CaseInformation.d.ts.map +1 -1
  150. package/lib/esm/components/CaseInformation/CaseInformation.js +15 -14
  151. package/lib/esm/components/CaseInformation/CaseLabels.d.ts +3 -0
  152. package/lib/esm/components/CaseInformation/CaseLabels.d.ts.map +1 -0
  153. package/lib/esm/components/CaseInformation/CaseLabels.js +108 -0
  154. package/lib/esm/components/CaseInformation/ContactPhoneNumber.d.ts.map +1 -1
  155. package/lib/esm/components/CaseInformation/ContactPhoneNumber.js +108 -31
  156. package/lib/esm/components/CaseInformation/ContactPhoneNumberPopOver.d.ts.map +1 -1
  157. package/lib/esm/components/CaseInformation/ContactPhoneNumberPopOver.js +3 -3
  158. package/lib/esm/components/CaseInformation/Description.d.ts.map +1 -1
  159. package/lib/esm/components/CaseInformation/Description.js +25 -7
  160. package/lib/esm/components/CaseInformation/FileDiag.d.ts.map +1 -1
  161. package/lib/esm/components/CaseInformation/FileDiag.js +2 -5
  162. package/lib/esm/components/CaseInformation/Fts.d.ts.map +1 -1
  163. package/lib/esm/components/CaseInformation/Fts.js +41 -27
  164. package/lib/esm/components/CaseInformation/OpenCaseIssue.d.ts +1 -0
  165. package/lib/esm/components/CaseInformation/OpenCaseIssue.d.ts.map +1 -1
  166. package/lib/esm/components/CaseInformation/OpenCaseIssue.js +8 -3
  167. package/lib/esm/components/CaseInformation/Severity.d.ts.map +1 -1
  168. package/lib/esm/components/CaseInformation/Severity.js +34 -25
  169. package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
  170. package/lib/esm/components/CaseInformation/SupportLevel.js +43 -51
  171. package/lib/esm/components/CaseManagement/CaseLabelsCreate.d.ts +4 -0
  172. package/lib/esm/components/CaseManagement/CaseLabelsCreate.d.ts.map +1 -0
  173. package/lib/esm/components/CaseManagement/CaseLabelsCreate.js +141 -0
  174. package/lib/esm/components/CaseManagement/CaseLanguageSelector.d.ts.map +1 -1
  175. package/lib/esm/components/CaseManagement/CaseLanguageSelector.js +14 -17
  176. package/lib/esm/components/CaseManagement/CaseManagement.d.ts.map +1 -1
  177. package/lib/esm/components/CaseManagement/CaseManagement.js +15 -12
  178. package/lib/esm/components/CaseManagement/Cep.d.ts.map +1 -1
  179. package/lib/esm/components/CaseManagement/Cep.js +56 -51
  180. package/lib/esm/components/CaseManagement/ESSRemoteSessionCheckBox.d.ts.map +1 -1
  181. package/lib/esm/components/CaseManagement/ESSRemoteSessionCheckBox.js +50 -42
  182. package/lib/esm/components/CaseManagement/NoClusterIDReasonSelector.d.ts +2 -1
  183. package/lib/esm/components/CaseManagement/NoClusterIDReasonSelector.d.ts.map +1 -1
  184. package/lib/esm/components/CaseManagement/NoClusterIDReasonSelector.js +74 -72
  185. package/lib/esm/components/CaseManagement/OpenShiftClusterId.d.ts.map +1 -1
  186. package/lib/esm/components/CaseManagement/OpenShiftClusterId.js +14 -9
  187. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts +1 -4
  188. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts.map +1 -1
  189. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.js +136 -84
  190. package/lib/esm/components/CaseManagement/RHAssociatesSelector.d.ts.map +1 -1
  191. package/lib/esm/components/CaseManagement/RHAssociatesSelector.js +12 -8
  192. package/lib/esm/components/CaseManagement/SendNotifications/AddContactToGroupModal.d.ts.map +1 -1
  193. package/lib/esm/components/CaseManagement/SendNotifications/AddContactToGroupModal.js +8 -8
  194. package/lib/esm/components/CaseManagement/SendNotifications/AddCustomEmailToAccountModal.d.ts.map +1 -1
  195. package/lib/esm/components/CaseManagement/SendNotifications/AddCustomEmailToAccountModal.js +19 -21
  196. package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.d.ts.map +1 -1
  197. package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +15 -10
  198. package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.d.ts.map +1 -1
  199. package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.js +94 -49
  200. package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.d.ts.map +1 -1
  201. package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.js +17 -34
  202. package/lib/esm/components/ConfirmationModals/PreCaseConfirmationModals.d.ts.map +1 -1
  203. package/lib/esm/components/ConfirmationModals/PreferredSecureSupportModal.d.ts.map +1 -1
  204. package/lib/esm/components/ConfirmationModals/PreferredSecureSupportModal.js +1 -1
  205. package/lib/esm/components/Cve/CveItem.d.ts.map +1 -1
  206. package/lib/esm/components/Cve/CveItem.js +14 -11
  207. package/lib/esm/components/Cve/CveModal.d.ts.map +1 -1
  208. package/lib/esm/components/Cve/CveModal.js +12 -11
  209. package/lib/esm/components/Cve/CvePanel.d.ts.map +1 -1
  210. package/lib/esm/components/Cve/CvePanel.js +18 -10
  211. package/lib/esm/components/Cve/CveSidebar.d.ts.map +1 -1
  212. package/lib/esm/components/Cve/CveSidebar.js +9 -8
  213. package/lib/esm/components/EditDescription/EditDescription.d.ts.map +1 -1
  214. package/lib/esm/components/EditDescription/EditDescription.js +4 -2
  215. package/lib/esm/components/IdeaInformation/IdeaInformation.d.ts.map +1 -1
  216. package/lib/esm/components/IdeaInformation/IdeaInformation.js +30 -24
  217. package/lib/esm/components/ImproveCase/Hostname.d.ts.map +1 -1
  218. package/lib/esm/components/ImproveCase/Hostname.js +2 -2
  219. package/lib/esm/components/ImproveCase/KtQuestions.js +6 -6
  220. package/lib/esm/components/OpenCase/CaseTypeIcons/BugIcon.d.ts.map +1 -1
  221. package/lib/esm/components/OpenCase/CaseTypeIcons/CertificationIcon.d.ts.map +1 -1
  222. package/lib/esm/components/OpenCase/CaseTypeIcons/CustomerServiceIcon.d.ts.map +1 -1
  223. package/lib/esm/components/OpenCase/CaseTypeIcons/DocumentationIcon.d.ts.map +1 -1
  224. package/lib/esm/components/OpenCase/CaseTypeIcons/GearIcon.d.ts.map +1 -1
  225. package/lib/esm/components/OpenCase/CaseTypeIcons/IdeaIcon.d.ts.map +1 -1
  226. package/lib/esm/components/OpenCase/CaseTypeIcons/RcaIcon.d.ts.map +1 -1
  227. package/lib/esm/components/OpenCase/OpenCase.d.ts.map +1 -1
  228. package/lib/esm/components/OpenCase/OpenCase.js +2 -8
  229. package/lib/esm/components/OpenCase/SupportTypeIcons/BugIcon.d.ts.map +1 -1
  230. package/lib/esm/components/OpenCase/SupportTypeIcons/CertificationIcon.d.ts.map +1 -1
  231. package/lib/esm/components/OpenCase/SupportTypeIcons/CustomerServiceIcon.d.ts.map +1 -1
  232. package/lib/esm/components/OpenCase/SupportTypeIcons/DocumentationIcon.d.ts.map +1 -1
  233. package/lib/esm/components/OpenCase/SupportTypeIcons/GearIcon.d.ts.map +1 -1
  234. package/lib/esm/components/OpenCase/SupportTypeIcons/IdeaIcon.d.ts.map +1 -1
  235. package/lib/esm/components/OpenCase/SupportTypeIcons/RcaIcon.d.ts.map +1 -1
  236. package/lib/esm/components/OpenCase/SupportTypeSelectorPage.d.ts.map +1 -1
  237. package/lib/esm/components/OpenCase/SupportTypeSelectorPage.js +10 -15
  238. package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts +0 -1
  239. package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts.map +1 -1
  240. package/lib/esm/components/ProductSelector/AllProductsSelector.js +20 -39
  241. package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts +1 -1
  242. package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts.map +1 -1
  243. package/lib/esm/components/ProductSelector/NewProductDropdownSelector.js +67 -59
  244. package/lib/esm/components/ProductSelector/NewProductVersionSelector.d.ts.map +1 -1
  245. package/lib/esm/components/ProductSelector/NewProductVersionSelector.js +47 -56
  246. package/lib/esm/components/ProductSelector/ProductNotEntitledWarning.d.ts +3 -0
  247. package/lib/esm/components/ProductSelector/ProductNotEntitledWarning.d.ts.map +1 -0
  248. package/lib/esm/components/ProductSelector/ProductNotEntitledWarning.js +9 -0
  249. package/lib/esm/components/ProductSelector/ProductSelector.d.ts.map +1 -1
  250. package/lib/esm/components/ProductSelector/ProductSelector.js +7 -16
  251. package/lib/esm/components/ProductSelector/ProductVersionDropdownSelector.d.ts.map +1 -1
  252. package/lib/esm/components/ProductSelector/ProductVersionDropdownSelector.js +13 -5
  253. package/lib/esm/components/Recommendations/AsideResults.d.ts.map +1 -1
  254. package/lib/esm/components/Recommendations/AsideResults.js +22 -12
  255. package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts +2 -0
  256. package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts.map +1 -1
  257. package/lib/esm/components/Recommendations/ClusterRecommendationItems.js +18 -13
  258. package/lib/esm/components/Recommendations/ClusterRecommendationToast.d.ts.map +1 -1
  259. package/lib/esm/components/Recommendations/ClusterRecommendationToast.js +1 -4
  260. package/lib/esm/components/Recommendations/ClusterRecommendations.d.ts.map +1 -1
  261. package/lib/esm/components/Recommendations/ClusterRecommendations.js +3 -9
  262. package/lib/esm/components/Recommendations/ClusterRecommendationsModal.d.ts.map +1 -1
  263. package/lib/esm/components/Recommendations/ClusterRecommendationsModal.js +10 -11
  264. package/lib/esm/components/Recommendations/CriticalSolutionsToast.d.ts.map +1 -1
  265. package/lib/esm/components/Recommendations/CriticalSolutionsToast.js +1 -1
  266. package/lib/esm/components/Recommendations/EARules/EARule.d.ts.map +1 -1
  267. package/lib/esm/components/Recommendations/EARules/EARule.js +9 -4
  268. package/lib/esm/components/Recommendations/EARules/EARuleInfoAccordion.d.ts.map +1 -1
  269. package/lib/esm/components/Recommendations/EARules/EARuleInfoAccordion.js +6 -4
  270. package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.d.ts.map +1 -1
  271. package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.js +9 -9
  272. package/lib/esm/components/Recommendations/InsightsResults.d.ts.map +1 -1
  273. package/lib/esm/components/Recommendations/InsightsResults.js +9 -5
  274. package/lib/esm/components/Recommendations/InsightsRuleInfo.d.ts.map +1 -1
  275. package/lib/esm/components/Recommendations/InsightsRuleInfo.js +25 -16
  276. package/lib/esm/components/Recommendations/RecommendationFeedbackModal.d.ts.map +1 -1
  277. package/lib/esm/components/Recommendations/RecommendationFeedbackModal.js +7 -7
  278. package/lib/esm/components/Recommendations/RecommendationInfoBox.d.ts.map +1 -1
  279. package/lib/esm/components/Recommendations/RecommendationInfoBox.js +7 -7
  280. package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
  281. package/lib/esm/components/Recommendations/Recommendations.js +51 -42
  282. package/lib/esm/components/Recommendations/RecommendationsLoader.js +1 -1
  283. package/lib/esm/components/Recommendations/RulesModal.d.ts.map +1 -1
  284. package/lib/esm/components/Recommendations/RulesModal.js +10 -12
  285. package/lib/esm/components/Recommendations/WatsonxAiIcon.d.ts.map +1 -1
  286. package/lib/esm/components/Recommendations/WatsonxAiIcon.js +9 -10
  287. package/lib/esm/components/RemoteRider/RemoteRiderAcceptanceModal.d.ts.map +1 -1
  288. package/lib/esm/components/RemoteRider/RemoteRiderAcceptanceModal.js +10 -8
  289. package/lib/esm/components/RemoteRider/RemoteRiderBanner.js +1 -1
  290. package/lib/esm/components/Review/Review.d.ts.map +1 -1
  291. package/lib/esm/components/Review/Review.js +43 -28
  292. package/lib/esm/components/SessionRestore/RestoreLastSessionModal.d.ts.map +1 -1
  293. package/lib/esm/components/SessionRestore/RestoreLastSessionModal.js +7 -5
  294. package/lib/esm/components/SessionRestore/SessionRestore.d.ts +2 -0
  295. package/lib/esm/components/SessionRestore/SessionRestore.d.ts.map +1 -1
  296. package/lib/esm/components/SessionRestore/SessionRestore.js +35 -13
  297. package/lib/esm/components/SessionRestore/SessionRestoreCard.js +1 -1
  298. package/lib/esm/components/SubmitCase/SubmitCase.d.ts.map +1 -1
  299. package/lib/esm/components/SubmitCase/SubmitCase.js +34 -22
  300. package/lib/esm/components/Suggestions/EmptyTopContentSidebar.d.ts +3 -0
  301. package/lib/esm/components/Suggestions/EmptyTopContentSidebar.d.ts.map +1 -0
  302. package/lib/esm/components/Suggestions/EmptyTopContentSidebar.js +26 -0
  303. package/lib/esm/components/Suggestions/Suggestions.d.ts.map +1 -1
  304. package/lib/esm/components/Suggestions/Suggestions.js +31 -25
  305. package/lib/esm/components/Suggestions/TopContent.d.ts.map +1 -1
  306. package/lib/esm/components/Suggestions/TopContent.js +17 -17
  307. package/lib/esm/components/TroubleshootSection/AskRedHat.d.ts +9 -0
  308. package/lib/esm/components/TroubleshootSection/AskRedHat.d.ts.map +1 -0
  309. package/lib/esm/components/TroubleshootSection/AskRedHat.js +367 -0
  310. package/lib/esm/components/TroubleshootSection/CloseButton.d.ts +9 -0
  311. package/lib/esm/components/TroubleshootSection/CloseButton.d.ts.map +1 -0
  312. package/lib/esm/components/TroubleshootSection/CloseButton.js +5 -0
  313. package/lib/esm/components/TroubleshootSection/QuickResponse.d.ts +15 -0
  314. package/lib/esm/components/TroubleshootSection/QuickResponse.d.ts.map +1 -0
  315. package/lib/esm/components/TroubleshootSection/QuickResponse.js +26 -0
  316. package/lib/esm/components/TroubleshootSection/ResponseActionButton.d.ts +18 -0
  317. package/lib/esm/components/TroubleshootSection/ResponseActionButton.d.ts.map +1 -0
  318. package/lib/esm/components/TroubleshootSection/ResponseActionButton.js +28 -0
  319. package/lib/esm/components/TroubleshootSection/ResponseActions.d.ts +20 -0
  320. package/lib/esm/components/TroubleshootSection/ResponseActions.d.ts.map +1 -0
  321. package/lib/esm/components/TroubleshootSection/ResponseActions.js +54 -0
  322. package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts +20 -0
  323. package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts.map +1 -1
  324. package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +346 -27
  325. package/lib/esm/components/TroubleshootSection/UserFeedback.d.ts +13 -0
  326. package/lib/esm/components/TroubleshootSection/UserFeedback.d.ts.map +1 -0
  327. package/lib/esm/components/TroubleshootSection/UserFeedback.js +50 -0
  328. package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.d.ts +10 -0
  329. package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.d.ts.map +1 -0
  330. package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.js +50 -0
  331. package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.d.ts +9 -0
  332. package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.d.ts.map +1 -0
  333. package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.js +9 -0
  334. package/lib/esm/components/TroubleshootSection/icons/StarIcon.d.ts +9 -0
  335. package/lib/esm/components/TroubleshootSection/icons/StarIcon.d.ts.map +1 -0
  336. package/lib/esm/components/TroubleshootSection/icons/StarIcon.js +17 -0
  337. package/lib/esm/components/UpdateSeverityModal/UpdateSeverityModal.d.ts.map +1 -1
  338. package/lib/esm/components/UpdateSeverityModal/UpdateSeverityModal.js +157 -105
  339. package/lib/esm/components/shared/Constants.d.ts +1 -4
  340. package/lib/esm/components/shared/Constants.d.ts.map +1 -1
  341. package/lib/esm/components/shared/Constants.js +1 -4
  342. package/lib/esm/components/shared/Rule.d.ts.map +1 -1
  343. package/lib/esm/components/shared/Rule.js +6 -6
  344. package/lib/esm/components/shared/fileUpload/FileLister.d.ts.map +1 -1
  345. package/lib/esm/components/shared/fileUpload/FileLister.js +11 -14
  346. package/lib/esm/components/shared/fileUpload/FileUpload.js +2 -3
  347. package/lib/esm/components/shared/fileUpload/FileUploader.d.ts.map +1 -1
  348. package/lib/esm/components/shared/fileUpload/FileUploader.js +3 -1
  349. package/lib/esm/components/shared/fileUpload/WidgetFileUploader.d.ts +1 -0
  350. package/lib/esm/components/shared/fileUpload/WidgetFileUploader.d.ts.map +1 -1
  351. package/lib/esm/components/shared/fileUpload/WidgetFileUploader.js +13 -10
  352. package/lib/esm/components/shared/fileUpload/common/FileUploaderInfoIcon.js +1 -1
  353. package/lib/esm/components/shared/fileUpload/css/fileSelector.css +2 -0
  354. package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.d.ts +1 -1
  355. package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.d.ts.map +1 -1
  356. package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.js +1 -1
  357. package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.d.ts.map +1 -1
  358. package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.js +4 -4
  359. package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelectorImage.js +2 -2
  360. package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.d.ts +22 -5
  361. package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.d.ts.map +1 -1
  362. package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.js +311 -60
  363. package/lib/esm/components/shared/fileUpload/reducer/AttachmentReducer.d.ts +5 -1
  364. package/lib/esm/components/shared/fileUpload/reducer/AttachmentReducer.d.ts.map +1 -1
  365. package/lib/esm/components/shared/fileUpload/reducer/AttachmentReducer.js +36 -1
  366. package/lib/esm/components/shared/fileUpload/types/index.d.ts +5 -1
  367. package/lib/esm/components/shared/fileUpload/types/index.d.ts.map +1 -1
  368. package/lib/esm/components/shared/fileUpload/useFileUploader.d.ts +2 -2
  369. package/lib/esm/components/shared/fileUpload/useFileUploader.d.ts.map +1 -1
  370. package/lib/esm/components/shared/fileUpload/useFileUploader.js +119 -47
  371. package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts +16 -6
  372. package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts.map +1 -1
  373. package/lib/esm/components/shared/input/ContactSelectorInternal.js +133 -23
  374. package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
  375. package/lib/esm/components/shared/useIsSectionValid.js +70 -91
  376. package/lib/esm/components/shared/usePostComment.d.ts.map +1 -1
  377. package/lib/esm/components/shared/usePostComment.js +16 -28
  378. package/lib/esm/components/shared/utils.d.ts +1 -0
  379. package/lib/esm/components/shared/utils.d.ts.map +1 -1
  380. package/lib/esm/components/shared/utils.js +9 -3
  381. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
  382. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +187 -37
  383. package/lib/esm/components/wizardLayout/MainSection.d.ts.map +1 -1
  384. package/lib/esm/components/wizardLayout/MainSection.js +5 -4
  385. package/lib/esm/components/wizardLayout/NewFeatureModal.d.ts.map +1 -1
  386. package/lib/esm/components/wizardLayout/NewFeatureModal.js +6 -6
  387. package/lib/esm/components/wizardLayout/WizardAside.d.ts.map +1 -1
  388. package/lib/esm/components/wizardLayout/WizardAside.js +35 -15
  389. package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
  390. package/lib/esm/components/wizardLayout/WizardLayout.js +17 -46
  391. package/lib/esm/components/wizardLayout/WizardMain.d.ts +10 -1
  392. package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
  393. package/lib/esm/components/wizardLayout/WizardMain.js +361 -22
  394. package/lib/esm/components/wizardLayout/WizardNavigation.d.ts +8 -2
  395. package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
  396. package/lib/esm/components/wizardLayout/WizardNavigation.js +118 -75
  397. package/lib/esm/components/wizardLayout/index.d.ts +1 -0
  398. package/lib/esm/components/wizardLayout/index.d.ts.map +1 -1
  399. package/lib/esm/components/wizardLayout/index.js +1 -0
  400. package/lib/esm/constants/askRedHatMessages.d.ts +35 -0
  401. package/lib/esm/constants/askRedHatMessages.d.ts.map +1 -0
  402. package/lib/esm/constants/askRedHatMessages.js +61 -0
  403. package/lib/esm/constants/caseDetailsConstants.d.ts +15 -11
  404. package/lib/esm/constants/caseDetailsConstants.d.ts.map +1 -1
  405. package/lib/esm/constants/caseDetailsConstants.js +32 -12
  406. package/lib/esm/context/AIResponseContext.d.ts +10 -0
  407. package/lib/esm/context/AIResponseContext.d.ts.map +1 -0
  408. package/lib/esm/context/AIResponseContext.js +26 -0
  409. package/lib/esm/context/CaseContext.d.ts.map +1 -1
  410. package/lib/esm/context/RootTroubleshootProvider.d.ts.map +1 -1
  411. package/lib/esm/context/RootTroubleshootProvider.js +8 -6
  412. package/lib/esm/css/AskRedHat.css +495 -0
  413. package/lib/esm/css/app.css +54 -17
  414. package/lib/esm/css/case.css +499 -37
  415. package/lib/esm/css/productSelector.css +5 -1
  416. package/lib/esm/css/results.css +2 -2
  417. package/lib/esm/graphql/index.d.ts +4 -0
  418. package/lib/esm/graphql/index.d.ts.map +1 -0
  419. package/lib/esm/graphql/index.js +3 -0
  420. package/lib/esm/graphql/mutations/createRMECaseEscalation.d.ts +2 -0
  421. package/lib/esm/graphql/mutations/createRMECaseEscalation.d.ts.map +1 -0
  422. package/lib/esm/graphql/mutations/createRMECaseEscalation.js +24 -0
  423. package/lib/esm/graphql/mutations/index.d.ts +2 -0
  424. package/lib/esm/graphql/mutations/index.d.ts.map +1 -0
  425. package/lib/esm/graphql/mutations/index.js +1 -0
  426. package/lib/esm/graphql/queries/getEscalationDetails.d.ts +2 -0
  427. package/lib/esm/graphql/queries/getEscalationDetails.d.ts.map +1 -0
  428. package/lib/esm/graphql/queries/getEscalationDetails.js +36 -0
  429. package/lib/esm/graphql/queries/index.d.ts +2 -0
  430. package/lib/esm/graphql/queries/index.d.ts.map +1 -0
  431. package/lib/esm/graphql/queries/index.js +1 -0
  432. package/lib/esm/graphql/schemas/escalation.d.ts +66 -0
  433. package/lib/esm/graphql/schemas/escalation.d.ts.map +1 -0
  434. package/lib/esm/graphql/schemas/escalation.js +1 -0
  435. package/lib/esm/graphql/schemas/index.d.ts +2 -0
  436. package/lib/esm/graphql/schemas/index.d.ts.map +1 -0
  437. package/lib/esm/graphql/schemas/index.js +1 -0
  438. package/lib/esm/hooks/useAB.d.ts +23 -0
  439. package/lib/esm/hooks/useAB.d.ts.map +1 -0
  440. package/lib/esm/hooks/useAB.js +75 -0
  441. package/lib/esm/hooks/useARHResponse.d.ts +15 -0
  442. package/lib/esm/hooks/useARHResponse.d.ts.map +1 -0
  443. package/lib/esm/hooks/useARHResponse.js +103 -0
  444. package/lib/esm/hooks/useCaseComments/caseCommentsQuery.d.ts +4 -0
  445. package/lib/esm/hooks/useCaseComments/caseCommentsQuery.d.ts.map +1 -0
  446. package/lib/esm/hooks/useCaseComments/caseCommentsQuery.js +57 -0
  447. package/lib/esm/hooks/useCaseComments/index.d.ts +8 -0
  448. package/lib/esm/hooks/useCaseComments/index.d.ts.map +1 -0
  449. package/lib/esm/hooks/useCaseComments/index.js +5 -0
  450. package/lib/esm/hooks/useCaseComments/mapCaseComment.d.ts +25 -0
  451. package/lib/esm/hooks/useCaseComments/mapCaseComment.d.ts.map +1 -0
  452. package/lib/esm/hooks/useCaseComments/mapCaseComment.js +75 -0
  453. package/lib/esm/hooks/useCaseComments/types.d.ts +93 -0
  454. package/lib/esm/hooks/useCaseComments/types.d.ts.map +1 -0
  455. package/lib/esm/hooks/useCaseComments/types.js +1 -0
  456. package/lib/esm/hooks/useCaseComments/useCaseComments.d.ts +26 -0
  457. package/lib/esm/hooks/useCaseComments/useCaseComments.d.ts.map +1 -0
  458. package/lib/esm/hooks/useCaseComments/useCaseComments.js +116 -0
  459. package/lib/esm/hooks/useCaseComments/useCreateCaseComment.d.ts +19 -0
  460. package/lib/esm/hooks/useCaseComments/useCreateCaseComment.d.ts.map +1 -0
  461. package/lib/esm/hooks/useCaseComments/useCreateCaseComment.js +33 -0
  462. package/lib/esm/hooks/useCaseGroupUiState.d.ts +3 -0
  463. package/lib/esm/hooks/useCaseGroupUiState.d.ts.map +1 -0
  464. package/lib/esm/hooks/useCaseGroupUiState.js +10 -0
  465. package/lib/esm/hooks/useCaseHistory.d.ts +26 -0
  466. package/lib/esm/hooks/useCaseHistory.d.ts.map +1 -0
  467. package/lib/esm/hooks/useCaseHistory.js +107 -0
  468. package/lib/esm/hooks/useCaseLabelLinkMutations.d.ts +23 -0
  469. package/lib/esm/hooks/useCaseLabelLinkMutations.d.ts.map +1 -0
  470. package/lib/esm/hooks/useCaseLabelLinkMutations.js +84 -0
  471. package/lib/esm/hooks/useCaseUpdateErrorMessage.d.ts +9 -1
  472. package/lib/esm/hooks/useCaseUpdateErrorMessage.d.ts.map +1 -1
  473. package/lib/esm/hooks/useCaseUpdateErrorMessage.js +108 -11
  474. package/lib/esm/hooks/useResetCaseCreate.d.ts.map +1 -1
  475. package/lib/esm/hooks/useResetCaseCreate.js +18 -11
  476. package/lib/esm/hooks/useS3Upload.d.ts +5 -4
  477. package/lib/esm/hooks/useS3Upload.d.ts.map +1 -1
  478. package/lib/esm/hooks/useS3Upload.js +28 -30
  479. package/lib/esm/hooks/useWizard.d.ts +14 -0
  480. package/lib/esm/hooks/useWizard.d.ts.map +1 -1
  481. package/lib/esm/hooks/useWizard.js +33 -11
  482. package/lib/esm/i18n/template-de.d.ts +82 -4
  483. package/lib/esm/i18n/template-de.d.ts.map +1 -1
  484. package/lib/esm/i18n/template-de.js +82 -4
  485. package/lib/esm/i18n/template-es.d.ts +81 -3
  486. package/lib/esm/i18n/template-es.d.ts.map +1 -1
  487. package/lib/esm/i18n/template-es.js +81 -3
  488. package/lib/esm/i18n/template-fr.d.ts +81 -3
  489. package/lib/esm/i18n/template-fr.d.ts.map +1 -1
  490. package/lib/esm/i18n/template-fr.js +81 -3
  491. package/lib/esm/i18n/template-it.d.ts +81 -3
  492. package/lib/esm/i18n/template-it.d.ts.map +1 -1
  493. package/lib/esm/i18n/template-it.js +81 -3
  494. package/lib/esm/i18n/template-jp.d.ts +81 -3
  495. package/lib/esm/i18n/template-jp.d.ts.map +1 -1
  496. package/lib/esm/i18n/template-jp.js +81 -3
  497. package/lib/esm/i18n/template-ko.d.ts +81 -3
  498. package/lib/esm/i18n/template-ko.d.ts.map +1 -1
  499. package/lib/esm/i18n/template-ko.js +81 -3
  500. package/lib/esm/i18n/template-pt.d.ts +81 -3
  501. package/lib/esm/i18n/template-pt.d.ts.map +1 -1
  502. package/lib/esm/i18n/template-pt.js +81 -3
  503. package/lib/esm/i18n/template-ru.d.ts +47 -3
  504. package/lib/esm/i18n/template-ru.d.ts.map +1 -1
  505. package/lib/esm/i18n/template-ru.js +47 -3
  506. package/lib/esm/i18n/template-zh.d.ts +59 -3
  507. package/lib/esm/i18n/template-zh.d.ts.map +1 -1
  508. package/lib/esm/i18n/template-zh.js +59 -3
  509. package/lib/esm/index.d.ts.map +1 -1
  510. package/lib/esm/index.js +2 -0
  511. package/lib/esm/models/cache.d.ts +0 -2
  512. package/lib/esm/models/cache.d.ts.map +1 -1
  513. package/lib/esm/models/caseHistory.d.ts +86 -0
  514. package/lib/esm/models/caseHistory.d.ts.map +1 -0
  515. package/lib/esm/models/caseHistory.js +1 -0
  516. package/lib/esm/reducers/AIResponseConstNTypes.d.ts +90 -0
  517. package/lib/esm/reducers/AIResponseConstNTypes.d.ts.map +1 -0
  518. package/lib/esm/reducers/AIResponseConstNTypes.js +33 -0
  519. package/lib/esm/reducers/AIResponseReducer.d.ts +14 -0
  520. package/lib/esm/reducers/AIResponseReducer.d.ts.map +1 -0
  521. package/lib/esm/reducers/AIResponseReducer.js +80 -0
  522. package/lib/esm/reducers/CaseConstNTypes.d.ts +129 -9
  523. package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
  524. package/lib/esm/reducers/CaseConstNTypes.js +39 -10
  525. package/lib/esm/reducers/CaseDetailsPageReducer.d.ts +7 -5
  526. package/lib/esm/reducers/CaseDetailsPageReducer.d.ts.map +1 -1
  527. package/lib/esm/reducers/CaseDetailsPageReducer.js +61 -26
  528. package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts +11 -10
  529. package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts.map +1 -1
  530. package/lib/esm/reducers/CaseDiscussionTabReducer.js +95 -64
  531. package/lib/esm/reducers/CaseHelpers.d.ts +26 -7
  532. package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
  533. package/lib/esm/reducers/CaseHelpers.js +150 -27
  534. package/lib/esm/reducers/CaseOverviewReducer.d.ts +3 -1
  535. package/lib/esm/reducers/CaseOverviewReducer.d.ts.map +1 -1
  536. package/lib/esm/reducers/CaseOverviewReducer.js +7 -5
  537. package/lib/esm/reducers/CaseReducer.d.ts +59 -12
  538. package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
  539. package/lib/esm/reducers/CaseReducer.js +311 -95
  540. package/lib/esm/reducers/ClusterRecommendationsReducer.d.ts.map +1 -1
  541. package/lib/esm/reducers/RecommendationsReducer.d.ts.map +1 -1
  542. package/lib/esm/reducers/RecommendationsReducer.js +16 -19
  543. package/lib/esm/reducers/RouteConstNTypes.d.ts +1 -2
  544. package/lib/esm/reducers/RouteConstNTypes.d.ts.map +1 -1
  545. package/lib/esm/reducers/RouteConstNTypes.js +4 -1
  546. package/lib/esm/reducers/RouteReducer.d.ts +2 -2
  547. package/lib/esm/reducers/RouteReducer.d.ts.map +1 -1
  548. package/lib/esm/reducers/RouteReducer.js +1 -1
  549. package/lib/esm/reducers/RulesReducer.d.ts +11 -4
  550. package/lib/esm/reducers/RulesReducer.d.ts.map +1 -1
  551. package/lib/esm/reducers/RulesReducer.js +6 -1
  552. package/lib/esm/reducers/SessionRestoreReducer.d.ts +4 -3
  553. package/lib/esm/reducers/SessionRestoreReducer.d.ts.map +1 -1
  554. package/lib/esm/reducers/SessionRestoreReducer.js +51 -17
  555. package/lib/esm/reducers/TopContentReducer.d.ts.map +1 -1
  556. package/lib/esm/reducers/TopContentReducer.js +1 -1
  557. package/lib/esm/scss/_main.scss +295 -117
  558. package/lib/esm/scss/_pf-overrides.scss +269 -162
  559. package/lib/esm/utils/TimelineUtils.d.ts +41 -0
  560. package/lib/esm/utils/TimelineUtils.d.ts.map +1 -0
  561. package/lib/esm/utils/TimelineUtils.js +135 -0
  562. package/lib/esm/utils/caseDetailsCacheUtils.d.ts.map +1 -1
  563. package/lib/esm/utils/caseDetailsCacheUtils.js +1 -0
  564. package/lib/esm/utils/caseHistoryUtils.d.ts +85 -0
  565. package/lib/esm/utils/caseHistoryUtils.d.ts.map +1 -0
  566. package/lib/esm/utils/caseHistoryUtils.js +200 -0
  567. package/lib/esm/utils/caseOpenshiftClusterIdUtils.d.ts +1 -2
  568. package/lib/esm/utils/caseOpenshiftClusterIdUtils.d.ts.map +1 -1
  569. package/lib/esm/utils/caseOpenshiftClusterIdUtils.js +4 -4
  570. package/lib/esm/utils/caseSeverityFtsGraphQLUtils.d.ts +6 -0
  571. package/lib/esm/utils/caseSeverityFtsGraphQLUtils.d.ts.map +1 -0
  572. package/lib/esm/utils/caseSeverityFtsGraphQLUtils.js +26 -0
  573. package/lib/esm/utils/caseUtils.d.ts.map +1 -1
  574. package/lib/esm/utils/engagementUtils.d.ts +3 -0
  575. package/lib/esm/utils/engagementUtils.d.ts.map +1 -0
  576. package/lib/esm/utils/engagementUtils.js +16 -0
  577. package/lib/esm/utils/linkifyHtmlTextNodes.d.ts +8 -0
  578. package/lib/esm/utils/linkifyHtmlTextNodes.d.ts.map +1 -0
  579. package/lib/esm/utils/linkifyHtmlTextNodes.js +37 -0
  580. package/lib/esm/utils/remoteRiderUtils.d.ts.map +1 -1
  581. package/lib/esm/utils/visitedResourcesUtils.d.ts +31 -0
  582. package/lib/esm/utils/visitedResourcesUtils.d.ts.map +1 -0
  583. package/lib/esm/utils/visitedResourcesUtils.js +99 -0
  584. package/package.json +21 -26
  585. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.css +0 -0
@@ -7,126 +7,213 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { caseAttachments } from '@cee-eng/hydrajs';
11
- import { MenuToggle, Select, SelectList, SelectOption } from '@patternfly/react-core';
10
+ import { useApolloClient } from '@apollo/client/react';
11
+ import { Button, MenuToggle, Select, SelectList, SelectOption } from '@patternfly/react-core';
12
12
  import { AlertMessage, AlertType, ErrorBoundary, LoadingIndicator, ToastNotification } from '@rh-support/components';
13
13
  import { useGlobalStateContext } from '@rh-support/react-context';
14
14
  import { AbilityContext, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
15
- import { dtmTrackEventCaseStepEncountered, getDropdownBtnPlaceholder, getUrlParsedParams, scrollIntoView, } from '@rh-support/utils';
15
+ import { downloadCaseAttachment, dtmTrackEventCaseStepEncountered, getApiResourceObject, getDropdownBtnPlaceholder, getUrlParsedParams, scrollIntoView, } from '@rh-support/utils';
16
16
  import cloneDeep from 'lodash/cloneDeep';
17
17
  import filter from 'lodash/filter';
18
18
  import findIndex from 'lodash/findIndex';
19
19
  import isEmpty from 'lodash/isEmpty';
20
20
  import isEqual from 'lodash/isEqual';
21
+ import orderBy from 'lodash/orderBy';
21
22
  import Mark from 'mark.js';
22
- import React, { useContext, useEffect, useRef, useState } from 'react';
23
+ import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
23
24
  import { Trans, useTranslation } from 'react-i18next';
25
+ import { useInView } from 'react-intersection-observer';
24
26
  import { useLocation } from 'react-router-dom';
25
27
  import { AutoSizer, CellMeasurer, CellMeasurerCache, List, WindowScroller } from 'react-virtualized';
26
28
  import { useCaseDispatch, useCaseSelector } from '../../../../context/CaseContext';
27
29
  import { useCaseDetailsPageDispatchContext, useCaseDetailsPageStateContext, } from '../../../../context/CaseDetailsPageContext';
28
30
  import { useCaseDiscussionTabDispatchContext, useCaseDiscussionTabStateContext, } from '../../../../context/CaseDiscussionTabContext';
29
- import { clearReplyComment, discussionSortOrderConst, DiscussionType, setCommentText, setDiscussions, setFilter, setSort, updateAttachment, updateAttacmentsAfterRemoval, updateCommentStateFeedback, updateDiscussionStateAttachments, updateDiscussionStateComments, } from '../../../../reducers/CaseDiscussionTabReducer';
31
+ import { CaseDetailsConstants } from '../../../../reducers/CaseDetailsPageReducer';
32
+ import { clearReplyingTo, discussionSortOrderConst, DiscussionType, setDiscussions, setFilter, setReplyingTo, setSort, updateAttachment, updateAttacmentsAfterRemoval, updateDiscussionStateAttachments, } from '../../../../reducers/CaseDiscussionTabReducer';
30
33
  import { setCaseState } from '../../../../reducers/CaseReducer';
31
34
  import { AttachmentContextProvider } from '../../../shared/fileUpload/reducer/AttachmentReducerContext';
32
35
  import { PDFContext } from '../../PDFContainer';
33
36
  import CaseAttachment from './CaseAttachment';
34
- import CaseChat from './CaseChat';
35
37
  import CaseComments from './CaseComments';
36
- import CaseExternalTrackerUpdate from './CaseExternalTrackerUpdate';
38
+ // import CaseExternalTrackerUpdate from './CaseExternalTrackerUpdate';
37
39
  import { CommentSearch } from './CommentSearch';
38
40
  import { PostComment } from './PostComment';
41
+ /** Threshold above which comments render in a virtualized (windowed) list for performance. */
39
42
  const VC_MINIMUM_COMMENT = 150;
40
- let cellMeasureCache = new CellMeasurerCache({
41
- fixedWidth: true,
42
- defaultHeight: 100,
43
- });
44
43
  export default function CaseDiscussion(props) {
44
+ var _a;
45
45
  const { t } = useTranslation();
46
- const { isPostingRemoteRequestCommentCompleted, screenSessionRequested, product, version } = useCaseSelector((state) => ({
46
+ const { isPostingRemoteRequestCommentCompleted, product, version, caseSalesforceId } = useCaseSelector((state) => ({
47
47
  isPostingRemoteRequestCommentCompleted: state.isPostingRemoteRequestCommentCompleted,
48
- screenSessionRequested: state.caseDetails.screenSessionRequested,
49
48
  product: state.caseDetails.product,
50
49
  version: state.caseDetails.version,
50
+ caseSalesforceId: state.caseDetails.id,
51
51
  }), isEqual);
52
52
  const urlSearchParams = getUrlParsedParams(useLocation().search);
53
- const discussionIdFromUrl = ((urlSearchParams === null || urlSearchParams === void 0 ? void 0 : urlSearchParams.commentId) ||
54
- (urlSearchParams === null || urlSearchParams === void 0 ? void 0 : urlSearchParams.externalTrackerId) ||
55
- (urlSearchParams === null || urlSearchParams === void 0 ? void 0 : urlSearchParams.attachmentId) ||
56
- (urlSearchParams === null || urlSearchParams === void 0 ? void 0 : urlSearchParams.chatId));
53
+ const discussionIdFromUrl = ((urlSearchParams === null || urlSearchParams === void 0 ? void 0 : urlSearchParams.commentId) || (urlSearchParams === null || urlSearchParams === void 0 ? void 0 : urlSearchParams.attachmentId));
57
54
  const activeDiscussionElementRef = useRef(null);
58
- const { sort, discussionFiltersListState, allDiscussions, replyCommentText, replyCommentCreator } = useCaseDiscussionTabStateContext();
59
- const { globalMetadataState: { loggedInUsersAccount, navBarRef }, } = useGlobalStateContext();
55
+ const { sort, discussionFiltersListState, replyingToAuthor, replyingToTimestamp } = useCaseDiscussionTabStateContext();
56
+ const { globalMetadataState: { navBarRef, loggedInUsersAccount }, } = useGlobalStateContext();
60
57
  const dispatchDiscussion = useCaseDiscussionTabDispatchContext();
61
- const caseDispatch = useCaseDispatch();
62
- const { caseDetailsPageState: { caseFeedbacksHydra, caseAttachmentHydra, caseExternalTrackersUpdate }, } = useCaseDetailsPageStateContext();
58
+ const { caseDetailsPageState: { caseAttachmentHydra }, } = useCaseDetailsPageStateContext();
63
59
  const dispatchCaseDetailsHydraAttachments = useCaseDetailsPageDispatchContext();
64
- const { caseNumber } = props;
65
- const activeElementId = useRef(null);
60
+ const caseDispatch = useCaseDispatch();
61
+ const apolloClient = useApolloClient();
66
62
  const ability = useContext(AbilityContext);
67
- const canSeeExternalTracker = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_EXTERNAL_TRACKER);
68
- const canSeeChat = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_CHAT);
69
63
  const canSeeAttachments = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_SEE_ATTACHMENTS);
64
+ const { caseNumber } = props;
65
+ const activeElementId = useRef(null);
70
66
  const listRef = React.useRef(null);
71
67
  const windowScrollerRef = React.useRef(null);
72
68
  const commentRef = React.useRef(null);
69
+ const cellMeasureCacheRef = useRef(new CellMeasurerCache({ fixedWidth: true, defaultHeight: 100 }));
73
70
  const { isExportingPDF } = useContext(PDFContext);
71
+ const { ref: sentinelRef, inView } = useInView({ threshold: 0, rootMargin: '200px' });
74
72
  const [searchResult, setSearchResult] = useState([]);
75
73
  const [searchCommentText, setSearchCommentText] = useState('');
76
74
  const [commentIndex, setCommentIndex] = useState(-1);
77
75
  const [isCommentSearchCleared, setIsCommentSearchCleared] = useState(false);
78
76
  const [isJumpToCommentClicked, setJumpToCommentClicked] = useState(false);
79
77
  const [canUpdateScrollTop, setCanUpdateScrollTop] = useState(true);
80
- const [replyingToPrivateComment, setReplyingToPrivateComment] = useState(null);
81
- // used for tracking comment section width changes
82
78
  const [discussionSectionWidth, setDiscussionSectionWidth] = useState(null);
79
+ const [debouncedShowSkeleton, setDebouncedShowSkeleton] = useState(false);
83
80
  const [isOpen, setIsOpen] = useState(false);
84
81
  const [selectedFilterItems, setSelectedFilterItems] = useState([]);
85
82
  const [isSortOpen, setIsSortOpen] = useState(false);
86
83
  const [sortSelected, setSortSelected] = useState('Select a value');
87
- if (props.isDiscussionTab) {
88
- cellMeasureCache = new CellMeasurerCache({
89
- fixedWidth: true,
90
- defaultHeight: 100,
84
+ const { hasNextPage, isLoadingMore, loadMoreError, fetchMore } = props;
85
+ const isCommentFilterActive = discussionFiltersListState.some((f) => (f.value === DiscussionType.COMMENT || f.value === DiscussionType.ALL) && f.isSelected);
86
+ useEffect(() => {
87
+ console.log('[CaseDiscussion] fetchMore useEffect', {
88
+ inView,
89
+ hasNextPage,
90
+ isLoadingMore,
91
+ loadMoreError,
92
+ hasFetchMore: !!fetchMore,
93
+ isCommentFilterActive,
94
+ willFetch: inView && hasNextPage && !isLoadingMore && !loadMoreError && !!fetchMore && isCommentFilterActive,
91
95
  });
96
+ if (inView && hasNextPage && !isLoadingMore && !loadMoreError && fetchMore && isCommentFilterActive) {
97
+ fetchMore();
98
+ }
99
+ }, [inView, hasNextPage, isLoadingMore, loadMoreError, fetchMore, isCommentFilterActive]);
100
+ useEffect(() => {
101
+ if (props.loadMoreError) {
102
+ setDebouncedShowSkeleton(false);
103
+ return;
104
+ }
105
+ if (props.isLoadingMore && props.hasNextPage) {
106
+ const timer = setTimeout(() => setDebouncedShowSkeleton(true), 300);
107
+ return () => clearTimeout(timer);
108
+ }
109
+ setDebouncedShowSkeleton(false);
110
+ }, [props.isLoadingMore, props.hasNextPage, props.loadMoreError]);
111
+ const cellMeasureCache = cellMeasureCacheRef.current;
112
+ const allDiscussions = useMemo(() => {
113
+ var _a, _b, _c;
114
+ const allComments = (props.caseComments || [])
115
+ .filter((comment) => comment.isDraft === false)
116
+ .map((comment) => ({
117
+ item: Object.assign(Object.assign({}, comment), { isPublic: comment.isPublic === undefined ? true : comment.isPublic, last_modified_date: comment.lastModifiedDate || comment.createdDate }),
118
+ discussionType: DiscussionType.COMMENT,
119
+ last_modified_date: comment.lastModifiedDate || comment.createdDate,
120
+ }));
121
+ let allAttachments = canSeeAttachments
122
+ ? (caseAttachmentHydra.data || [])
123
+ .filter((attachment) => (attachment === null || attachment === void 0 ? void 0 : attachment.lastModifiedDate) || (attachment === null || attachment === void 0 ? void 0 : attachment.createdDate))
124
+ .map((attachment) => ({
125
+ item: Object.assign(Object.assign({}, attachment), { lastModifiedDate: attachment.lastModifiedDate || attachment.createdDate }),
126
+ last_modified_date: (attachment.lastModifiedDate || attachment.createdDate),
127
+ discussionType: DiscussionType.ATTACHMENT,
128
+ }))
129
+ : [];
130
+ if (props.hasNextPage && allComments.length > 0) {
131
+ const sortOrder = (_a = sort === null || sort === void 0 ? void 0 : sort.sortOrder) !== null && _a !== void 0 ? _a : 'desc';
132
+ const commentDates = allComments.map((c) => c.last_modified_date).filter(Boolean);
133
+ if (commentDates.length > 0) {
134
+ if (sortOrder === 'desc') {
135
+ const oldestLoaded = commentDates.reduce((min, d) => (d < min ? d : min));
136
+ allAttachments = allAttachments.filter((a) => a.last_modified_date >= oldestLoaded);
137
+ }
138
+ else {
139
+ const newestLoaded = commentDates.reduce((max, d) => (d > max ? d : max));
140
+ allAttachments = allAttachments.filter((a) => a.last_modified_date <= newestLoaded);
141
+ }
142
+ }
143
+ }
144
+ const merged = [...allComments, ...allAttachments];
145
+ return orderBy(merged, ['last_modified_date', (d) => { var _a; return (_a = d.item.id) !== null && _a !== void 0 ? _a : ''; }], [(_b = sort === null || sort === void 0 ? void 0 : sort.sortOrder) !== null && _b !== void 0 ? _b : 'desc', (_c = sort === null || sort === void 0 ? void 0 : sort.sortOrder) !== null && _c !== void 0 ? _c : 'desc']);
146
+ }, [props.caseComments, caseAttachmentHydra.data, canSeeAttachments, sort, props.hasNextPage]);
147
+ const usedPaginationRef = useRef(false);
148
+ if (props.hasNextPage || props.isLoadingMore) {
149
+ usedPaginationRef.current = true;
92
150
  }
151
+ const shouldRenderRVComponent = !isExportingPDF && allDiscussions.length > VC_MINIMUM_COMMENT && !usedPaginationRef.current;
152
+ const list = discussionFiltersListState.filter((f) => f.canSee);
93
153
  const computeFilterComment = () => {
94
154
  return filter(allDiscussions, (discussion) => {
95
- const activeFilter = discussionFiltersListState.filter((filter) => filter.value === discussion.discussionType && filter.isSelected);
155
+ const activeFilter = discussionFiltersListState.filter((f) => f.value === discussion.discussionType && f.isSelected);
96
156
  return activeFilter.length === 1 ? discussion : null;
97
157
  });
98
158
  };
99
- const shouldRenderRVComponent = !isExportingPDF && allDiscussions.length > VC_MINIMUM_COMMENT;
100
- // filter comments on the basis of filterBy and search api
101
159
  const computeFilteredComments = computeFilterComment();
102
160
  const comuteSearchedComments = searchResult.length === 0
103
161
  ? cloneDeep(computeFilteredComments)
104
162
  : filter([...computeFilteredComments], (o) => { var _a; return searchResult.indexOf((_a = o === null || o === void 0 ? void 0 : o.item) === null || _a === void 0 ? void 0 : _a.id) !== -1; });
105
- const isSearchResultEmpty = !isEmpty(searchCommentText) && (searchResult.length === 0 || comuteSearchedComments.length === 0);
163
+ const isRefetching = props.commentsLoading && !props.isLoadingMore;
164
+ const isSearchResultEmpty = !isRefetching &&
165
+ !isEmpty(searchCommentText) &&
166
+ (searchResult.length === 0 || comuteSearchedComments.length === 0);
167
+ // DEBUG: track every render of CaseDiscussion
168
+ console.log('[CaseDiscussion] render', {
169
+ commentsLoading: props.commentsLoading,
170
+ isLoadingMore: props.isLoadingMore,
171
+ hasNextPage: props.hasNextPage,
172
+ loadMoreError: props.loadMoreError,
173
+ isRefetching,
174
+ isSearchResultEmpty,
175
+ allDiscussionsLen: allDiscussions.length,
176
+ filteredLen: computeFilteredComments.length,
177
+ searchedLen: comuteSearchedComments.length,
178
+ caseCommentsLen: (_a = props.caseComments) === null || _a === void 0 ? void 0 : _a.length,
179
+ inView,
180
+ isCommentFilterActive,
181
+ });
106
182
  const setVRCommentIndex = (cId) => {
107
183
  setCommentIndex(cId < 0 ? 0 : cId);
108
184
  setJumpToCommentClicked(true);
109
185
  isCommentSearchCleared && setIsCommentSearchCleared(false);
110
186
  };
187
+ const canFetchNextPage = hasNextPage && !isLoadingMore && !loadMoreError && fetchMore && isCommentFilterActive;
188
+ const fetchUntilDeepLinkFound = useCallback(() => {
189
+ if (!discussionIdFromUrl || !canFetchNextPage)
190
+ return;
191
+ const found = comuteSearchedComments.some((discussion) => discussion.item.id === discussionIdFromUrl);
192
+ if (!found)
193
+ fetchMore();
194
+ }, [discussionIdFromUrl, canFetchNextPage, comuteSearchedComments, fetchMore]);
111
195
  useEffect(() => {
112
196
  var _a, _b;
113
197
  isCommentSearchCleared && setIsCommentSearchCleared(false);
114
198
  if (!discussionIdFromUrl ||
115
199
  (activeElementId && activeElementId.current === discussionIdFromUrl) ||
116
200
  (allDiscussions || []).length === 0) {
201
+ fetchUntilDeepLinkFound();
202
+ return;
203
+ }
204
+ const targetIndex = findIndex([...comuteSearchedComments], (discussion) => discussion.item.id === discussionIdFromUrl);
205
+ if (targetIndex < 0) {
206
+ fetchUntilDeepLinkFound();
117
207
  return;
118
208
  }
119
209
  activeElementId.current = discussionIdFromUrl;
120
210
  if (allDiscussions.length > VC_MINIMUM_COMMENT) {
121
- const commentIndex = findIndex([...comuteSearchedComments], (discussion) => discussion.item.id === discussionIdFromUrl);
122
- setVRCommentIndex(commentIndex);
123
- // to fix scrolling to comment index when scrollTop value from window scroller is 0
124
- // initial list items
125
- if (0 <= commentIndex && commentIndex <= 3) {
211
+ setVRCommentIndex(targetIndex);
212
+ if (targetIndex <= 3) {
126
213
  const offset = 80;
127
214
  const scrollTopValue = ((_a = windowScrollerRef === null || windowScrollerRef === void 0 ? void 0 : windowScrollerRef.current) === null || _a === void 0 ? void 0 : _a._positionFromTop) - offset;
128
215
  const scrollLeftValue = (_b = windowScrollerRef === null || windowScrollerRef === void 0 ? void 0 : windowScrollerRef.current) === null || _b === void 0 ? void 0 : _b._positionFromLeft;
129
- window.scrollTo({
216
+ globalThis.scrollTo({
130
217
  top: scrollTopValue,
131
218
  left: scrollLeftValue,
132
219
  behavior: 'smooth',
@@ -144,57 +231,51 @@ export default function CaseDiscussion(props) {
144
231
  });
145
232
  }
146
233
  // eslint-disable-next-line react-hooks/exhaustive-deps
147
- }, [discussionIdFromUrl, allDiscussions, activeElementId.current]);
234
+ }, [discussionIdFromUrl, comuteSearchedComments.length]);
235
+ // Intercept "Back to Top" primer footer link to prevent navigation away from case details
236
+ useEffect(() => {
237
+ const onClick = (e) => {
238
+ const anchor = e.target.closest('a.btn_slideto[href="#masthead"]');
239
+ if (anchor) {
240
+ e.preventDefault();
241
+ globalThis.scrollTo({ top: 0, behavior: 'smooth' });
242
+ }
243
+ };
244
+ document.addEventListener('click', onClick, true);
245
+ return () => document.removeEventListener('click', onClick, true);
246
+ }, []);
247
+ useEffect(() => {
248
+ if (isExportingPDF)
249
+ return;
250
+ setDiscussions(dispatchDiscussion, props.caseComments, [], caseAttachmentHydra.data, [], [], discussionFiltersListState, false, false, canSeeAttachments, sort);
251
+ // eslint-disable-next-line react-hooks/exhaustive-deps
252
+ }, [props.caseComments, caseAttachmentHydra, canSeeAttachments, sort]);
148
253
  useEffect(() => {
149
254
  if (!caseAttachmentHydra.isFetching && caseAttachmentHydra.isError) {
150
- ToastNotification.addDangerMessage(t(`There was an error loading attachments.`));
255
+ ToastNotification.addDangerMessage(t('There was an error loading attachments.'));
151
256
  }
152
- if (!caseExternalTrackersUpdate.isFetching && caseExternalTrackersUpdate.isError) {
153
- ToastNotification.addDangerMessage(t(`There was an error loading external trackers.`));
154
- }
155
- if (!caseFeedbacksHydra.isFetching && caseFeedbacksHydra.isError) {
156
- console.log(`There was an error loading feedback.`);
257
+ }, [caseAttachmentHydra.isFetching, caseAttachmentHydra.isError, t]);
258
+ const onCommentAdded = () => __awaiter(this, void 0, void 0, function* () {
259
+ try {
260
+ yield props.refetchComments();
157
261
  }
158
- // Attachments, feedbacks and external tracker updates apis are called in advance
159
- if (!isExportingPDF &&
160
- !caseAttachmentHydra.isFetching &&
161
- !caseFeedbacksHydra.isFetching &&
162
- !caseExternalTrackersUpdate.isFetching) {
163
- setDiscussions(dispatchDiscussion, props.caseComments, props.caseChats, caseAttachmentHydra.data, caseFeedbacksHydra.data, caseExternalTrackersUpdate.data, discussionFiltersListState, canSeeExternalTracker, canSeeChat, canSeeAttachments);
262
+ catch (e) {
263
+ console.error('Failed to refetch comments:', e);
164
264
  }
165
- // eslint-disable-next-line react-hooks/exhaustive-deps
166
- }, [props.caseComments, caseAttachmentHydra, props.caseChats, caseFeedbacksHydra, caseExternalTrackersUpdate]);
167
- const onAttachmentRemove = (uuid_removed) => {
168
- updateAttacmentsAfterRemoval(dispatchDiscussion, uuid_removed, allDiscussions, discussionFiltersListState);
169
- };
170
- const onFeedbackUpdate = (comment_id, feedback) => {
171
- updateCommentStateFeedback(dispatchDiscussion, comment_id, feedback, allDiscussions);
172
- };
173
- const onCommentAdded = () => __awaiter(this, void 0, void 0, function* () {
174
- yield updateDiscussionStateComments(dispatchDiscussion, caseDispatch, caseNumber, allDiscussions, sort, caseFeedbacksHydra.data, discussionFiltersListState);
175
265
  dtmTrackEventCaseStepEncountered('comment', caseNumber, product, version);
176
266
  });
177
- const onAttachmentAdded = () => __awaiter(this, void 0, void 0, function* () {
178
- yield updateDiscussionStateAttachments(dispatchDiscussion, caseNumber, allDiscussions, sort, loggedInUsersAccount.data.secureSupport, discussionFiltersListState, dispatchCaseDetailsHydraAttachments);
179
- });
180
- const onReply = (commentText, commentCreator, isPublic) => {
181
- var _a;
182
- setReplyingToPrivateComment(!isPublic);
183
- setCommentText(dispatchDiscussion, commentText, commentCreator);
267
+ const onReply = (author, commentId, timestamp) => {
268
+ setReplyingTo(dispatchDiscussion, author, commentId, timestamp);
184
269
  scrollIntoView(props.tabRef, { navBarRef, timeout: 0, onlyIfNotInViewport: true, offset: 30 });
185
- commentIndex !== -1 && setCommentIndex(-1);
186
- isCommentSearchCleared && setIsCommentSearchCleared(false);
187
- (_a = listRef === null || listRef === void 0 ? void 0 : listRef.current) === null || _a === void 0 ? void 0 : _a.scrollToPosition(0);
188
270
  };
189
- const resetReplyComment = () => {
190
- clearReplyComment(dispatchDiscussion);
191
- setReplyingToPrivateComment(null);
271
+ const onClearReply = () => {
272
+ clearReplyingTo(dispatchDiscussion);
192
273
  };
274
+ /** Strips special chars to prevent regex injection, then HTML-escapes via DOM round-trip to prevent XSS. */
193
275
  const sanitizedSearchInput = (value) => {
194
276
  if (!value)
195
277
  return '';
196
278
  const sanitizedValue = value.replace(/[^a-zA-Z0-9]/g, '');
197
- // To escape HTML-like characters (e.g., <, >, &) in sanitizedValue
198
279
  const div = document.createElement('div');
199
280
  div.textContent = sanitizedValue;
200
281
  return div.innerHTML;
@@ -208,10 +289,10 @@ export default function CaseDiscussion(props) {
208
289
  isCommentSearchCleared && setIsCommentSearchCleared(false);
209
290
  };
210
291
  const highlightSearchResults = (searchTerm) => {
292
+ // Delay allows the DOM (especially virtualized rows) to finish rendering before mark.js can highlight matches.
211
293
  setTimeout(() => {
212
- // to mark attachment link button text
213
294
  if (!isEmpty(sanitizedSearchInput(searchTerm))) {
214
- const sanitizedSearchTerm = sanitizedSearchInput(searchTerm); // Sanitize the search term
295
+ const sanitizedSearchTerm = sanitizedSearchInput(searchTerm);
215
296
  document.querySelectorAll('button.attachment-download-btn').forEach((button) => {
216
297
  var _a, _b;
217
298
  if ((_a = button === null || button === void 0 ? void 0 : button.textContent) === null || _a === void 0 ? void 0 : _a.includes(sanitizedSearchTerm)) {
@@ -225,9 +306,6 @@ export default function CaseDiscussion(props) {
225
306
  done: () => {
226
307
  if (isEmpty(searchTerm))
227
308
  return;
228
- // removed { separateWordSearch: false }
229
- // so the search term is split into individual words, and each word is matched separately.
230
- // Search Term: "frontend developer" Matches: Text containing "frontend" or "developer".
231
309
  markInstance.mark(searchTerm);
232
310
  },
233
311
  });
@@ -239,22 +317,31 @@ export default function CaseDiscussion(props) {
239
317
  highlightSearchResults('');
240
318
  setSearchResult([]);
241
319
  if (cId === discussionIdFromUrl) {
242
- // reason to reset activeElementId if comment id is same in the url on click jump to comment button
243
- // we need to re compute filtered comments after clear search results.
244
- // it will call useEffect and will set virtual comment Index(setVRCommentIndex())
245
320
  activeElementId.current = '';
246
321
  }
247
322
  };
248
- const onMetadataUpdate = (attachmentId, updatedAttachment) => {
249
- updateAttachment(dispatchDiscussion, attachmentId, updatedAttachment, allDiscussions);
323
+ const onAttachmentRemove = (uuid_removed) => {
324
+ updateAttacmentsAfterRemoval(dispatchDiscussion, uuid_removed, allDiscussions, discussionFiltersListState);
250
325
  };
251
- const downloadAttachment = (_a) => __awaiter(this, [_a], void 0, function* ({ caseNumber, uuid, name }) {
326
+ const onAttachmentAdded = () => __awaiter(this, void 0, void 0, function* () {
327
+ var _a;
328
+ yield updateDiscussionStateAttachments(dispatchDiscussion, caseNumber, allDiscussions, sort, discussionFiltersListState, dispatchCaseDetailsHydraAttachments, apolloClient, caseSalesforceId, Boolean((_a = loggedInUsersAccount === null || loggedInUsersAccount === void 0 ? void 0 : loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.secureSupport));
329
+ });
330
+ const onMetadataUpdate = (attachmentUuid, updatedAttachment) => {
331
+ updateAttachment(dispatchDiscussion, attachmentUuid, updatedAttachment, allDiscussions);
332
+ const updatedHydraAttachments = (caseAttachmentHydra.data || []).map((attachment) => (attachment === null || attachment === void 0 ? void 0 : attachment.uuid) === attachmentUuid ? Object.assign(Object.assign({}, attachment), updatedAttachment) : attachment);
333
+ dispatchCaseDetailsHydraAttachments({
334
+ type: CaseDetailsConstants.updateState,
335
+ payload: { caseAttachmentHydra: getApiResourceObject(updatedHydraAttachments) },
336
+ });
337
+ };
338
+ const downloadAttachment = ({ caseNumber: attachmentCaseNumber, uuid, name }) => {
252
339
  const tempToastId = ToastNotification.addInfoMessage(t('Starting file download'));
253
340
  try {
254
- yield caseAttachments.downloadAttachmentS3(caseNumber, uuid, name, false, loggedInUsersAccount.data.secureSupport);
341
+ downloadCaseAttachment(attachmentCaseNumber, uuid, name);
255
342
  }
256
343
  catch (e) {
257
- ToastNotification.addDangerMessage(t(`Could not download {{filename}}: {{error}}`, {
344
+ ToastNotification.addDangerMessage(t('Could not download {{filename}}: {{error}}', {
258
345
  filename: name,
259
346
  error: e === null || e === void 0 ? void 0 : e.message,
260
347
  }));
@@ -262,11 +349,7 @@ export default function CaseDiscussion(props) {
262
349
  finally {
263
350
  tempToastId && ToastNotification.clearToast(tempToastId);
264
351
  }
265
- });
266
- /**
267
- * We need to clear the cell measurer cache if user resizes the window or discussion section width is changed
268
- * so that the height of the rows are re-calculated
269
- */
352
+ };
270
353
  useEffect(() => {
271
354
  if (discussionSectionWidth && shouldRenderRVComponent) {
272
355
  cellMeasureCache && cellMeasureCache.clearAll();
@@ -277,11 +360,19 @@ export default function CaseDiscussion(props) {
277
360
  }
278
361
  // eslint-disable-next-line react-hooks/exhaustive-deps
279
362
  }, [discussionSectionWidth, shouldRenderRVComponent]);
363
+ useEffect(() => {
364
+ var _a;
365
+ if (shouldRenderRVComponent) {
366
+ cellMeasureCache.clearAll();
367
+ (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.recomputeRowHeights();
368
+ }
369
+ usedPaginationRef.current = false;
370
+ // eslint-disable-next-line react-hooks/exhaustive-deps
371
+ }, [sort]);
280
372
  const renderVRCommentElement = () => {
281
373
  return (React.createElement(WindowScroller, { ref: windowScrollerRef, onScroll: handleScroll }, ({ height, registerChild, onChildScroll, isScrolling, scrollTop }) => {
282
374
  return (React.createElement("div", { ref: commentRef, "data-tracking-id": "vr-case-comments" },
283
375
  React.createElement(AutoSizer, { disableHeight: true }, ({ width }) => {
284
- // setTimeout to update state in the next tick and avoid bad setState warnings
285
376
  discussionSectionWidth !== width &&
286
377
  setTimeout(() => setDiscussionSectionWidth(width), 0);
287
378
  return (React.createElement("div", { ref: registerChild },
@@ -295,16 +386,19 @@ export default function CaseDiscussion(props) {
295
386
  if (isEmpty(discussion) || isEmpty(discussion.item))
296
387
  return null;
297
388
  return (React.createElement("div", { "data-tracking-id": "discussion-elements", key: discussion.item.id },
298
- discussion.discussionType === DiscussionType.COMMENT && (React.createElement(CaseComments, { caseNumber: caseNumber, ref: discussionIdFromUrl === discussion.item.id ? activeDiscussionElementRef : null, comment: discussion.item, onFeedBackUpdate: onFeedbackUpdate, feedback: discussion.feedback, accountNumber: props.accountNumber, onReply: onReply, showJumpToComment: !isEmpty(searchCommentText), onJumpToComment: onJumpToComment, downloadAttachment: downloadAttachment })),
299
- discussion.discussionType === DiscussionType.ATTACHMENT && (React.createElement(CaseAttachment, { attachment: discussion.item, onAttachmentRemove: onAttachmentRemove, onMetadataUpdate: onMetadataUpdate, showJumpToComment: !isEmpty(searchCommentText), onJumpToComment: onJumpToComment, downloadAttachment: downloadAttachment, ref: discussionIdFromUrl === discussion.item.id ? activeDiscussionElementRef : null })),
300
- discussion.discussionType === DiscussionType.CHAT && (React.createElement(CaseChat, { caseNumber: caseNumber, ref: discussionIdFromUrl === discussion.item.id ? activeDiscussionElementRef : null, chat: discussion.item, showJumpToComment: !isEmpty(searchCommentText), onJumpToComment: onJumpToComment })),
301
- discussion.discussionType === DiscussionType.EXTERNAL_TRACKER && (React.createElement(CaseExternalTrackerUpdate, { caseNumber: caseNumber, ref: discussionIdFromUrl === discussion.item.id ? activeDiscussionElementRef : null, trackerUpdate: discussion.item, showJumpToComment: !isEmpty(searchCommentText), onJumpToComment: onJumpToComment }))));
389
+ discussion.discussionType === DiscussionType.COMMENT && (React.createElement(CaseComments, { caseNumber: caseNumber, ref: discussionIdFromUrl === discussion.item.id ? activeDiscussionElementRef : null, comment: discussion.item, onFeedBackUpdate: () => { }, feedback: discussion.feedback, accountNumber: props.accountNumber, onReply: onReply, showJumpToComment: !isEmpty(searchCommentText), onJumpToComment: onJumpToComment, downloadAttachment: downloadAttachment })),
390
+ discussion.discussionType === DiscussionType.ATTACHMENT && (React.createElement(CaseAttachment, { attachment: discussion.item, onAttachmentRemove: onAttachmentRemove, onMetadataUpdate: onMetadataUpdate, showJumpToComment: !isEmpty(searchCommentText), onJumpToComment: onJumpToComment, downloadAttachment: downloadAttachment, ref: discussionIdFromUrl === discussion.item.id ? activeDiscussionElementRef : null }))));
302
391
  };
303
- const rowRenderer = ({ index, parent, key, style }) => {
392
+ const rowRenderer = ({ index, parent, key, style, }) => {
304
393
  const discussion = comuteSearchedComments[index];
305
394
  return (React.createElement(CellMeasurer, { key: key, cache: cellMeasureCache, parent: parent, columnIndex: 0, rowIndex: index },
306
395
  React.createElement("div", { className: "comment-virtualized-row", key: key, style: style }, renderCaseCommentElement(discussion))));
307
396
  };
397
+ /**
398
+ * One-shot scroll override used after search/filter changes.
399
+ * Resets the virtualized list to the top, then yields control back to
400
+ * WindowScroller's default onChildScroll for subsequent scroll events.
401
+ */
308
402
  const customChildScroll = ({ scrollTop }) => {
309
403
  var _a;
310
404
  if (!canUpdateScrollTop) {
@@ -317,23 +411,25 @@ export default function CaseDiscussion(props) {
317
411
  };
318
412
  const handleScroll = ({ scrollTop }) => {
319
413
  var _a, _b, _c, _d, _e, _f;
320
- // here we are doing couple of things
321
- // 1. check scroll position on the first comment, 2. set scrollposition as par window top
322
- // 3. if user click on jump to comment button then select row as per commentid and adding css class.
323
414
  isCommentSearchCleared && setIsCommentSearchCleared(false);
324
415
  if (listRef && commentRef) {
416
+ // Skip one scroll cycle after a search/filter reset to let customChildScroll re-sync
325
417
  if (!canUpdateScrollTop) {
326
418
  setCanUpdateScrollTop(true);
327
419
  return;
328
420
  }
329
421
  const commentTop = (_b = (_a = commentRef === null || commentRef === void 0 ? void 0 : commentRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.top;
422
+ // Re-apply search highlights on scroll since virtualized rows re-mount
330
423
  !isEmpty(searchCommentText) && highlightSearchResults(searchCommentText);
424
+ // Normal browsing or comment section visible above viewport — sync list position
331
425
  if (isEmpty(discussionIdFromUrl) || commentTop > 0) {
332
426
  (_c = listRef === null || listRef === void 0 ? void 0 : listRef.current) === null || _c === void 0 ? void 0 : _c.scrollToPosition(commentTop > 0 ? 0 : Math.abs(commentTop));
333
427
  }
334
428
  else if (commentTop < 0 && !isEmpty(discussionIdFromUrl) && !isJumpToCommentClicked) {
429
+ // Deep-link navigation: let WindowScroller drive the list scroll position
335
430
  (_d = listRef === null || listRef === void 0 ? void 0 : listRef.current) === null || _d === void 0 ? void 0 : _d.scrollToPosition(scrollTop);
336
431
  }
432
+ // After a "jump to comment" click, scroll the virtualized list to the target row
337
433
  if (isJumpToCommentClicked) {
338
434
  (_e = listRef === null || listRef === void 0 ? void 0 : listRef.current) === null || _e === void 0 ? void 0 : _e.scrollToRow(commentIndex);
339
435
  (_f = windowScrollerRef === null || windowScrollerRef === void 0 ? void 0 : windowScrollerRef.current) === null || _f === void 0 ? void 0 : _f.updatePosition();
@@ -341,7 +437,6 @@ export default function CaseDiscussion(props) {
341
437
  }
342
438
  }
343
439
  };
344
- const list = discussionFiltersListState.filter((filter) => filter.canSee);
345
440
  useEffect(() => {
346
441
  if (isPostingRemoteRequestCommentCompleted) {
347
442
  onCommentAdded();
@@ -353,60 +448,116 @@ export default function CaseDiscussion(props) {
353
448
  e.stopPropagation();
354
449
  setIsOpen(!isOpen);
355
450
  };
356
- const onSortToggleClick = (e) => {
357
- e.stopPropagation();
358
- setIsSortOpen(!isSortOpen);
359
- };
360
451
  const onFilterSelect = (_event, prevOption) => {
361
- const isFilterSelected = !prevOption.isSelected; // to get updated state of changed filter
362
- const prevSelectedFilters = list.filter((option) => option.isSelected && option.value !== prevOption.value); // to get previously selected filters
452
+ const isFilterSelected = !prevOption.isSelected;
453
+ const prevSelectedFilters = list.filter((option) => option.isSelected && option.value !== prevOption.value);
363
454
  const prevSelectedFiltersValue = prevSelectedFilters.map((option) => option.value);
364
- const newSelectedFilters = isFilterSelected // has all the selected values of filter with the updated selected filter state
455
+ const newSelectedFilters = isFilterSelected
365
456
  ? [...prevSelectedFiltersValue, prevOption.value]
366
457
  : prevSelectedFiltersValue;
367
458
  setFilter(dispatchDiscussion, newSelectedFilters, discussionFiltersListState);
368
459
  shouldRenderRVComponent && setCanUpdateScrollTop(false);
369
460
  setSelectedFilterItems(prevSelectedFiltersValue);
370
461
  };
371
- const toggle = (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: onToggleClick, isExpanded: isOpen, isFullWidth: true }, getDropdownBtnPlaceholder(t('Select a filter'), list.filter((i) => i.isSelected).map((i) => i.filterLabel), ' ', list.length, t('All comments'))));
372
- const onSortSelect = (_event, selectedSort) => {
373
- setSort(dispatchDiscussion, selectedSort, allDiscussions);
374
- setSortSelected(selectedSort.value);
462
+ const filterToggle = (toggleRef) => {
463
+ const selectedLabels = list.filter((i) => i.isSelected).map((i) => i.filterLabel);
464
+ const realFilters = list.filter((i) => i.value !== DiscussionType.ALL);
465
+ const allRealSelected = realFilters.length > 0 && realFilters.every((i) => i.isSelected);
466
+ const placeholder = allRealSelected
467
+ ? t('All')
468
+ : getDropdownBtnPlaceholder(t('Select a filter'), selectedLabels.filter((l) => l !== 'All'), ' ', realFilters.length, t('All'));
469
+ return (React.createElement(MenuToggle, { ref: toggleRef, onClick: onToggleClick, isExpanded: isOpen, isFullWidth: true }, placeholder));
470
+ };
471
+ const onSortToggleClick = (e) => {
472
+ e.stopPropagation();
473
+ setIsSortOpen(!isSortOpen);
474
+ };
475
+ const onSortSelect = (_event, value) => {
476
+ const selectedSort = discussionSortOrderConst.find((option) => option.name === value);
477
+ if (selectedSort) {
478
+ setSort(dispatchDiscussion, selectedSort, allDiscussions);
479
+ setSortSelected(selectedSort.name);
480
+ }
375
481
  setIsSortOpen(false);
376
482
  };
377
483
  const onSortToggle = (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: onSortToggleClick, isExpanded: isSortOpen, isFullWidth: true }, sort.name));
378
484
  return (React.createElement(React.Fragment, null,
485
+ (() => {
486
+ const showInitialLoading = props.commentsLoading && allDiscussions.length === 0;
487
+ const showNoComments = !props.commentsLoading && !props.commentsError && allDiscussions.length === 0;
488
+ const showDiscussions = allDiscussions.length !== 0;
489
+ const showSkeleton = debouncedShowSkeleton;
490
+ const showNoMore = !props.hasNextPage &&
491
+ !props.isLoadingMore &&
492
+ !props.commentsLoading &&
493
+ !props.loadMoreError &&
494
+ comuteSearchedComments.length > 0;
495
+ console.log('[CaseDiscussion] RENDER DECISION', {
496
+ showInitialLoading,
497
+ showNoComments,
498
+ showDiscussions,
499
+ isRefetching,
500
+ showSkeleton,
501
+ showNoMore,
502
+ isSearchResultEmpty,
503
+ shouldRenderRVComponent,
504
+ });
505
+ return null;
506
+ })(),
379
507
  React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading post comment section') } },
380
508
  React.createElement(AttachmentContextProvider, null,
381
- React.createElement(PostComment, { caseNumber: caseNumber, allDiscussions: allDiscussions, onCommentAdded: onCommentAdded, onAttachmentAdded: onAttachmentAdded, commentText: replyCommentText, onCommentClear: resetReplyComment, commentCreator: replyCommentCreator, defaultIsPublic: replyingToPrivateComment === null ? replyingToPrivateComment : !replyingToPrivateComment }))),
382
- React.createElement(LoadingIndicator, { className: "text-center", isInline: true, show: caseAttachmentHydra.isFetching ||
383
- caseExternalTrackersUpdate.isFetching ||
384
- caseFeedbacksHydra.isFetching ||
385
- (screenSessionRequested && allDiscussions.length === 0) }),
386
- !caseAttachmentHydra.isFetching &&
387
- !caseFeedbacksHydra.isFetching &&
388
- !caseExternalTrackersUpdate.isFetching &&
389
- !screenSessionRequested &&
390
- allDiscussions.length === 0 && React.createElement(Trans, null, "No comments"),
391
- !caseAttachmentHydra.isFetching &&
392
- !caseFeedbacksHydra.isFetching &&
393
- !caseExternalTrackersUpdate.isFetching &&
394
- allDiscussions.length !== 0 && (React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading comments. Try refreshing.') } },
509
+ React.createElement(PostComment, { caseNumber: caseNumber, allDiscussions: allDiscussions, onCommentAdded: onCommentAdded, onAttachmentAdded: onAttachmentAdded, onAttachmentRemove: onAttachmentRemove, replyingToAuthor: replyingToAuthor, replyingToTimestamp: replyingToTimestamp, onClearReply: onClearReply }))),
510
+ props.commentsLoading && allDiscussions.length === 0 && React.createElement(LoadingIndicator, { size: "sm" }),
511
+ props.commentsError && allDiscussions.length === 0 && (React.createElement(AlertMessage, { variant: AlertType.DANGER, show: true, title: t('Failed to load comments. Try refreshing.') })),
512
+ !props.commentsLoading && !props.commentsError && allDiscussions.length === 0 && (React.createElement("p", null,
513
+ React.createElement(Trans, null, "No comments"))),
514
+ allDiscussions.length !== 0 && (React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading comments. Try refreshing.') } },
395
515
  React.createElement("div", { className: `pfe-l-grid pfe-m-all-6-col pfe-m-gutters push-bottom ${isExportingPDF ? 'hide-in-pdf' : ''}` },
396
516
  React.createElement("div", { className: "pfe-m-12-col" }, allDiscussions.length > 20 && (React.createElement(CommentSearch, { caseDiscussions: computeFilteredComments || [], onCommentSearch: onCaseCommentSearch, isCommentSearchCleared: isCommentSearchCleared }))),
397
517
  React.createElement("span", { className: "push-top-narrow" },
398
- React.createElement("label", { htmlFor: "case-list-comments-dropdown", className: "pf-v5-u-mb-sm" }, t('Filter by')),
399
- React.createElement(Select, { "data-tracking-id": "discussions-filter-comments-dropdown", id: "case-list-comments-dropdown", role: "menu", isOpen: isOpen, selected: selectedFilterItems, onSelect: onFilterSelect, onOpenChange: (isOpen) => setIsOpen(isOpen), toggle: toggle, popperProps: { direction: 'down', enableFlip: false }, zIndex: 9 },
400
- React.createElement(SelectList, null, list.map((option) => (React.createElement(SelectOption, { hasCheckbox: true, value: option, isSelected: option.isSelected, isDisabled: option.isDisabled }, option.filterLabel)))))),
518
+ React.createElement("label", { htmlFor: "case-list-comments-dropdown", className: "pf-v6-u-mb-sm" }, t('Filter by')),
519
+ React.createElement(Select, { "data-tracking-id": "discussions-filter-comments-dropdown", id: "case-list-comments-dropdown", role: "menu", isOpen: isOpen, selected: selectedFilterItems, onSelect: onFilterSelect, onOpenChange: (isOpen) => setIsOpen(isOpen), toggle: filterToggle, popperProps: { direction: 'down', enableFlip: false }, zIndex: 9 },
520
+ React.createElement(SelectList, null, list.map((option) => (React.createElement(SelectOption, { key: option.value, hasCheckbox: true, value: option, isSelected: option.isSelected, isDisabled: option.isDisabled }, option.filterLabel)))))),
401
521
  React.createElement("span", { className: "push-top-narrow" },
402
- React.createElement("label", { htmlFor: "se-discussion-sort", className: "pf-v5-u-mb-sm" }, t('Sort by')),
522
+ React.createElement("label", { htmlFor: "se-discussion-sort", className: "pf-v6-u-mb-sm" }, t('Sort by')),
403
523
  React.createElement(Select, { id: "se-discussion-sort", "data-tracking-id": "discussions-sort-dropdown", isOpen: isSortOpen, selected: sortSelected, onSelect: onSortSelect, onOpenChange: (isSortOpen) => setIsSortOpen(isSortOpen), toggle: onSortToggle, shouldFocusToggleOnSelect: true, popperProps: { direction: 'down', enableFlip: false }, zIndex: 9 },
404
- React.createElement(SelectList, null, discussionSortOrderConst.map((option) => (React.createElement(SelectOption, { value: option, isSelected: isEqual(sort.name, option.name) }, option.name))))))),
405
- React.createElement("div", { className: "support-comment-section" }, !shouldRenderRVComponent &&
406
- !isSearchResultEmpty &&
407
- comuteSearchedComments.map((discussion, index) => {
408
- return renderCaseCommentElement(discussion);
409
- })),
410
- isSearchResultEmpty && (React.createElement(AlertMessage, { variant: AlertType.WARNING, show: true, title: t('No result found') })),
411
- shouldRenderRVComponent && !isSearchResultEmpty && renderVRCommentElement()))));
524
+ React.createElement(SelectList, null, discussionSortOrderConst.map((option) => (React.createElement(SelectOption, { key: option.name, value: option.name, isSelected: isEqual(sort.name, option.name) }, option.name))))))),
525
+ React.createElement("div", { className: "support-comment-section" },
526
+ isRefetching && React.createElement(LoadingIndicator, { size: "sm" }),
527
+ !isRefetching &&
528
+ !shouldRenderRVComponent &&
529
+ !isSearchResultEmpty &&
530
+ comuteSearchedComments.map((discussion, index) => {
531
+ return renderCaseCommentElement(discussion);
532
+ })),
533
+ isSearchResultEmpty && (React.createElement("p", { className: "infinite-scroll-end-status" },
534
+ React.createElement(Trans, null, "No results found"))),
535
+ !isRefetching && shouldRenderRVComponent && !isSearchResultEmpty && renderVRCommentElement(),
536
+ React.createElement("div", { ref: sentinelRef, "aria-hidden": "true", style: { height: 10, marginBottom: -10 } }),
537
+ debouncedShowSkeleton && !props.loadMoreError && (React.createElement("div", { className: "load-more-skeleton", role: "status", "aria-label": t('Loading more comments') },
538
+ React.createElement("div", { className: "load-more-skeleton__header" },
539
+ React.createElement("div", { className: "load-more-skeleton__avatar" }),
540
+ React.createElement("div", { className: "load-more-skeleton__name" }),
541
+ React.createElement("div", { className: "load-more-skeleton__timestamp" })),
542
+ React.createElement("div", { className: "load-more-skeleton__body" },
543
+ React.createElement("div", { className: "load-more-skeleton__line", style: { width: '100%' } }),
544
+ React.createElement("div", { className: "load-more-skeleton__line", style: { width: '85%' } }),
545
+ React.createElement("div", { className: "load-more-skeleton__line", style: { width: '60%' } })))),
546
+ props.loadMoreError && props.loadMoreRetryCount <= 1 && (React.createElement("div", { className: "infinite-scroll-footer-message" },
547
+ React.createElement(Button, { variant: "secondary", onClick: props.retryLoadMore, icon: React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" },
548
+ React.createElement("polyline", { points: "23 4 23 10 17 10" }),
549
+ React.createElement("path", { d: "M20.49 15a9 9 0 1 1-2.12-9.36L23 10" })) },
550
+ React.createElement(Trans, null, "try loading again")))),
551
+ props.loadMoreError && props.loadMoreRetryCount > 1 && (React.createElement("p", { className: "infinite-scroll-end-status" },
552
+ React.createElement(Trans, { i18nKey: "We're having trouble loading your comments. <refreshLink>Please refresh</refreshLink> or <retryLink>try again</retryLink>.", components: {
553
+ refreshLink: (React.createElement(Button, { variant: "link", isInline: true, onClick: () => globalThis.location.reload() })),
554
+ retryLink: React.createElement(Button, { variant: "link", isInline: true, onClick: props.retryLoadMore }),
555
+ } }))),
556
+ !props.hasNextPage &&
557
+ !props.isLoadingMore &&
558
+ !props.commentsLoading &&
559
+ !props.loadMoreError &&
560
+ comuteSearchedComments.length > 0 &&
561
+ props.retryLoadMore !== undefined && (React.createElement("p", { className: "infinite-scroll-end-status" },
562
+ React.createElement(Trans, null, "No more comments to load")))))));
412
563
  }