@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
@@ -1,31 +1,37 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import './Timeline.css';
11
- import { caseHistory } from '@cee-eng/hydrajs';
12
- import { Avatar, Button, DatePicker, EmptyState, EmptyStateBody, EmptyStateHeader, EmptyStateIcon, EmptyStateVariant, MenuToggle, Pagination, SearchInput, Select, SelectOption, Spinner, } from '@patternfly/react-core';
2
+ import { Avatar, Button, DatePicker, EmptyState, EmptyStateBody, EmptyStateVariant, MenuToggle, Pagination, SearchInput, Select, SelectOption, Spinner, } from '@patternfly/react-core';
13
3
  import ExclamationCircleIcon from '@patternfly/react-icons/dist/js/icons/exclamation-circle-icon';
14
4
  import SearchIcon from '@patternfly/react-icons/dist/js/icons/search-icon';
15
- import globalDangerColor100 from '@patternfly/react-tokens/dist/js/global_danger_color_100';
16
5
  import { haltEvent } from '@rh-support/utils';
17
- import { format, fromUnixTime, isSameDay, parse } from 'date-fns';
6
+ import { format, isSameDay, parse, parseISO } from 'date-fns';
18
7
  import debounce from 'lodash/debounce';
19
8
  import isEmpty from 'lodash/isEmpty';
20
9
  import React, { useEffect, useRef, useState } from 'react';
21
10
  import { Trans, useTranslation } from 'react-i18next';
22
- const TimelineEvent = ({ date, text, side, user, useAvatar }) => {
11
+ import { useCaseHistory } from '../../../../hooks/useCaseHistory';
12
+ import { getFieldDisplayName } from '../../../../utils/caseHistoryUtils';
13
+ import { applyPostProcessing, handleFieldChange } from '../../../../utils/TimelineUtils';
14
+ const CustomHighlighter = ({ search, children, highlightDate, }) => {
15
+ const createHighlight = (text) => React.createElement("mark", { className: "timeline-highlight" }, text);
16
+ if (highlightDate) {
17
+ return createHighlight(children);
18
+ }
19
+ if (search) {
20
+ const escapedSearch = search.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
21
+ const regex = new RegExp(`(${escapedSearch})`, 'i');
22
+ const parts = children.split(regex);
23
+ return React.createElement(React.Fragment, null, parts.map((part, index) => (regex.test(part) ? createHighlight(part) : part)));
24
+ }
25
+ return React.createElement(React.Fragment, null, children);
26
+ };
27
+ const TimelineEvent = ({ date, text, side, user, useAvatar, searchValue, highlightDate, }) => {
23
28
  if (side === 'left') {
24
29
  if (useAvatar) {
25
30
  // we render the main date if the user changes or if the date changes
26
31
  return (React.createElement("div", { className: `${side}-node ${user}`, role: "complementary", "aria-label": `${user}'s timeline Event Time` },
27
32
  React.createElement("div", { className: `contentTimeline content-${side}-history content-${side}-${user}` },
28
- React.createElement("h2", { className: `content-date-${side}-history` }, date),
33
+ React.createElement("h2", { className: `content-date-${side}-history` },
34
+ React.createElement(CustomHighlighter, { highlightDate: highlightDate }, date)),
29
35
  React.createElement("p", { className: `content-time-${side}-history` }, text))));
30
36
  }
31
37
  return (React.createElement("div", { className: `${side}-node ${user}`, role: "complementary", "aria-label": `${user}'s timeline Event Time` },
@@ -34,192 +40,63 @@ const TimelineEvent = ({ date, text, side, user, useAvatar }) => {
34
40
  }
35
41
  return (React.createElement("div", { className: `${side}-node ${user}`, role: "complementary", "aria-label": `${user}'s timeline event content` },
36
42
  React.createElement("div", { className: `contentTimeline content-${side}-history content-${side}-${user}` },
37
- React.createElement("h2", { className: `content-date-${side}-history` }, date),
38
- text && React.createElement("p", { className: `content-time-${side}-history` }, text))));
43
+ React.createElement("h2", { className: `content-date-${side}-history` },
44
+ React.createElement(CustomHighlighter, { search: searchValue || '' }, date)),
45
+ text && (React.createElement("p", { className: `content-time-${side}-history` },
46
+ React.createElement(CustomHighlighter, { search: searchValue || '' }, text))))));
39
47
  };
40
- const TimelineNode = React.forwardRef(({ leftEvent, rightEvent, user, useAvatar }, ref) => {
48
+ const DEFAULT_AVATAR_SRC = 'https://www.patternfly.org/images/668560cd.svg';
49
+ const TimelineNode = React.forwardRef(({ leftEvent, rightEvent, user, useAvatar, photoUrl, searchValue, highlightDate }, ref) => {
50
+ const [imgSrc, setImgSrc] = useState(photoUrl || DEFAULT_AVATAR_SRC);
41
51
  return (React.createElement("div", { className: "timeline-node", role: "region", "aria-label": "Timeline node" },
42
- leftEvent && React.createElement(TimelineEvent, Object.assign({}, leftEvent, { side: "left", useAvatar: useAvatar })),
43
- React.createElement("div", { ref: ref, "aria-label": `${useAvatar ? 'User profile picture' : 'Timeline marker'}`, tabIndex: -1 }, useAvatar ? (React.createElement(Avatar, { src: 'https://www.patternfly.org/images/668560cd.svg', className: `timeline-avatar timeline-avatar-${user}`, alt: `${user}'s avatar` })) : (React.createElement("div", { className: `timeline-marker timeline-${user}` }))),
44
- rightEvent && React.createElement(TimelineEvent, Object.assign({}, rightEvent, { side: "right" }))));
52
+ leftEvent && (React.createElement(TimelineEvent, Object.assign({}, leftEvent, { side: "left", useAvatar: useAvatar, searchValue: searchValue, highlightDate: highlightDate }))),
53
+ React.createElement("div", { ref: ref, "aria-label": `${useAvatar ? 'User profile picture' : 'Timeline marker'}`, tabIndex: -1 }, useAvatar ? (React.createElement(Avatar, { src: imgSrc, className: `timeline-avatar timeline-avatar-${user}`, alt: `${user}'s avatar`, onError: () => setImgSrc(DEFAULT_AVATAR_SRC) })) : (React.createElement("div", { className: `timeline-marker timeline-${user}` }))),
54
+ rightEvent && React.createElement(TimelineEvent, Object.assign({}, rightEvent, { side: "right", searchValue: searchValue }))));
45
55
  });
46
56
  /**
47
- *
48
- * @param {Object} item - The item object to process.
49
- * @returns {string} The formatted text string.
57
+ * Builds the display text for a "Change" history item by resolving values and
58
+ * delegating to field-specific formatters.
50
59
  */
51
- const applyReplacements = (item) => {
60
+ export const applyReplacements = (item) => {
61
+ var _a, _b;
52
62
  if (!item || typeof item !== 'object')
53
63
  return '';
54
- // API field names to easy to read display names
55
- const fieldNameMapping = {
56
- ContactId: 'Contact',
57
- RH_Product__c: 'Product',
58
- RH_Version__c: 'Version',
59
- EntitlementId: 'Entitlement',
60
- AccountId: 'Account',
61
- OwnerId: 'Owner',
62
- BusinessHoursId: 'Business Hours',
63
- FolderId__c: 'Case Group',
64
- Status: 'Status',
65
- Customer_Escalation__c: 'Customer Escalation',
66
- SlaStartDate: 'SLA Start Date',
67
- Case_Language__c: 'Case Language',
68
- Alternate_Id__c: 'Personal reference number',
69
- SBR_Group__c: 'SBR Group',
70
- };
71
- // https://help.salesforce.com/s/articleView?id=000384484&type=1
72
- // adding in option for multiselect fields provided by salesforce.
73
- // in future for more multiselect fields just add to below array.
74
- const multiSelectFields = ['SBR_Group__c'];
75
- // language codes to language names
76
- const languageCodeMapping = {
77
- de: 'German',
78
- en: 'English',
79
- es: 'Spanish',
80
- fr: 'French',
81
- it: 'Italian',
82
- pt: 'Portuguese',
83
- ko: 'Korean',
84
- jp: 'Japanese',
85
- zh: 'Chinese',
86
- };
87
- // field display names to prefix keys used in item properties
88
- const keyMap = {
89
- Product: 'product',
90
- Version: 'version',
91
- Account: 'account',
92
- Contact: 'contact',
93
- Entitlement: 'entitlement',
94
- 'Business Hours': 'businessHours',
95
- Owner: 'queueNameOwner',
96
- 'Customer Escalation': 'customerEscalation',
97
- 'Case Group': 'caseGroup',
98
- 'SLA Start Date': 'slaStartDate',
99
- 'Case Language': 'caseLanguage',
100
- 'Personal reference number': 'alternateId',
101
- };
102
- // get the mapped display name for a field
103
- const getMappedFieldName = (fieldName) => fieldNameMapping[fieldName] || item.fieldLabel || fieldName || '';
104
- // get the new or old value using the prefix
105
- const getNameValue = (prefix) => item[`${keyMap[getMappedFieldName(item.fieldName)]}${prefix}Name`] ||
106
- item[`${prefix}Value`] ||
107
- item[`${prefix.toLowerCase()}Value`] ||
108
- '';
109
- // formatting functions
110
- const formatLanguageChange = (fieldName, oldLanguage, newLanguage) => `changed ${fieldName} from ${oldLanguage} to ${newLanguage}`;
111
- const formatSimpleChange = (fieldName, value) => `set ${fieldName} to ${value}`;
112
- const formatBooleanChange = (fieldName, value) => `set ${fieldName} to ${value}`;
113
- // get field name and values
114
- const fieldName = getMappedFieldName(item.fieldName);
115
- const newValue = getNameValue('New');
116
- const oldValue = getNameValue('Old');
117
- let newText = '';
118
- // special field handling below, useful for future exposed case history fields etc / api changes
119
- switch (item.fieldName) {
120
- case 'Case_Language__c': {
121
- const newLanguage = languageCodeMapping[item.newValue] || item.newValue;
122
- const oldLanguage = languageCodeMapping[item.oldValue] || item.oldValue;
123
- newText =
124
- item.oldValue && item.newValue
125
- ? formatLanguageChange(fieldName, oldLanguage, newLanguage)
126
- : formatSimpleChange(fieldName, newLanguage || 'empty');
127
- break;
128
- }
129
- case 'OwnerId':
130
- if (item.createdByUserName)
131
- newText = formatSimpleChange(fieldName, item.createdByUserName);
132
- break;
133
- case 'Status':
134
- newText =
135
- item.oldValue && item.newValue
136
- ? `changed ${fieldName} from ${item.oldValue} to ${item.newValue}`
137
- : formatSimpleChange(fieldName, item.newValue || 'empty');
138
- break;
139
- case 'Customer_Escalation__c':
140
- if (item.createdByUserName)
141
- newText = 'started Escalation for this ticket';
142
- break;
143
- case 'SlaStartDate':
144
- if (item.newValue)
145
- newText = formatSimpleChange(fieldName, item.newValue);
146
- break;
147
- case 'RemoteSessionTermsAckedBy__c':
148
- newText = 'Acked Remote Rider terms';
149
- break;
150
- default:
151
- if (oldValue && newValue) {
152
- if (multiSelectFields.includes(item.fieldName)) {
153
- // in salesforce multi-select picklist values are stored as a single string, with each value separated by a semicolon
154
- const oldValues = oldValue.split(';').map((s) => s.trim());
155
- const newValues = newValue.split(';').map((s) => s.trim());
156
- const added = newValues.filter((nv) => !oldValues.includes(nv));
157
- const removed = oldValues.filter((ov) => !newValues.includes(ov));
158
- if (added.length > 0 && removed.length === 0) {
159
- newText = `added ${added.join(', ')} to ${fieldName}`;
160
- }
161
- else if (removed.length > 0 && added.length === 0) {
162
- newText = `removed ${removed.join(', ')} from ${fieldName}`;
163
- }
164
- else if (added.length > 0 && removed.length > 0) {
165
- newText = `changed ${fieldName}, added ${added.join(', ')} and removed ${removed.join(', ')}`;
166
- }
167
- else {
168
- newText = `changed ${fieldName} from ${oldValue} to ${newValue}`;
169
- }
170
- }
171
- else {
172
- newText = `changed ${fieldName} from ${oldValue} to ${newValue}`;
173
- }
174
- }
175
- else if (newValue) {
176
- newText = formatSimpleChange(fieldName, newValue);
177
- }
178
- else if (oldValue && (newValue === undefined || newValue === '')) {
179
- newText = `removed ${fieldName}, was ${oldValue}`;
180
- }
181
- else if (item.newValue !== undefined) {
182
- newText = formatSimpleChange(fieldName, item.newValue);
183
- }
184
- break;
185
- }
186
- if (typeof item.newValue === 'boolean')
187
- newText = formatBooleanChange(fieldName, item.newValue);
188
- if (typeof newText === 'string')
189
- newText = newText.replace(/Problem Statement/g, 'Title');
190
- if (typeof newText === 'string')
191
- newText = newText.replace(/Case Type/g, 'Support Type');
192
- return newText;
64
+ const fieldName = item.displayName || getFieldDisplayName(item.fieldName) || item.fieldName;
65
+ const newValue = String((_a = item.newValue) !== null && _a !== void 0 ? _a : '');
66
+ const oldValue = String((_b = item.oldValue) !== null && _b !== void 0 ? _b : '');
67
+ const text = handleFieldChange(item, fieldName, oldValue, newValue);
68
+ return applyPostProcessing(text, item);
193
69
  };
194
- // function to change the apiResponse
195
- const transformApiResponseToTimelineData = (apiResponse) => {
70
+ /**
71
+ * Converts normalized history items into timeline node data for rendering.
72
+ *
73
+ * Applies a secondary filter (excludes `FolderId__c` and `OwnerId` whose resolved
74
+ * display names are unavailable), then maps each item to a left (date/time) and
75
+ * right (user action text) event pair. Avatar/date-header boundaries are computed
76
+ * sequentially: a new boundary is set on the first item, user change, or date change.
77
+ */
78
+ export const transformApiResponseToTimelineData = (apiResponse) => {
196
79
  let previousUser = null;
197
80
  let previousDate = null;
198
81
  const timelineEvents = apiResponse.historyItems
199
- // Filter out 'Case Group' and 'OwnerId' changes because we don't have decode of value
82
+ // Second-layer field-name filter on top of filterSfdcIdEntries (which is pattern-based).
83
+ // FolderId__c (Case Group) and OwnerId are excluded because their resolved display
84
+ // names (queue name, owner name) are not available in the history payload.
200
85
  .filter((item) => item.fieldName !== 'FolderId__c' && item.fieldName !== 'OwnerId')
201
86
  .map((item, index) => {
202
87
  const currentUser = item.createdByUserName;
203
- let eventDate;
204
- if (typeof item.createdDate === 'string' && item.createdDate.includes('T')) {
205
- eventDate = parse(item.createdDate, "yyyy-MM-dd'T'HH:mm:ss'Z'", new Date());
206
- }
207
- else {
208
- eventDate = fromUnixTime(item.createdDate / 1000);
209
- }
88
+ const eventDate = parseISO(item.createdDate);
210
89
  const currentDate = format(eventDate, 'MMMM d, yyyy');
90
+ // Show avatar + date header when: (1) first item, (2) user changed from
91
+ // previous event, or (3) calendar date changed. After any list mutation
92
+ // (filter, sort, paginate) applyAvatarLogic must be re-run so boundaries
93
+ // remain correct.
211
94
  const useAvatar = index === 0 ||
212
- (!!previousUser && currentUser !== previousUser) ||
213
- (!!previousDate && currentDate !== previousDate);
95
+ (previousUser !== null && currentUser !== previousUser) ||
96
+ (previousDate !== null && currentDate !== previousDate);
214
97
  previousUser = currentUser;
215
98
  previousDate = currentDate;
216
- const user = item.createdByCustomer !== undefined
217
- ? item.createdByCustomer
218
- ? 'customer'
219
- : 'internal'
220
- : currentUser === 'Case Diagnostics' || currentUser === 'GSS Tools'
221
- ? 'internal'
222
- : 'customer';
99
+ const user = item.createdByCustomer ? 'customer' : 'internal';
223
100
  const leftEvent = {
224
101
  date: currentDate,
225
102
  text: format(eventDate, 'h:mm a zzz'),
@@ -228,11 +105,8 @@ const transformApiResponseToTimelineData = (apiResponse) => {
228
105
  if (item.type === 'Change') {
229
106
  outputText = applyReplacements(item);
230
107
  }
231
- else {
232
- outputText = stripHTML(outputText);
233
- }
234
108
  const rightEvent = {
235
- date: `${item.createdByUserName} ${outputText}`,
109
+ date: item.createdByUserName ? `${item.createdByUserName} ${outputText}` : outputText,
236
110
  text: '',
237
111
  user: user,
238
112
  useAvatar: useAvatar,
@@ -240,27 +114,24 @@ const transformApiResponseToTimelineData = (apiResponse) => {
240
114
  return {
241
115
  left: leftEvent,
242
116
  right: rightEvent,
117
+ photoUrl: item.photoUrl,
118
+ userName: currentUser,
243
119
  };
244
120
  });
245
121
  return timelineEvents;
246
122
  };
247
- function stripHTML(htmlString) {
248
- const anchorTagRegex = /<a[^>]*>(.*?)<\/a>/g;
249
- // We are trying to return the text without having the info in the anchor.
250
- return htmlString.replace(anchorTagRegex, '');
251
- }
252
- const Timeline = ({ caseNumber }) => {
123
+ const Timeline = ({ caseNumber, sfdcCaseId, isViewerInternal }) => {
253
124
  const { t } = useTranslation();
254
125
  const [timelineEvents, setTimelineEvents] = useState([]);
255
- const [originalTimelineEvents, setOriginalTimelineEvents] = useState([]);
256
- const [isFetchingData, setIsFetchingData] = useState();
257
126
  const lastNodeRef = useRef(null);
127
+ const [sortOrder, setSortOrder] = useState('DESC');
128
+ const { historyItems, loading: isFetchingData, error } = useCaseHistory(sfdcCaseId, isViewerInternal, sortOrder);
129
+ const fetchError = error ? t('Unable to connect') : null;
258
130
  const [dateValue, setDateValue] = useState('');
259
131
  const [searchValue, setSearchValue] = useState('');
260
132
  const [filteredEvents, setFilteredEvents] = useState([]);
261
133
  const [isSelectOpen, setIsSelectOpen] = useState(false);
262
134
  const [selectedOrder, setSelectedOrder] = useState('Newest to Oldest');
263
- const [fetchError, setFetchError] = useState(null);
264
135
  const [page, setPage] = useState(1);
265
136
  const [perPage, setPerPage] = useState(20);
266
137
  const onSetPage = (_, newPage) => {
@@ -284,55 +155,31 @@ const Timeline = ({ caseNumber }) => {
284
155
  e.preventDefault();
285
156
  if (value !== selectedOrder) {
286
157
  setSelectedOrder(value);
287
- reorderTimelineEvents(value);
158
+ setSortOrder(value === 'Newest to Oldest' ? 'DESC' : 'ASC');
288
159
  }
289
160
  setIsSelectOpen(false);
290
161
  };
291
- const reorderTimelineEvents = (order) => {
292
- const events = order === 'Newest to Oldest' ? [...originalTimelineEvents] : [...originalTimelineEvents].reverse();
293
- setTimelineEvents(applyAvatarLogic(events));
294
- };
162
+ // Re-derives avatar/date-header boundaries after list mutations (filter, sort, paginate).
295
163
  const applyAvatarLogic = (events) => {
296
164
  let previousUser = null;
297
165
  let previousDate = null;
298
166
  return events.map((event, index) => {
299
- const currentUser = event.right.date.split(' ')[0];
167
+ const currentUser = event.userName || '';
300
168
  const currentDate = event.left.date;
301
169
  const useAvatar = index === 0 ||
302
- (!!previousUser && currentUser !== previousUser) ||
303
- (!!previousDate && currentDate !== previousDate);
170
+ (previousUser !== null && currentUser !== previousUser) ||
171
+ (previousDate !== null && currentDate !== previousDate);
304
172
  previousUser = currentUser;
305
173
  previousDate = currentDate;
306
174
  return Object.assign(Object.assign({}, event), { right: Object.assign(Object.assign({}, event.right), { useAvatar: useAvatar }) });
307
175
  });
308
176
  };
309
177
  useEffect(() => {
310
- function fetchHistory() {
311
- return __awaiter(this, void 0, void 0, function* () {
312
- setIsFetchingData(true);
313
- setFetchError(null);
314
- const options = {
315
- sortField: 'createdDate',
316
- sortOrder: 'DESC',
317
- showVerbose: true,
318
- };
319
- try {
320
- const response = yield caseHistory.getHistoryv1(caseNumber, options);
321
- const transformedData = transformApiResponseToTimelineData(response);
322
- setTimelineEvents(transformedData);
323
- setOriginalTimelineEvents(transformedData);
324
- }
325
- catch (error) {
326
- console.error('Failed to fetch history:', error);
327
- setFetchError('Unable to connect');
328
- }
329
- finally {
330
- setIsFetchingData(false);
331
- }
332
- });
178
+ if (historyItems.length > 0) {
179
+ const transformedData = transformApiResponseToTimelineData({ historyItems });
180
+ setTimelineEvents(transformedData);
333
181
  }
334
- fetchHistory();
335
- }, [caseNumber]);
182
+ }, [historyItems]);
336
183
  const futureDateValidator = (date) => {
337
184
  const today = new Date();
338
185
  today.setHours(0, 0, 0, 0); // Normalize to midnight
@@ -341,6 +188,9 @@ const Timeline = ({ caseNumber }) => {
341
188
  }
342
189
  return '';
343
190
  };
191
+ // Measures the DOM to shorten the vertical timeline connector line so it does not
192
+ // extend past the last node. Sets the --timeline-bottom CSS variable, recomputed
193
+ // on resize and list changes via requestAnimationFrame.
344
194
  const updateLineStyle = () => {
345
195
  const timelineElement = document.querySelector('.timeline');
346
196
  if (timelineElement) {
@@ -375,10 +225,13 @@ const Timeline = ({ caseNumber }) => {
375
225
  timelineElement.style.setProperty('--timeline-bottom', '0px');
376
226
  }
377
227
  }
378
- return () => window.removeEventListener('resize', debouncedUpdateLineStyle);
228
+ return () => {
229
+ debouncedUpdateLineStyle.cancel();
230
+ window.removeEventListener('resize', debouncedUpdateLineStyle);
231
+ };
379
232
  }, [isFetchingData, filteredEvents, page, perPage]);
380
- const handleSearchChange = (value) => {
381
- setSearchValue(value.target.value);
233
+ const handleSearchChange = (_, value) => {
234
+ setSearchValue(value.trim());
382
235
  };
383
236
  const handleClear = () => {
384
237
  setSearchValue('');
@@ -414,41 +267,40 @@ const Timeline = ({ caseNumber }) => {
414
267
  }, [searchValue, dateValue, timelineEvents]);
415
268
  const handleReload = (e) => {
416
269
  e.preventDefault();
417
- window.location.href = window.location.href;
418
270
  window.location.reload();
419
271
  };
420
272
  const renderTimelineContent = () => {
421
273
  if (fetchError) {
422
- return (React.createElement(EmptyState, { variant: EmptyStateVariant.full },
423
- React.createElement(EmptyStateHeader, { titleText: "Unable to connect", icon: React.createElement(EmptyStateIcon, { icon: ExclamationCircleIcon, color: globalDangerColor100.value }), headingLevel: "h2" }),
274
+ return (React.createElement(EmptyState, { headingLevel: "h2", icon: ExclamationCircleIcon, titleText: "Unable to connect", variant: EmptyStateVariant.full },
424
275
  React.createElement(EmptyStateBody, null,
425
- React.createElement(Trans, null,
426
- "Try ",
427
- React.createElement("a", { href: "#", onClick: handleReload }, "reloading the page"),
428
- ' ',
429
- "or check back later"))));
276
+ React.createElement(Trans, { i18nKey: "Try <reloadLink>reloading the page</reloadLink> or check back later", components: {
277
+ // eslint-disable-next-line jsx-a11y/anchor-has-content, jsx-a11y/anchor-is-valid
278
+ reloadLink: React.createElement("a", { href: "#", onClick: handleReload }),
279
+ } }))));
430
280
  }
431
281
  if (filteredEvents.length < 1) {
432
- return (React.createElement(EmptyState, { variant: EmptyStateVariant.full },
433
- React.createElement(EmptyStateHeader, { titleText: React.createElement(Trans, null, "No results found"), icon: React.createElement(EmptyStateIcon, { icon: SearchIcon }), headingLevel: "h2" }),
282
+ return (React.createElement(EmptyState, { headingLevel: "h2", icon: SearchIcon, titleText: React.createElement(Trans, null, "No results found"), variant: EmptyStateVariant.full },
434
283
  React.createElement(EmptyStateBody, null,
435
284
  React.createElement(Trans, null, "Try modifying your search query or changing the date range and try again."))));
436
285
  }
437
286
  const paginatedEvents = filteredEvents.slice((page - 1) * perPage, page * perPage);
438
- return (React.createElement(React.Fragment, null, paginatedEvents.map((node, index) => (React.createElement(TimelineNode, { key: index, leftEvent: node.left, rightEvent: node.right, user: node.right.user, useAvatar: node.right.useAvatar, ref: index === paginatedEvents.length - 1 ? lastNodeRef : null })))));
287
+ return (React.createElement(React.Fragment, null, paginatedEvents.map((node, index) => (React.createElement(TimelineNode, { key: index, leftEvent: node.left, rightEvent: node.right, user: node.right.user, useAvatar: node.right.useAvatar, photoUrl: node.photoUrl, searchValue: searchValue, highlightDate: !!dateValue, ref: index === paginatedEvents.length - 1 ? lastNodeRef : null })))));
439
288
  };
440
289
  return (React.createElement(React.Fragment, null,
441
290
  React.createElement("div", { className: "timelineMenu" },
442
291
  React.createElement(SearchInput, { placeholder: t('Search for a user, action, or keyword'), value: searchValue, onChange: handleSearchChange, onClear: handleClear, className: "case-history-timeline-search" }),
443
292
  React.createElement("div", { className: "case-history-timeline-datepicker" },
444
- React.createElement(DatePicker, { value: dateValue, onChange: (_event, value) => handleDateChange(value), validators: [futureDateValidator] }),
445
- React.createElement(Button, { onClick: () => setDateValue(''), isDisabled: isEmpty(dateValue) }, "Reset"))),
293
+ React.createElement(DatePicker, { value: dateValue, invalidFormatText: t('Invalid date format.'), onChange: (_event, value) => handleDateChange(value), validators: [futureDateValidator] }),
294
+ React.createElement(Button, { className: "pf-v6-u-ml-xs", onClick: () => setDateValue(''), isDisabled: isEmpty(dateValue) },
295
+ React.createElement(Trans, null, "Reset")))),
446
296
  React.createElement("div", { className: "timeline-controls" },
447
297
  React.createElement("div", { className: "timeline-pagination" }, renderPagination()),
448
298
  React.createElement("div", { className: "timeline-sort-order-select" },
449
- React.createElement(Select, { id: "order-select", isOpen: isSelectOpen, selected: selectedOrder, onSelect: handleSelect, onOpenChange: (isOpen) => setIsSelectOpen(isOpen), shouldFocusToggleOnSelect: false, toggle: (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: handleSelectToggle, isExpanded: isSelectOpen, style: { width: '200px' } }, selectedOrder)) },
450
- React.createElement(SelectOption, { value: "Newest to Oldest" }, "Newest to Oldest"),
451
- React.createElement(SelectOption, { value: "Oldest to Newest" }, "Oldest to Newest")))),
299
+ React.createElement(Select, { id: "order-select", isOpen: isSelectOpen, selected: selectedOrder, onSelect: handleSelect, onOpenChange: (isOpen) => setIsSelectOpen(isOpen), shouldFocusToggleOnSelect: false, toggle: (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: handleSelectToggle, isExpanded: isSelectOpen }, selectedOrder === 'Newest to Oldest' ? (React.createElement(Trans, null, "Newest to Oldest")) : (React.createElement(Trans, null, "Oldest to Newest")))) },
300
+ React.createElement(SelectOption, { value: "Newest to Oldest" },
301
+ React.createElement(Trans, null, "Newest to Oldest")),
302
+ React.createElement(SelectOption, { value: "Oldest to Newest" },
303
+ React.createElement(Trans, null, "Oldest to Newest"))))),
452
304
  isFetchingData ? (React.createElement("div", { className: "timeline-loading-spinner" },
453
305
  React.createElement(Spinner, { size: "xl" }))) : (React.createElement("div", { className: `timeline ${filteredEvents.length === 0 ? 'timeline-empty' : ''}` }, renderTimelineContent())),
454
306
  React.createElement("div", { className: "timeline-controls" },
@@ -1,14 +1,13 @@
1
1
  import React from 'react';
2
- declare const defaultProps: {
3
- caseNumber: any;
4
- };
5
- type DefaultProps = typeof defaultProps;
6
- interface IProps extends DefaultProps {
2
+ interface IProps {
3
+ caseNumber?: string;
4
+ privateNotes?: string;
7
5
  }
8
6
  declare function CasePrivateNotes(props: IProps): React.JSX.Element;
9
7
  declare namespace CasePrivateNotes {
10
8
  var defaultProps: {
11
9
  caseNumber: any;
10
+ privateNotes: string | undefined;
12
11
  };
13
12
  }
14
13
  export default CasePrivateNotes;
@@ -1 +1 @@
1
- {"version":3,"file":"CasePrivateNotes.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAQ/D,QAAA,MAAM,YAAY;;CAEjB,CAAC;AAEF,KAAK,YAAY,GAAG,OAAO,YAAY,CAAC;AAExC,UAAU,MAAO,SAAQ,YAAY;CAAG;AAExC,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBAwGtC;kBAxGQ,gBAAgB;;;;;AA2GzB,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"CasePrivateNotes.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAa/D,UAAU,MAAM;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBAyHtC;kBAzHQ,gBAAgB;;;sBARM,MAAM,GAAG,SAAS;;;AAoIjD,eAAe,gBAAgB,CAAC"}
@@ -7,6 +7,8 @@ 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 { useApolloClient } from '@apollo/client/react';
11
+ import { Button } from '@patternfly/react-core';
10
12
  import { LoadingIndicator, TextAreaResizable, ToastNotification } from '@rh-support/components';
11
13
  import { useCanEditCase } from '@rh-support/react-context';
12
14
  import { AbilityContext, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
@@ -16,17 +18,24 @@ import React, { useContext, useEffect, useState } from 'react';
16
18
  import { Trans, useTranslation } from 'react-i18next';
17
19
  import { useCaseDispatch, useCaseSelector } from '../../../../context/CaseContext';
18
20
  import { useCaseUpdateErrorMessage } from '../../../../hooks/useCaseUpdateErrorMessage';
19
- import { updateCaseDetails } from '../../../../reducers/CaseReducer';
21
+ import { updateCaseDetailsGraphQL } from '../../../../reducers/CaseReducer';
20
22
  import { PDFContext } from '../../PDFContainer';
21
23
  const defaultProps = {
22
24
  caseNumber: undefined,
25
+ privateNotes: undefined,
23
26
  };
24
27
  function CasePrivateNotes(props) {
28
+ var _a;
25
29
  const { t } = useTranslation();
26
30
  const caseUpdateError = useCaseUpdateErrorMessage();
27
31
  const ability = useContext(AbilityContext);
32
+ const apolloClient = useApolloClient();
28
33
  const canUpdatePrivateNotes = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_PRIVATE_NOTES_EDIT);
29
- const notes = useCaseSelector((state) => state.caseDetails.notes, isEqual);
34
+ const { caseSalesforceId, existingCaseDetails } = useCaseSelector((state) => ({
35
+ caseSalesforceId: state.caseDetails.id,
36
+ existingCaseDetails: state.caseDetails,
37
+ }), isEqual);
38
+ const notes = (_a = props.privateNotes) !== null && _a !== void 0 ? _a : '';
30
39
  const caseDispatch = useCaseDispatch();
31
40
  const [notesState, setNotes] = useState(notes);
32
41
  const [formIsDirty, setFormIsDirty] = useState(false);
@@ -36,24 +45,33 @@ function CasePrivateNotes(props) {
36
45
  useEffect(() => {
37
46
  if (notes !== notesState) {
38
47
  setNotes(notes);
48
+ setFormIsDirty(false);
39
49
  }
40
50
  // eslint-disable-next-line react-hooks/exhaustive-deps
41
51
  }, [notes]);
42
- const updateCase = (event) => __awaiter(this, void 0, void 0, function* () {
43
- event.preventDefault();
52
+ const persistNotes = () => __awaiter(this, void 0, void 0, function* () {
53
+ if (!props.caseNumber) {
54
+ return;
55
+ }
44
56
  setIsUpdating(true);
45
57
  try {
46
- const caseDetails = { notes: notesState };
47
- yield updateCaseDetails(caseDispatch, props.caseNumber, caseDetails);
58
+ yield updateCaseDetailsGraphQL(caseDispatch, apolloClient, props.caseNumber, { notes: notesState }, false, {
59
+ salesforceCaseId: caseSalesforceId,
60
+ existingCaseDetails,
61
+ });
48
62
  setFormIsDirty(false);
49
63
  ToastNotification.addSuccessMessage(t(`Notes has been successfully updated`));
50
64
  setIsUpdating(false);
51
65
  }
52
66
  catch (e) {
53
- caseUpdateError.showError(e, t(`Failed to update notes`));
67
+ caseUpdateError.showFieldError(e, t('Private notes'), persistNotes);
54
68
  setIsUpdating(false);
55
69
  }
56
70
  });
71
+ const updateCase = (event) => __awaiter(this, void 0, void 0, function* () {
72
+ event.preventDefault();
73
+ yield persistNotes();
74
+ });
57
75
  const discardNotes = (event) => {
58
76
  event.preventDefault();
59
77
  setNotes(notes);
@@ -70,7 +88,6 @@ function CasePrivateNotes(props) {
70
88
  }
71
89
  setNotes(notesState);
72
90
  };
73
- // To check if private notes is empty
74
91
  const isPrivateNotesEmpty = isEmpty(notesState === null || notesState === void 0 ? void 0 : notesState.trim());
75
92
  return (React.createElement(React.Fragment, null,
76
93
  React.createElement("div", null,
@@ -78,14 +95,14 @@ function CasePrivateNotes(props) {
78
95
  React.createElement(Trans, null, "Notes"))),
79
96
  canUpdatePrivateNotes && (React.createElement("form", null,
80
97
  React.createElement(TextAreaResizable, { style: { minHeight: '200px' }, id: "rha-case-notes", disabled: isUpdating, maxLength: 255, name: "notes", value: notesState, onChange: onChange }),
81
- React.createElement("div", { className: "pf-v5-u-mt-md" },
82
- React.createElement("button", { className: `btn btn-app btn-primary ${isExportingPDF ? 'hide-in-pdf' : ''}`, onClick: updateCase, disabled: isPrivateNotesEmpty || isUpdating || !formIsDirty, type: "button" },
98
+ React.createElement("div", { className: "pf-v6-u-mt-md" },
99
+ React.createElement(Button, { className: `${isExportingPDF ? 'hide-in-pdf' : ''}`, onClick: updateCase, isDisabled: isPrivateNotesEmpty || isUpdating || !formIsDirty, variant: "primary" },
83
100
  React.createElement(Trans, null, "Update"),
84
101
  " ",
85
102
  React.createElement(LoadingIndicator, { show: isUpdating, isInline: true })),
86
- React.createElement("button", { className: `btn btn-app btn-link ${isExportingPDF ? 'hide-in-pdf' : ''}`, onClick: discardNotes, disabled: isUpdating || !formIsDirty, type: "button" },
103
+ React.createElement(Button, { className: `pf-v6-u-ml-md ${isExportingPDF ? 'hide-in-pdf' : ''}`, onClick: discardNotes, disabled: isUpdating || !formIsDirty, variant: "secondary" },
87
104
  React.createElement(Trans, null, "Discard Changes"))))),
88
- React.createElement("p", { className: "pf-v5-u-mt-xl" },
105
+ React.createElement("p", { className: "pf-v6-u-mt-xl" },
89
106
  React.createElement(Trans, null, "Please note, contents of this field are not visible to Red Hat Support professionals."))));
90
107
  }
91
108
  CasePrivateNotes.defaultProps = defaultProps;
@@ -1 +1 @@
1
- {"version":3,"file":"CaseSummary.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseSummary/CaseSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAwB3B,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,UAAW,MAAM,sBA4KxC,CAAC"}
1
+ {"version":3,"file":"CaseSummary.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseSummary/CaseSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAuB3B,OAAO,KAA0C,MAAM,OAAO,CAAC;AAQ/D,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,sBA+LxC,CAAC"}