@rh-support/troubleshoot 2.7.1 → 2.7.10
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.
- package/lib/esm/components/AccountInfo/AccountSelector.d.ts.map +1 -1
- package/lib/esm/components/AccountInfo/AccountSelector.js +23 -33
- package/lib/esm/components/AccountInfo/ManagedAccountsDropdown.js +1 -1
- package/lib/esm/components/AccountInfo/OwnerSelector.d.ts.map +1 -1
- package/lib/esm/components/AccountInfo/OwnerSelector.js +90 -24
- package/lib/esm/components/AccountInfo/css/accountSelector.css +3 -2
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.js +47 -35
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +167 -90
- package/lib/esm/components/CaseEditView/ArchivedCaseBanner.d.ts +7 -0
- package/lib/esm/components/CaseEditView/ArchivedCaseBanner.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/ArchivedCaseBanner.js +12 -0
- package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Case.js +103 -37
- package/lib/esm/components/CaseEditView/CaseDetailsAside.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsAside.js +44 -37
- package/lib/esm/components/CaseEditView/CaseDetailsErrorMessage.d.ts +1 -0
- package/lib/esm/components/CaseEditView/CaseDetailsErrorMessage.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsErrorMessage.js +32 -11
- package/lib/esm/components/CaseEditView/CaseDetailsTabs.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsTabs.js +94 -72
- package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.d.ts +2 -0
- package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.js +4 -4
- package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.d.ts +3 -2
- package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.js +24 -11
- package/lib/esm/components/CaseEditView/CaseOverview/CaseType.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/CaseType.js +2 -4
- package/lib/esm/components/CaseEditView/CaseOverview/DateTime.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/DateTime.js +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/index.js +123 -70
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.js +240 -121
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.d.ts +0 -1
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.js +6 -6
- package/lib/esm/components/CaseEditView/CaseSolutions/HandpicketItem.js +3 -3
- package/lib/esm/components/CaseEditView/CaseSubscriptionAbuseAlert.js +1 -1
- package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.d.ts +1 -3
- package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.js +55 -43
- package/lib/esm/components/CaseEditView/PDFContainer.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/PDFContainer.js +19 -15
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.js +33 -16
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSessionModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSessionModal.js +31 -33
- package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.js +116 -91
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreement.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreement.js +33 -16
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.js +114 -89
- package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.d.ts +15 -0
- package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.js +47 -0
- package/lib/esm/components/CaseEditView/ShareCase/TnC.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseActionPlan/CaseActionPlan.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseActionPlan/CaseActionPlan.js +9 -6
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.js +54 -48
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.js +84 -17
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseHostname.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseHostname.js +8 -8
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInformation.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInformation.js +0 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.js +4 -3
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenShiftPopover.js +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenShiftV3Popover.js +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.js +137 -59
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CasePhoneNumberConfirmAlert.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CasePhoneNumberConfirmAlert.js +6 -9
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseReferenceNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseReferenceNumber.js +13 -8
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseSbrGroups.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseSbrGroups.js +3 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.js +119 -65
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/SFDCUrl.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/SFDCUrl.js +3 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/Summary.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/Summary.js +22 -15
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/useCustomEmails.d.ts +1 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/useCustomEmails.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/useCustomEmails.js +6 -5
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.d.ts +25 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.js +102 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.js +44 -28
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseChat.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseChat.js +7 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.d.ts +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.js +158 -101
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts +10 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.js +294 -143
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseExternalTrackerUpdate.js +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.js +16 -16
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/DiscussionItemLink.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/DiscussionItemLink.js +9 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/JumpAndCopyLink.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/JumpAndCopyLink.js +8 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useAttachmentUploadCompletion.d.ts +29 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useAttachmentUploadCompletion.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useAttachmentUploadCompletion.js +29 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.d.ts +17 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.js +62 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.d.ts +1 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.js +14 -12
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts +9 -3
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +223 -277
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.js +33 -25
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.d.ts +0 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.js +8 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +55 -42
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts +36 -3
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.js +100 -248
- package/lib/esm/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.d.ts +4 -5
- package/lib/esm/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.js +29 -12
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.js +32 -18
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummaryErrorMessage.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummaryErrorMessage.js +5 -7
- package/lib/esm/components/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.js +41 -55
- package/lib/esm/components/CaseEditView/Tabs/RelatedTasks/RelatedTasks.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/RelatedTasks/RelatedTasks.js +2 -3
- package/lib/esm/components/CaseInformation/AISureMessageCard.d.ts +7 -0
- package/lib/esm/components/CaseInformation/AISureMessageCard.d.ts.map +1 -0
- package/lib/esm/components/CaseInformation/AISureMessageCard.js +15 -0
- package/lib/esm/components/CaseInformation/CaseGroup.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/CaseGroup.js +177 -55
- package/lib/esm/components/CaseInformation/CaseInformation.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/CaseInformation.js +15 -14
- package/lib/esm/components/CaseInformation/CaseLabels.d.ts +3 -0
- package/lib/esm/components/CaseInformation/CaseLabels.d.ts.map +1 -0
- package/lib/esm/components/CaseInformation/CaseLabels.js +108 -0
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.js +108 -31
- package/lib/esm/components/CaseInformation/ContactPhoneNumberPopOver.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/ContactPhoneNumberPopOver.js +3 -3
- package/lib/esm/components/CaseInformation/Description.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/Description.js +25 -7
- package/lib/esm/components/CaseInformation/FileDiag.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/FileDiag.js +2 -5
- package/lib/esm/components/CaseInformation/Fts.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/Fts.js +41 -27
- package/lib/esm/components/CaseInformation/OpenCaseIssue.d.ts +1 -0
- package/lib/esm/components/CaseInformation/OpenCaseIssue.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/OpenCaseIssue.js +8 -3
- package/lib/esm/components/CaseInformation/Severity.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/Severity.js +34 -25
- package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/SupportLevel.js +43 -51
- package/lib/esm/components/CaseManagement/CaseLabelsCreate.d.ts +4 -0
- package/lib/esm/components/CaseManagement/CaseLabelsCreate.d.ts.map +1 -0
- package/lib/esm/components/CaseManagement/CaseLabelsCreate.js +141 -0
- package/lib/esm/components/CaseManagement/CaseLanguageSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/CaseLanguageSelector.js +14 -17
- package/lib/esm/components/CaseManagement/CaseManagement.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/CaseManagement.js +15 -12
- package/lib/esm/components/CaseManagement/Cep.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/Cep.js +56 -51
- package/lib/esm/components/CaseManagement/ESSRemoteSessionCheckBox.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/ESSRemoteSessionCheckBox.js +50 -42
- package/lib/esm/components/CaseManagement/NoClusterIDReasonSelector.d.ts +2 -1
- package/lib/esm/components/CaseManagement/NoClusterIDReasonSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/NoClusterIDReasonSelector.js +74 -72
- package/lib/esm/components/CaseManagement/OpenShiftClusterId.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/OpenShiftClusterId.js +14 -9
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts +1 -4
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.js +136 -84
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.js +12 -8
- package/lib/esm/components/CaseManagement/SendNotifications/AddContactToGroupModal.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/AddContactToGroupModal.js +8 -8
- package/lib/esm/components/CaseManagement/SendNotifications/AddCustomEmailToAccountModal.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/AddCustomEmailToAccountModal.js +19 -21
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +15 -10
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.js +94 -49
- package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.d.ts.map +1 -1
- package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.js +17 -34
- package/lib/esm/components/ConfirmationModals/PreCaseConfirmationModals.d.ts.map +1 -1
- package/lib/esm/components/ConfirmationModals/PreferredSecureSupportModal.d.ts.map +1 -1
- package/lib/esm/components/ConfirmationModals/PreferredSecureSupportModal.js +1 -1
- package/lib/esm/components/Cve/CveItem.d.ts.map +1 -1
- package/lib/esm/components/Cve/CveItem.js +14 -11
- package/lib/esm/components/Cve/CveModal.d.ts.map +1 -1
- package/lib/esm/components/Cve/CveModal.js +12 -11
- package/lib/esm/components/Cve/CvePanel.d.ts.map +1 -1
- package/lib/esm/components/Cve/CvePanel.js +18 -10
- package/lib/esm/components/Cve/CveSidebar.d.ts.map +1 -1
- package/lib/esm/components/Cve/CveSidebar.js +9 -8
- package/lib/esm/components/EditDescription/EditDescription.d.ts.map +1 -1
- package/lib/esm/components/EditDescription/EditDescription.js +4 -2
- package/lib/esm/components/IdeaInformation/IdeaInformation.d.ts.map +1 -1
- package/lib/esm/components/IdeaInformation/IdeaInformation.js +30 -24
- package/lib/esm/components/ImproveCase/Hostname.d.ts.map +1 -1
- package/lib/esm/components/ImproveCase/Hostname.js +2 -2
- package/lib/esm/components/ImproveCase/KtQuestions.js +6 -6
- package/lib/esm/components/OpenCase/CaseTypeIcons/BugIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/CertificationIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/CustomerServiceIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/DocumentationIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/GearIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/IdeaIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/RcaIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/OpenCase.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/OpenCase.js +2 -8
- package/lib/esm/components/OpenCase/SupportTypeIcons/BugIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/CertificationIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/CustomerServiceIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/DocumentationIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/GearIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/IdeaIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/RcaIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeSelectorPage.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeSelectorPage.js +10 -15
- package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts +0 -1
- package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/AllProductsSelector.js +20 -39
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts +1 -1
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.js +67 -59
- package/lib/esm/components/ProductSelector/NewProductVersionSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/NewProductVersionSelector.js +47 -56
- package/lib/esm/components/ProductSelector/ProductNotEntitledWarning.d.ts +3 -0
- package/lib/esm/components/ProductSelector/ProductNotEntitledWarning.d.ts.map +1 -0
- package/lib/esm/components/ProductSelector/ProductNotEntitledWarning.js +9 -0
- package/lib/esm/components/ProductSelector/ProductSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/ProductSelector.js +7 -16
- package/lib/esm/components/ProductSelector/ProductVersionDropdownSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/ProductVersionDropdownSelector.js +13 -5
- package/lib/esm/components/Recommendations/AsideResults.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/AsideResults.js +22 -12
- package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts +2 -0
- package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/ClusterRecommendationItems.js +18 -13
- package/lib/esm/components/Recommendations/ClusterRecommendationToast.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/ClusterRecommendationToast.js +1 -4
- package/lib/esm/components/Recommendations/ClusterRecommendations.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/ClusterRecommendations.js +3 -9
- package/lib/esm/components/Recommendations/ClusterRecommendationsModal.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/ClusterRecommendationsModal.js +10 -11
- package/lib/esm/components/Recommendations/CriticalSolutionsToast.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/CriticalSolutionsToast.js +1 -1
- package/lib/esm/components/Recommendations/EARules/EARule.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARule.js +9 -4
- package/lib/esm/components/Recommendations/EARules/EARuleInfoAccordion.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARuleInfoAccordion.js +6 -4
- package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.js +9 -9
- package/lib/esm/components/Recommendations/InsightsResults.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/InsightsResults.js +9 -5
- package/lib/esm/components/Recommendations/InsightsRuleInfo.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/InsightsRuleInfo.js +25 -16
- package/lib/esm/components/Recommendations/RecommendationFeedbackModal.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/RecommendationFeedbackModal.js +7 -7
- package/lib/esm/components/Recommendations/RecommendationInfoBox.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/RecommendationInfoBox.js +7 -7
- package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/Recommendations.js +51 -42
- package/lib/esm/components/Recommendations/RecommendationsLoader.js +1 -1
- package/lib/esm/components/Recommendations/RulesModal.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/RulesModal.js +10 -12
- package/lib/esm/components/Recommendations/WatsonxAiIcon.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/WatsonxAiIcon.js +9 -10
- package/lib/esm/components/RemoteRider/RemoteRiderAcceptanceModal.d.ts.map +1 -1
- package/lib/esm/components/RemoteRider/RemoteRiderAcceptanceModal.js +10 -8
- package/lib/esm/components/RemoteRider/RemoteRiderBanner.js +1 -1
- package/lib/esm/components/Review/Review.d.ts.map +1 -1
- package/lib/esm/components/Review/Review.js +43 -28
- package/lib/esm/components/SessionRestore/RestoreLastSessionModal.d.ts.map +1 -1
- package/lib/esm/components/SessionRestore/RestoreLastSessionModal.js +7 -5
- package/lib/esm/components/SessionRestore/SessionRestore.d.ts +2 -0
- package/lib/esm/components/SessionRestore/SessionRestore.d.ts.map +1 -1
- package/lib/esm/components/SessionRestore/SessionRestore.js +35 -13
- package/lib/esm/components/SessionRestore/SessionRestoreCard.js +1 -1
- package/lib/esm/components/SubmitCase/SubmitCase.d.ts.map +1 -1
- package/lib/esm/components/SubmitCase/SubmitCase.js +34 -22
- package/lib/esm/components/Suggestions/EmptyTopContentSidebar.d.ts +3 -0
- package/lib/esm/components/Suggestions/EmptyTopContentSidebar.d.ts.map +1 -0
- package/lib/esm/components/Suggestions/EmptyTopContentSidebar.js +26 -0
- package/lib/esm/components/Suggestions/Suggestions.d.ts.map +1 -1
- package/lib/esm/components/Suggestions/Suggestions.js +31 -25
- package/lib/esm/components/Suggestions/TopContent.d.ts.map +1 -1
- package/lib/esm/components/Suggestions/TopContent.js +17 -17
- package/lib/esm/components/TroubleshootSection/AskRedHat.d.ts +9 -0
- package/lib/esm/components/TroubleshootSection/AskRedHat.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/AskRedHat.js +367 -0
- package/lib/esm/components/TroubleshootSection/CloseButton.d.ts +9 -0
- package/lib/esm/components/TroubleshootSection/CloseButton.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/CloseButton.js +5 -0
- package/lib/esm/components/TroubleshootSection/QuickResponse.d.ts +15 -0
- package/lib/esm/components/TroubleshootSection/QuickResponse.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/QuickResponse.js +26 -0
- package/lib/esm/components/TroubleshootSection/ResponseActionButton.d.ts +18 -0
- package/lib/esm/components/TroubleshootSection/ResponseActionButton.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/ResponseActionButton.js +28 -0
- package/lib/esm/components/TroubleshootSection/ResponseActions.d.ts +20 -0
- package/lib/esm/components/TroubleshootSection/ResponseActions.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/ResponseActions.js +54 -0
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts +20 -0
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts.map +1 -1
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +346 -27
- package/lib/esm/components/TroubleshootSection/UserFeedback.d.ts +13 -0
- package/lib/esm/components/TroubleshootSection/UserFeedback.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/UserFeedback.js +50 -0
- package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.d.ts +10 -0
- package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.js +50 -0
- package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.d.ts +9 -0
- package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.js +9 -0
- package/lib/esm/components/TroubleshootSection/icons/StarIcon.d.ts +9 -0
- package/lib/esm/components/TroubleshootSection/icons/StarIcon.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/icons/StarIcon.js +17 -0
- package/lib/esm/components/UpdateSeverityModal/UpdateSeverityModal.d.ts.map +1 -1
- package/lib/esm/components/UpdateSeverityModal/UpdateSeverityModal.js +157 -105
- package/lib/esm/components/shared/Constants.d.ts +1 -4
- package/lib/esm/components/shared/Constants.d.ts.map +1 -1
- package/lib/esm/components/shared/Constants.js +1 -4
- package/lib/esm/components/shared/Rule.d.ts.map +1 -1
- package/lib/esm/components/shared/Rule.js +6 -6
- package/lib/esm/components/shared/fileUpload/FileLister.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/FileLister.js +11 -14
- package/lib/esm/components/shared/fileUpload/FileUpload.js +2 -3
- package/lib/esm/components/shared/fileUpload/FileUploader.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/FileUploader.js +3 -1
- package/lib/esm/components/shared/fileUpload/WidgetFileUploader.d.ts +1 -0
- package/lib/esm/components/shared/fileUpload/WidgetFileUploader.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/WidgetFileUploader.js +13 -10
- package/lib/esm/components/shared/fileUpload/common/FileUploaderInfoIcon.js +1 -1
- package/lib/esm/components/shared/fileUpload/css/fileSelector.css +2 -0
- package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.d.ts +1 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.js +1 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.js +4 -4
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelectorImage.js +2 -2
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.d.ts +22 -5
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.js +311 -60
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentReducer.d.ts +5 -1
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentReducer.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentReducer.js +36 -1
- package/lib/esm/components/shared/fileUpload/types/index.d.ts +5 -1
- package/lib/esm/components/shared/fileUpload/types/index.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/useFileUploader.d.ts +2 -2
- package/lib/esm/components/shared/fileUpload/useFileUploader.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/useFileUploader.js +119 -47
- package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts +16 -6
- package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts.map +1 -1
- package/lib/esm/components/shared/input/ContactSelectorInternal.js +133 -23
- package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
- package/lib/esm/components/shared/useIsSectionValid.js +70 -91
- package/lib/esm/components/shared/usePostComment.d.ts.map +1 -1
- package/lib/esm/components/shared/usePostComment.js +16 -28
- package/lib/esm/components/shared/utils.d.ts +1 -0
- package/lib/esm/components/shared/utils.d.ts.map +1 -1
- package/lib/esm/components/shared/utils.js +9 -3
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +187 -37
- package/lib/esm/components/wizardLayout/MainSection.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/MainSection.js +5 -4
- package/lib/esm/components/wizardLayout/NewFeatureModal.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/NewFeatureModal.js +6 -6
- package/lib/esm/components/wizardLayout/WizardAside.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardAside.js +35 -15
- package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardLayout.js +17 -46
- package/lib/esm/components/wizardLayout/WizardMain.d.ts +10 -1
- package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardMain.js +361 -22
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts +8 -2
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardNavigation.js +118 -75
- package/lib/esm/components/wizardLayout/index.d.ts +1 -0
- package/lib/esm/components/wizardLayout/index.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/index.js +1 -0
- package/lib/esm/constants/askRedHatMessages.d.ts +35 -0
- package/lib/esm/constants/askRedHatMessages.d.ts.map +1 -0
- package/lib/esm/constants/askRedHatMessages.js +61 -0
- package/lib/esm/constants/caseDetailsConstants.d.ts +15 -11
- package/lib/esm/constants/caseDetailsConstants.d.ts.map +1 -1
- package/lib/esm/constants/caseDetailsConstants.js +32 -12
- package/lib/esm/context/AIResponseContext.d.ts +10 -0
- package/lib/esm/context/AIResponseContext.d.ts.map +1 -0
- package/lib/esm/context/AIResponseContext.js +26 -0
- package/lib/esm/context/CaseContext.d.ts.map +1 -1
- package/lib/esm/context/RootTroubleshootProvider.d.ts.map +1 -1
- package/lib/esm/context/RootTroubleshootProvider.js +8 -6
- package/lib/esm/css/AskRedHat.css +495 -0
- package/lib/esm/css/app.css +54 -17
- package/lib/esm/css/case.css +499 -37
- package/lib/esm/css/productSelector.css +5 -1
- package/lib/esm/css/results.css +2 -2
- package/lib/esm/graphql/index.d.ts +4 -0
- package/lib/esm/graphql/index.d.ts.map +1 -0
- package/lib/esm/graphql/index.js +3 -0
- package/lib/esm/graphql/mutations/createRMECaseEscalation.d.ts +2 -0
- package/lib/esm/graphql/mutations/createRMECaseEscalation.d.ts.map +1 -0
- package/lib/esm/graphql/mutations/createRMECaseEscalation.js +24 -0
- package/lib/esm/graphql/mutations/index.d.ts +2 -0
- package/lib/esm/graphql/mutations/index.d.ts.map +1 -0
- package/lib/esm/graphql/mutations/index.js +1 -0
- package/lib/esm/graphql/queries/getEscalationDetails.d.ts +2 -0
- package/lib/esm/graphql/queries/getEscalationDetails.d.ts.map +1 -0
- package/lib/esm/graphql/queries/getEscalationDetails.js +36 -0
- package/lib/esm/graphql/queries/index.d.ts +2 -0
- package/lib/esm/graphql/queries/index.d.ts.map +1 -0
- package/lib/esm/graphql/queries/index.js +1 -0
- package/lib/esm/graphql/schemas/escalation.d.ts +66 -0
- package/lib/esm/graphql/schemas/escalation.d.ts.map +1 -0
- package/lib/esm/graphql/schemas/escalation.js +1 -0
- package/lib/esm/graphql/schemas/index.d.ts +2 -0
- package/lib/esm/graphql/schemas/index.d.ts.map +1 -0
- package/lib/esm/graphql/schemas/index.js +1 -0
- package/lib/esm/hooks/useAB.d.ts +23 -0
- package/lib/esm/hooks/useAB.d.ts.map +1 -0
- package/lib/esm/hooks/useAB.js +75 -0
- package/lib/esm/hooks/useARHResponse.d.ts +15 -0
- package/lib/esm/hooks/useARHResponse.d.ts.map +1 -0
- package/lib/esm/hooks/useARHResponse.js +103 -0
- package/lib/esm/hooks/useCaseComments/caseCommentsQuery.d.ts +4 -0
- package/lib/esm/hooks/useCaseComments/caseCommentsQuery.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/caseCommentsQuery.js +57 -0
- package/lib/esm/hooks/useCaseComments/index.d.ts +8 -0
- package/lib/esm/hooks/useCaseComments/index.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/index.js +5 -0
- package/lib/esm/hooks/useCaseComments/mapCaseComment.d.ts +25 -0
- package/lib/esm/hooks/useCaseComments/mapCaseComment.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/mapCaseComment.js +75 -0
- package/lib/esm/hooks/useCaseComments/types.d.ts +93 -0
- package/lib/esm/hooks/useCaseComments/types.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/types.js +1 -0
- package/lib/esm/hooks/useCaseComments/useCaseComments.d.ts +26 -0
- package/lib/esm/hooks/useCaseComments/useCaseComments.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/useCaseComments.js +116 -0
- package/lib/esm/hooks/useCaseComments/useCreateCaseComment.d.ts +19 -0
- package/lib/esm/hooks/useCaseComments/useCreateCaseComment.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/useCreateCaseComment.js +33 -0
- package/lib/esm/hooks/useCaseGroupUiState.d.ts +3 -0
- package/lib/esm/hooks/useCaseGroupUiState.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseGroupUiState.js +10 -0
- package/lib/esm/hooks/useCaseHistory.d.ts +26 -0
- package/lib/esm/hooks/useCaseHistory.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseHistory.js +107 -0
- package/lib/esm/hooks/useCaseLabelLinkMutations.d.ts +23 -0
- package/lib/esm/hooks/useCaseLabelLinkMutations.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseLabelLinkMutations.js +84 -0
- package/lib/esm/hooks/useCaseUpdateErrorMessage.d.ts +9 -1
- package/lib/esm/hooks/useCaseUpdateErrorMessage.d.ts.map +1 -1
- package/lib/esm/hooks/useCaseUpdateErrorMessage.js +108 -11
- package/lib/esm/hooks/useResetCaseCreate.d.ts.map +1 -1
- package/lib/esm/hooks/useResetCaseCreate.js +18 -11
- package/lib/esm/hooks/useS3Upload.d.ts +5 -4
- package/lib/esm/hooks/useS3Upload.d.ts.map +1 -1
- package/lib/esm/hooks/useS3Upload.js +28 -30
- package/lib/esm/hooks/useWizard.d.ts +14 -0
- package/lib/esm/hooks/useWizard.d.ts.map +1 -1
- package/lib/esm/hooks/useWizard.js +33 -11
- package/lib/esm/i18n/template-de.d.ts +82 -4
- package/lib/esm/i18n/template-de.d.ts.map +1 -1
- package/lib/esm/i18n/template-de.js +82 -4
- package/lib/esm/i18n/template-es.d.ts +81 -3
- package/lib/esm/i18n/template-es.d.ts.map +1 -1
- package/lib/esm/i18n/template-es.js +81 -3
- package/lib/esm/i18n/template-fr.d.ts +81 -3
- package/lib/esm/i18n/template-fr.d.ts.map +1 -1
- package/lib/esm/i18n/template-fr.js +81 -3
- package/lib/esm/i18n/template-it.d.ts +81 -3
- package/lib/esm/i18n/template-it.d.ts.map +1 -1
- package/lib/esm/i18n/template-it.js +81 -3
- package/lib/esm/i18n/template-jp.d.ts +81 -3
- package/lib/esm/i18n/template-jp.d.ts.map +1 -1
- package/lib/esm/i18n/template-jp.js +81 -3
- package/lib/esm/i18n/template-ko.d.ts +81 -3
- package/lib/esm/i18n/template-ko.d.ts.map +1 -1
- package/lib/esm/i18n/template-ko.js +81 -3
- package/lib/esm/i18n/template-pt.d.ts +81 -3
- package/lib/esm/i18n/template-pt.d.ts.map +1 -1
- package/lib/esm/i18n/template-pt.js +81 -3
- package/lib/esm/i18n/template-ru.d.ts +47 -3
- package/lib/esm/i18n/template-ru.d.ts.map +1 -1
- package/lib/esm/i18n/template-ru.js +47 -3
- package/lib/esm/i18n/template-zh.d.ts +59 -3
- package/lib/esm/i18n/template-zh.d.ts.map +1 -1
- package/lib/esm/i18n/template-zh.js +59 -3
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +2 -0
- package/lib/esm/models/cache.d.ts +0 -2
- package/lib/esm/models/cache.d.ts.map +1 -1
- package/lib/esm/models/caseHistory.d.ts +86 -0
- package/lib/esm/models/caseHistory.d.ts.map +1 -0
- package/lib/esm/models/caseHistory.js +1 -0
- package/lib/esm/reducers/AIResponseConstNTypes.d.ts +90 -0
- package/lib/esm/reducers/AIResponseConstNTypes.d.ts.map +1 -0
- package/lib/esm/reducers/AIResponseConstNTypes.js +33 -0
- package/lib/esm/reducers/AIResponseReducer.d.ts +14 -0
- package/lib/esm/reducers/AIResponseReducer.d.ts.map +1 -0
- package/lib/esm/reducers/AIResponseReducer.js +80 -0
- package/lib/esm/reducers/CaseConstNTypes.d.ts +129 -9
- package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/CaseConstNTypes.js +39 -10
- package/lib/esm/reducers/CaseDetailsPageReducer.d.ts +7 -5
- package/lib/esm/reducers/CaseDetailsPageReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseDetailsPageReducer.js +61 -26
- package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts +11 -10
- package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseDiscussionTabReducer.js +95 -64
- package/lib/esm/reducers/CaseHelpers.d.ts +26 -7
- package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
- package/lib/esm/reducers/CaseHelpers.js +150 -27
- package/lib/esm/reducers/CaseOverviewReducer.d.ts +3 -1
- package/lib/esm/reducers/CaseOverviewReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseOverviewReducer.js +7 -5
- package/lib/esm/reducers/CaseReducer.d.ts +59 -12
- package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseReducer.js +311 -95
- package/lib/esm/reducers/ClusterRecommendationsReducer.d.ts.map +1 -1
- package/lib/esm/reducers/RecommendationsReducer.d.ts.map +1 -1
- package/lib/esm/reducers/RecommendationsReducer.js +16 -19
- package/lib/esm/reducers/RouteConstNTypes.d.ts +1 -2
- package/lib/esm/reducers/RouteConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/RouteConstNTypes.js +4 -1
- package/lib/esm/reducers/RouteReducer.d.ts +2 -2
- package/lib/esm/reducers/RouteReducer.d.ts.map +1 -1
- package/lib/esm/reducers/RouteReducer.js +1 -1
- package/lib/esm/reducers/RulesReducer.d.ts +11 -4
- package/lib/esm/reducers/RulesReducer.d.ts.map +1 -1
- package/lib/esm/reducers/RulesReducer.js +6 -1
- package/lib/esm/reducers/SessionRestoreReducer.d.ts +4 -3
- package/lib/esm/reducers/SessionRestoreReducer.d.ts.map +1 -1
- package/lib/esm/reducers/SessionRestoreReducer.js +51 -17
- package/lib/esm/reducers/TopContentReducer.d.ts.map +1 -1
- package/lib/esm/reducers/TopContentReducer.js +1 -1
- package/lib/esm/scss/_main.scss +295 -117
- package/lib/esm/scss/_pf-overrides.scss +269 -162
- package/lib/esm/utils/TimelineUtils.d.ts +41 -0
- package/lib/esm/utils/TimelineUtils.d.ts.map +1 -0
- package/lib/esm/utils/TimelineUtils.js +135 -0
- package/lib/esm/utils/caseDetailsCacheUtils.d.ts.map +1 -1
- package/lib/esm/utils/caseDetailsCacheUtils.js +1 -0
- package/lib/esm/utils/caseHistoryUtils.d.ts +85 -0
- package/lib/esm/utils/caseHistoryUtils.d.ts.map +1 -0
- package/lib/esm/utils/caseHistoryUtils.js +200 -0
- package/lib/esm/utils/caseOpenshiftClusterIdUtils.d.ts +1 -2
- package/lib/esm/utils/caseOpenshiftClusterIdUtils.d.ts.map +1 -1
- package/lib/esm/utils/caseOpenshiftClusterIdUtils.js +4 -4
- package/lib/esm/utils/caseSeverityFtsGraphQLUtils.d.ts +6 -0
- package/lib/esm/utils/caseSeverityFtsGraphQLUtils.d.ts.map +1 -0
- package/lib/esm/utils/caseSeverityFtsGraphQLUtils.js +26 -0
- package/lib/esm/utils/caseUtils.d.ts.map +1 -1
- package/lib/esm/utils/engagementUtils.d.ts +3 -0
- package/lib/esm/utils/engagementUtils.d.ts.map +1 -0
- package/lib/esm/utils/engagementUtils.js +16 -0
- package/lib/esm/utils/linkifyHtmlTextNodes.d.ts +8 -0
- package/lib/esm/utils/linkifyHtmlTextNodes.d.ts.map +1 -0
- package/lib/esm/utils/linkifyHtmlTextNodes.js +37 -0
- package/lib/esm/utils/remoteRiderUtils.d.ts.map +1 -1
- package/lib/esm/utils/visitedResourcesUtils.d.ts +31 -0
- package/lib/esm/utils/visitedResourcesUtils.d.ts.map +1 -0
- package/lib/esm/utils/visitedResourcesUtils.js +99 -0
- package/package.json +21 -26
- 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 {
|
|
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 {
|
|
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,
|
|
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,
|
|
59
|
-
const { globalMetadataState: {
|
|
55
|
+
const { sort, discussionFiltersListState, replyingToAuthor, replyingToTimestamp } = useCaseDiscussionTabStateContext();
|
|
56
|
+
const { globalMetadataState: { navBarRef, loggedInUsersAccount }, } = useGlobalStateContext();
|
|
60
57
|
const dispatchDiscussion = useCaseDiscussionTabDispatchContext();
|
|
61
|
-
const
|
|
62
|
-
const { caseDetailsPageState: { caseFeedbacksHydra, caseAttachmentHydra, caseExternalTrackersUpdate }, } = useCaseDetailsPageStateContext();
|
|
58
|
+
const { caseDetailsPageState: { caseAttachmentHydra }, } = useCaseDetailsPageStateContext();
|
|
63
59
|
const dispatchCaseDetailsHydraAttachments = useCaseDetailsPageDispatchContext();
|
|
64
|
-
const
|
|
65
|
-
const
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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((
|
|
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
|
|
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
|
-
|
|
122
|
-
|
|
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
|
-
|
|
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,
|
|
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(
|
|
255
|
+
ToastNotification.addDangerMessage(t('There was an error loading attachments.'));
|
|
151
256
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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
|
-
|
|
159
|
-
|
|
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
|
|
178
|
-
|
|
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
|
|
190
|
-
|
|
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);
|
|
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
|
|
249
|
-
|
|
323
|
+
const onAttachmentRemove = (uuid_removed) => {
|
|
324
|
+
updateAttacmentsAfterRemoval(dispatchDiscussion, uuid_removed, allDiscussions, discussionFiltersListState);
|
|
250
325
|
};
|
|
251
|
-
const
|
|
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
|
-
|
|
341
|
+
downloadCaseAttachment(attachmentCaseNumber, uuid, name);
|
|
255
342
|
}
|
|
256
343
|
catch (e) {
|
|
257
|
-
ToastNotification.addDangerMessage(t(
|
|
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:
|
|
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;
|
|
362
|
-
const prevSelectedFilters = list.filter((option) => option.isSelected && option.value !== prevOption.value);
|
|
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
|
|
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
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
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,
|
|
382
|
-
React.createElement(LoadingIndicator, {
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
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-
|
|
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:
|
|
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-
|
|
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" },
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
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
|
}
|