@rh-support/troubleshoot 2.6.355 → 2.6.358
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 +19 -29
- package/lib/esm/components/AccountInfo/OwnerSelector.d.ts.map +1 -1
- package/lib/esm/components/AccountInfo/OwnerSelector.js +91 -16
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.js +6 -2
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +61 -32
- package/lib/esm/components/CaseEditView/ArchivedCaseBanner.d.ts +8 -0
- package/lib/esm/components/CaseEditView/ArchivedCaseBanner.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/ArchivedCaseBanner.js +18 -0
- package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Case.js +60 -33
- package/lib/esm/components/CaseEditView/CaseDetailsAside.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsAside.js +19 -9
- package/lib/esm/components/CaseEditView/CaseDetailsErrorMessage.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsErrorMessage.js +15 -4
- package/lib/esm/components/CaseEditView/CaseDetailsTabs.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsTabs.js +82 -55
- 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 +3 -3
- package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.d.ts +1 -2
- package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.js +8 -6
- package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/index.js +79 -47
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.js +203 -109
- 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 +5 -5
- 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 +5 -9
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSessionModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSessionModal.js +18 -17
- package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.js +51 -47
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.js +49 -44
- package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.d.ts +4 -0
- package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.js +23 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.js +51 -45
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.js +63 -17
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseHostname.js +1 -1
- 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 +3 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.js +130 -55
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseReferenceNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseReferenceNumber.js +10 -5
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.js +110 -65
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/Summary.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/Summary.js +16 -9
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.js +40 -26
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.d.ts +2 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.js +122 -148
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts +4 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.js +76 -145
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.js +22 -9
- 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 +60 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.d.ts +2 -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 +18 -7
- 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 +217 -267
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.js +6 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.js +3 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +4 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts +35 -3
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.js +63 -224
- 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 +18 -5
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.js +7 -2
- package/lib/esm/components/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.js +38 -52
- package/lib/esm/components/CaseInformation/CaseGroup.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/CaseGroup.js +168 -61
- package/lib/esm/components/CaseInformation/CaseInformation.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/CaseInformation.js +10 -9
- 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 +106 -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.js +2 -2
- package/lib/esm/components/CaseInformation/Description.js +1 -1
- 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 +31 -17
- package/lib/esm/components/CaseInformation/Severity.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/Severity.js +33 -24
- package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/SupportLevel.js +36 -55
- 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 +2 -8
- package/lib/esm/components/CaseManagement/CaseManagement.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/CaseManagement.js +13 -10
- package/lib/esm/components/CaseManagement/Cep.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/Cep.js +11 -9
- 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 +20 -3
- package/lib/esm/components/CaseManagement/OpenShiftClusterId.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/OpenShiftClusterId.js +6 -6
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts +0 -1
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.js +19 -32
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.js +34 -40
- package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.d.ts.map +1 -1
- package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.js +8 -4
- package/lib/esm/components/EditDescription/EditDescription.js +1 -1
- package/lib/esm/components/IdeaInformation/IdeaInformation.d.ts.map +1 -1
- package/lib/esm/components/IdeaInformation/IdeaInformation.js +23 -17
- package/lib/esm/components/OpenCase/SupportTypeSelectorPage.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeSelectorPage.js +4 -2
- 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 +3 -15
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.js +13 -37
- package/lib/esm/components/ProductSelector/NewProductVersionSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/NewProductVersionSelector.js +37 -50
- 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 +1 -3
- package/lib/esm/components/ProductSelector/ProductVersionDropdownSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/ProductVersionDropdownSelector.js +9 -1
- package/lib/esm/components/Recommendations/AsideResults.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/AsideResults.js +4 -3
- 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 +1 -4
- package/lib/esm/components/Recommendations/InsightsResults.js +3 -3
- package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/Recommendations.js +3 -9
- package/lib/esm/components/RemoteRider/RemoteRiderAcceptanceModal.d.ts.map +1 -1
- package/lib/esm/components/RemoteRider/RemoteRiderAcceptanceModal.js +10 -8
- package/lib/esm/components/Review/Review.d.ts.map +1 -1
- package/lib/esm/components/Review/Review.js +25 -19
- package/lib/esm/components/SessionRestore/SessionRestore.d.ts.map +1 -1
- package/lib/esm/components/SessionRestore/SessionRestore.js +3 -1
- package/lib/esm/components/SubmitCase/SubmitCase.d.ts.map +1 -1
- package/lib/esm/components/SubmitCase/SubmitCase.js +1 -1
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +2 -2
- package/lib/esm/components/UpdateSeverityModal/UpdateSeverityModal.d.ts.map +1 -1
- package/lib/esm/components/UpdateSeverityModal/UpdateSeverityModal.js +139 -91
- package/lib/esm/components/shared/Constants.d.ts +5 -0
- package/lib/esm/components/shared/Constants.d.ts.map +1 -1
- package/lib/esm/components/shared/Constants.js +5 -0
- package/lib/esm/components/shared/fileUpload/FileLister.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/FileLister.js +3 -3
- 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 +4 -3
- 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/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 +307 -59
- 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/useIsSectionValid.d.ts.map +1 -1
- package/lib/esm/components/shared/useIsSectionValid.js +22 -57
- 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 +178 -38
- package/lib/esm/components/wizardLayout/MainSection.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/MainSection.js +2 -1
- package/lib/esm/components/wizardLayout/WizardAside.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardAside.js +2 -4
- package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardLayout.js +12 -13
- package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardMain.js +7 -0
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardNavigation.js +14 -11
- package/lib/esm/constants/caseDetailsConstants.d.ts +5 -0
- package/lib/esm/constants/caseDetailsConstants.d.ts.map +1 -1
- package/lib/esm/constants/caseDetailsConstants.js +5 -0
- package/lib/esm/context/CaseContext.d.ts.map +1 -1
- package/lib/esm/css/app.css +28 -0
- package/lib/esm/css/case.css +60 -209
- 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 +31 -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.map +1 -1
- package/lib/esm/hooks/useAB.js +45 -23
- 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 +52 -0
- package/lib/esm/hooks/useCaseComments/index.d.ts +7 -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 +85 -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 +17 -0
- package/lib/esm/hooks/useCaseComments/useCaseComments.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/useCaseComments.js +38 -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 +98 -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 +1 -1
- package/lib/esm/hooks/useCaseUpdateErrorMessage.d.ts.map +1 -1
- package/lib/esm/hooks/useCaseUpdateErrorMessage.js +21 -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/i18n/template-de.d.ts +2 -2
- package/lib/esm/i18n/template-de.js +2 -2
- package/lib/esm/i18n/template-es.d.ts +2 -2
- package/lib/esm/i18n/template-es.js +2 -2
- package/lib/esm/i18n/template-fr.d.ts +2 -2
- package/lib/esm/i18n/template-fr.js +2 -2
- package/lib/esm/i18n/template-it.d.ts +2 -2
- package/lib/esm/i18n/template-it.js +2 -2
- package/lib/esm/i18n/template-jp.d.ts +2 -2
- package/lib/esm/i18n/template-jp.js +2 -2
- package/lib/esm/i18n/template-ko.d.ts +2 -2
- package/lib/esm/i18n/template-ko.js +2 -2
- package/lib/esm/i18n/template-pt.d.ts +2 -2
- package/lib/esm/i18n/template-pt.js +2 -2
- package/lib/esm/i18n/template-ru.d.ts +2 -2
- package/lib/esm/i18n/template-ru.js +2 -2
- package/lib/esm/i18n/template-zh.d.ts +2 -2
- package/lib/esm/i18n/template-zh.js +2 -2
- package/lib/esm/index.js +1 -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 +80 -0
- package/lib/esm/models/caseHistory.d.ts.map +1 -0
- package/lib/esm/models/caseHistory.js +1 -0
- package/lib/esm/reducers/CaseConstNTypes.d.ts +123 -9
- package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/CaseConstNTypes.js +31 -7
- 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 +58 -26
- package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts +11 -12
- package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseDiscussionTabReducer.js +63 -70
- package/lib/esm/reducers/CaseHelpers.d.ts +11 -1
- package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
- package/lib/esm/reducers/CaseHelpers.js +119 -17
- 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 +56 -11
- package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseReducer.js +284 -100
- package/lib/esm/reducers/RecommendationsReducer.d.ts.map +1 -1
- package/lib/esm/reducers/RecommendationsReducer.js +15 -18
- package/lib/esm/scss/_main.scss +9 -0
- 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/caseHistoryUtils.d.ts +66 -0
- package/lib/esm/utils/caseHistoryUtils.d.ts.map +1 -0
- package/lib/esm/utils/caseHistoryUtils.js +165 -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/package.json +9 -8
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.d.ts +0 -25
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.d.ts.map +0 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.js +0 -88
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationsReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/RecommendationsReducer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAoB,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACpH,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAiB,MAAM,0CAA0C,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAIH,gCAAgC,EAGnC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"RecommendationsReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/RecommendationsReducer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAoB,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACpH,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAiB,MAAM,0CAA0C,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAIH,gCAAgC,EAGnC,MAAM,mBAAmB,CAAC;AAI3B,KAAK,WAAW,GAAG,OAAO,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;AAC5E,MAAM,MAAM,kCAAkC,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAE9E,MAAM,WAAW,qBAAqB;IAClC,wBAAwB,EAAE,OAAO,CAAC;IAClC,6BAA6B,EAAE,OAAO,CAAC;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,2BAA2B,EAAE,qBAazC,CAAC;AAEF,oBAAY,wBAAwB;IAChC,sBAAsB,2BAA2B;IACjD,uBAAuB,4BAA4B;IACnD,4BAA4B,iCAAiC;IAC7D,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,4BAA4B,iCAAiC;IAC7D,4BAA4B,iCAAiC;IAC7D,sBAAsB,2BAA2B;IACjD,2BAA2B,gCAAgC;IAC3D,oBAAoB,yBAAyB;IAC7C,cAAc,mBAAmB;CACpC;AAGD,eAAO,MAAM,sBAAsB,GAAI,OAAO,qBAAqB,EAAE,QAAQ,WAAW,KAAG,qBAmD1F,CAAC;AAoBF,eAAO,MAAM,oBAAoB,GAC7B,UAAU,kCAAkC,EAC5C,MAAM,uBAAuB,EAC7B,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,2BAA2B,MAAM,EACjC,sBAAqB,EACrB,YAAY,MAAM,EAClB,wBAAwB,OAAO,EAC/B,oBAAoB,gCAAgC,EACpD,cAAc,WAAW,kBA8B5B,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACpC,UAAU,kCAAkC,EAC5C,OAAO,mBAAmB,EAC1B,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,2BAA2B,MAAM,EACjC,uBAAqB,EACrB,oBAAoB,gCAAgC,EACpD,cAAc,WAAW,kBA6B5B,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,UAAU,kCAAkC,EAAE,SAAS,mBAAmB,EAAE,SAE1G,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,UAAU,kCAAkC,EAAE,SAAS,MAAM,SAE3F,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,UAAU,kCAAkC,EAAE,gBAAgB,MAAM,EAAE,SAE5G,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,UAAU,kCAAkC,SAEhF,CAAC"}
|
|
@@ -76,6 +76,19 @@ export const recommandationsReducer = (state, action) => {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
|
+
const dispatchReceivedRecommendations = (dispatch, response, page_size) => {
|
|
80
|
+
var _a;
|
|
81
|
+
const highlightedDocs = replaceHighlightingData(response.response.docs, response.highlighting);
|
|
82
|
+
const docs = uniqueRecommendationDocs(highlightedDocs);
|
|
83
|
+
dispatch({
|
|
84
|
+
type: RecommendationsConstants.receivedRecommendations,
|
|
85
|
+
payload: {
|
|
86
|
+
allDocs: docs,
|
|
87
|
+
visibleDocs: docs.slice(0, page_size),
|
|
88
|
+
numFound: Math.max(0, ((_a = response.response.numFound) !== null && _a !== void 0 ? _a : docs.length) - (highlightedDocs.length - docs.length)),
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
};
|
|
79
92
|
// Actions
|
|
80
93
|
export const fetchRecommendations = (dispatch_1, body_1, max_rows_1, page_size_1, highlighted_fragment_size_1, ...args_1) => __awaiter(void 0, [dispatch_1, body_1, max_rows_1, page_size_1, highlighted_fragment_size_1, ...args_1], void 0, function* (dispatch, body, max_rows, page_size, highlighted_fragment_size, seQueryFields = false, caseNumber, isSecureSupportAccount, additionalFilters, abortSignal) {
|
|
81
94
|
dispatch({
|
|
@@ -91,15 +104,7 @@ export const fetchRecommendations = (dispatch_1, body_1, max_rows_1, page_size_1
|
|
|
91
104
|
const response = yield search.getRecommendationsForCase(body, Object.assign(Object.assign({}, searchParams), { caseNumber,
|
|
92
105
|
isSecureSupportAccount }), // Need to pass caseNumber and isSecureSupportAccount flag with SOLR parameter which will be used in service worker strategy.
|
|
93
106
|
abortSignal);
|
|
94
|
-
|
|
95
|
-
dispatch({
|
|
96
|
-
type: RecommendationsConstants.receivedRecommendations,
|
|
97
|
-
payload: {
|
|
98
|
-
allDocs: docs,
|
|
99
|
-
visibleDocs: docs.slice(0, page_size),
|
|
100
|
-
numFound: docs.length,
|
|
101
|
-
},
|
|
102
|
-
});
|
|
107
|
+
dispatchReceivedRecommendations(dispatch, response, page_size);
|
|
103
108
|
}
|
|
104
109
|
catch (error) {
|
|
105
110
|
dispatch({ type: RecommendationsConstants.receivedRecommendationsError });
|
|
@@ -118,15 +123,7 @@ export const fetchWatsonXRecommendations = (dispatch_1, query_1, max_rows_1, pag
|
|
|
118
123
|
description: getTrimmedCharacters(query.description, WATSONX_DESCRIPTION_LIMIT),
|
|
119
124
|
};
|
|
120
125
|
const response = yield search.getWatsonXRecommendationsForCase2(convertObjToEncodedQueryParams(Object.assign({ rerank: true }, getSolrParams(max_rows, highlighted_fragment_size, additionalFilters, seQueryFields))), bodyPayload, abortSignal);
|
|
121
|
-
|
|
122
|
-
dispatch({
|
|
123
|
-
type: RecommendationsConstants.receivedRecommendations,
|
|
124
|
-
payload: {
|
|
125
|
-
allDocs: docs,
|
|
126
|
-
visibleDocs: docs.slice(0, page_size),
|
|
127
|
-
numFound: docs.length,
|
|
128
|
-
},
|
|
129
|
-
});
|
|
126
|
+
dispatchReceivedRecommendations(dispatch, response, page_size);
|
|
130
127
|
}
|
|
131
128
|
catch (error) {
|
|
132
129
|
dispatch({ type: RecommendationsConstants.receivedRecommendationsError });
|
package/lib/esm/scss/_main.scss
CHANGED
|
@@ -605,6 +605,15 @@ div.support-grid-case-details.support-case {
|
|
|
605
605
|
}
|
|
606
606
|
}
|
|
607
607
|
|
|
608
|
+
.post-comment-reply-banner {
|
|
609
|
+
display: flex;
|
|
610
|
+
align-items: center;
|
|
611
|
+
justify-content: space-between;
|
|
612
|
+
padding: var(--pf-t--global--spacer--xs) var(--pf-t--global--spacer--sm);
|
|
613
|
+
background: var(--pf-t--global--background--color--secondary--default);
|
|
614
|
+
border-radius: var(--pf-t--global--border--radius--small);
|
|
615
|
+
}
|
|
616
|
+
|
|
608
617
|
.text-danger {
|
|
609
618
|
color: #c9190b !important;
|
|
610
619
|
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface IHistoryChangeItem {
|
|
2
|
+
fieldName: string;
|
|
3
|
+
displayName?: string;
|
|
4
|
+
oldValue?: string | null;
|
|
5
|
+
newValue?: string | boolean | null;
|
|
6
|
+
createdByUserName?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const MULTI_SELECT_FIELDS: string[];
|
|
9
|
+
export declare const LANGUAGE_CODE_MAPPING: Record<string, string>;
|
|
10
|
+
/**
|
|
11
|
+
* Maps `displayName` values (from `normalizeNodeToHistoryItem`, not raw SF API names)
|
|
12
|
+
* to camelCase property prefixes used for hydrated lookup properties on history items.
|
|
13
|
+
* E.g. key `"Product"` → prefix `"product"` → looks up `productNewName`, `productOldName`.
|
|
14
|
+
*/
|
|
15
|
+
export declare const KEY_MAP: Record<string, string>;
|
|
16
|
+
export declare const formatMultiSelectChange: (fieldName: string, oldValue: string, newValue: string) => string;
|
|
17
|
+
/**
|
|
18
|
+
* Generates human-readable text for a field change based on which values are present:
|
|
19
|
+
* - Both values present → "changed X from A to B" (multiselect fields get add/remove diffing)
|
|
20
|
+
* - Only newValue → "set X to B"
|
|
21
|
+
* - Only oldValue (newValue is undefined or empty) → "removed X, was A"
|
|
22
|
+
* - None of the above but `item.newValue` exists → fallback for cases where the resolved
|
|
23
|
+
* display string on the item differs from the `newValue` parameter passed in
|
|
24
|
+
*/
|
|
25
|
+
export declare const formatDefaultChange: (item: IHistoryChangeItem, fieldName: string, oldValue: string, newValue: string) => string;
|
|
26
|
+
/**
|
|
27
|
+
* Field-specific formatting for history change text. Each case handles a SF field
|
|
28
|
+
* whose raw values need special treatment before display.
|
|
29
|
+
*/
|
|
30
|
+
export declare const handleFieldChange: (item: IHistoryChangeItem, fieldName: string, oldValue: string, newValue: string) => string;
|
|
31
|
+
/**
|
|
32
|
+
* Post-processes formatted change text.
|
|
33
|
+
*
|
|
34
|
+
* - Boolean special case: SF boolean history entries can carry a raw `boolean` newValue
|
|
35
|
+
* even after `extractStringValue` stringifies it. When the item's `newValue` is still
|
|
36
|
+
* a boolean at this point, we generate dedicated text to avoid displaying "true"/"false".
|
|
37
|
+
* - String replacements remap legacy SF display names to current UI terminology
|
|
38
|
+
* ("Problem Statement" → "Title", "Case Type" → "Support Type").
|
|
39
|
+
*/
|
|
40
|
+
export declare const applyPostProcessing: (text: string, item: IHistoryChangeItem) => string;
|
|
41
|
+
//# sourceMappingURL=TimelineUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimelineUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/TimelineUtils.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAMD,eAAO,MAAM,mBAAmB,UAAmB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAexD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAY1C,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,WAAW,MAAM,EAAE,UAAU,MAAM,EAAE,UAAU,MAAM,KAAG,MAgB/F,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC5B,MAAM,kBAAkB,EACxB,WAAW,MAAM,EACjB,UAAU,MAAM,EAChB,UAAU,MAAM,KACjB,MAiBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC1B,MAAM,kBAAkB,EACxB,WAAW,MAAM,EACjB,UAAU,MAAM,EAChB,UAAU,MAAM,KACjB,MA+BF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,EAAE,MAAM,kBAAkB,KAAG,MAM5E,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { getFieldDisplayName } from './caseHistoryUtils';
|
|
2
|
+
// https://help.salesforce.com/s/articleView?id=000384484&type=1
|
|
3
|
+
// Adding in option for multiselect fields provided by salesforce.
|
|
4
|
+
// In future for more multiselect fields just add to below array.
|
|
5
|
+
// SF delimits multiselect picklist values with semicolons (`;`).
|
|
6
|
+
export const MULTI_SELECT_FIELDS = ['SBR_Group__c'];
|
|
7
|
+
export const LANGUAGE_CODE_MAPPING = {
|
|
8
|
+
de: 'German',
|
|
9
|
+
en: 'English',
|
|
10
|
+
es: 'Spanish',
|
|
11
|
+
fr: 'French',
|
|
12
|
+
it: 'Italian',
|
|
13
|
+
pt: 'Portuguese',
|
|
14
|
+
pt_BR: 'Portuguese',
|
|
15
|
+
ko: 'Korean',
|
|
16
|
+
ja: 'Japanese',
|
|
17
|
+
zh: 'Chinese',
|
|
18
|
+
zh_CN: 'Chinese',
|
|
19
|
+
zh_HK: 'Chinese (Hong Kong)',
|
|
20
|
+
zh_TW: 'Chinese (Taiwan)',
|
|
21
|
+
ru: 'Russian',
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Maps `displayName` values (from `normalizeNodeToHistoryItem`, not raw SF API names)
|
|
25
|
+
* to camelCase property prefixes used for hydrated lookup properties on history items.
|
|
26
|
+
* E.g. key `"Product"` → prefix `"product"` → looks up `productNewName`, `productOldName`.
|
|
27
|
+
*/
|
|
28
|
+
export const KEY_MAP = {
|
|
29
|
+
Product: 'product',
|
|
30
|
+
Version: 'version',
|
|
31
|
+
Account: 'account',
|
|
32
|
+
Contact: 'contact',
|
|
33
|
+
Entitlement: 'entitlement',
|
|
34
|
+
'Business Hours': 'businessHours',
|
|
35
|
+
Owner: 'queueNameOwner',
|
|
36
|
+
'Customer Escalation': 'customerEscalation',
|
|
37
|
+
'Case Group': 'caseGroup',
|
|
38
|
+
'SLA Start Date': 'slaStartDate',
|
|
39
|
+
'Case Language': 'caseLanguage',
|
|
40
|
+
};
|
|
41
|
+
export const formatMultiSelectChange = (fieldName, oldValue, newValue) => {
|
|
42
|
+
const oldValues = oldValue.split(';').map((s) => s.trim());
|
|
43
|
+
const newValues = newValue.split(';').map((s) => s.trim());
|
|
44
|
+
const added = newValues.filter((nv) => !oldValues.includes(nv));
|
|
45
|
+
const removed = oldValues.filter((ov) => !newValues.includes(ov));
|
|
46
|
+
if (added.length > 0 && removed.length === 0) {
|
|
47
|
+
return `added ${added.join(', ')} to ${fieldName}`;
|
|
48
|
+
}
|
|
49
|
+
if (removed.length > 0 && added.length === 0) {
|
|
50
|
+
return `removed ${removed.join(', ')} from ${fieldName}`;
|
|
51
|
+
}
|
|
52
|
+
if (added.length > 0 && removed.length > 0) {
|
|
53
|
+
return `changed ${fieldName}, added ${added.join(', ')} and removed ${removed.join(', ')}`;
|
|
54
|
+
}
|
|
55
|
+
return `changed ${fieldName} from ${oldValue} to ${newValue}`;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Generates human-readable text for a field change based on which values are present:
|
|
59
|
+
* - Both values present → "changed X from A to B" (multiselect fields get add/remove diffing)
|
|
60
|
+
* - Only newValue → "set X to B"
|
|
61
|
+
* - Only oldValue (newValue is undefined or empty) → "removed X, was A"
|
|
62
|
+
* - None of the above but `item.newValue` exists → fallback for cases where the resolved
|
|
63
|
+
* display string on the item differs from the `newValue` parameter passed in
|
|
64
|
+
*/
|
|
65
|
+
export const formatDefaultChange = (item, fieldName, oldValue, newValue) => {
|
|
66
|
+
if (oldValue && newValue) {
|
|
67
|
+
if (MULTI_SELECT_FIELDS.includes(item.fieldName)) {
|
|
68
|
+
return formatMultiSelectChange(fieldName, oldValue, newValue);
|
|
69
|
+
}
|
|
70
|
+
return `changed ${fieldName} from ${oldValue} to ${newValue}`;
|
|
71
|
+
}
|
|
72
|
+
if (newValue) {
|
|
73
|
+
return `set ${fieldName} to ${newValue}`;
|
|
74
|
+
}
|
|
75
|
+
if (oldValue && (newValue === undefined || newValue === '')) {
|
|
76
|
+
return `removed ${fieldName}, was ${oldValue}`;
|
|
77
|
+
}
|
|
78
|
+
if (item.newValue !== undefined) {
|
|
79
|
+
return `set ${fieldName} to ${item.newValue}`;
|
|
80
|
+
}
|
|
81
|
+
return '';
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Field-specific formatting for history change text. Each case handles a SF field
|
|
85
|
+
* whose raw values need special treatment before display.
|
|
86
|
+
*/
|
|
87
|
+
export const handleFieldChange = (item, fieldName, oldValue, newValue) => {
|
|
88
|
+
var _a, _b;
|
|
89
|
+
switch (item.fieldName) {
|
|
90
|
+
// Raw values are ISO 639-1 language codes; expand via LANGUAGE_CODE_MAPPING.
|
|
91
|
+
case 'Case_Language__c': {
|
|
92
|
+
const newVal = String((_a = item.newValue) !== null && _a !== void 0 ? _a : '');
|
|
93
|
+
const oldVal = String((_b = item.oldValue) !== null && _b !== void 0 ? _b : '');
|
|
94
|
+
const newLanguage = LANGUAGE_CODE_MAPPING[newVal] || newVal;
|
|
95
|
+
const oldLanguage = LANGUAGE_CODE_MAPPING[oldVal] || oldVal;
|
|
96
|
+
return oldVal && newVal
|
|
97
|
+
? `changed ${fieldName} from ${oldLanguage} to ${newLanguage}`
|
|
98
|
+
: `set ${fieldName} to ${newLanguage || 'empty'}`;
|
|
99
|
+
}
|
|
100
|
+
// Raw SFDC IDs were already filtered by filterSfdcIdEntries; this handles the
|
|
101
|
+
// resolved-name path and uses createdByUserName as the display value.
|
|
102
|
+
case 'OwnerId':
|
|
103
|
+
return item.createdByUserName ? `set ${fieldName} to ${item.createdByUserName}` : '';
|
|
104
|
+
case 'Status':
|
|
105
|
+
return item.oldValue && item.newValue
|
|
106
|
+
? `changed ${fieldName} from ${item.oldValue} to ${item.newValue}`
|
|
107
|
+
: `set ${fieldName} to ${item.newValue || 'empty'}`;
|
|
108
|
+
// Boolean toggle → human sentence; only reports when a user name is available.
|
|
109
|
+
case 'Customer_Escalation__c':
|
|
110
|
+
return item.createdByUserName ? 'started Escalation for this ticket' : '';
|
|
111
|
+
case 'SlaStartDate':
|
|
112
|
+
return item.newValue ? `set ${fieldName} to ${item.newValue}` : '';
|
|
113
|
+
// Field value is a user ID, not a label — hardcoded string avoids displaying a raw ID.
|
|
114
|
+
case 'RemoteSessionTermsAckedBy__c':
|
|
115
|
+
return 'Acked Remote Rider terms';
|
|
116
|
+
default:
|
|
117
|
+
return formatDefaultChange(item, fieldName, oldValue, newValue);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Post-processes formatted change text.
|
|
122
|
+
*
|
|
123
|
+
* - Boolean special case: SF boolean history entries can carry a raw `boolean` newValue
|
|
124
|
+
* even after `extractStringValue` stringifies it. When the item's `newValue` is still
|
|
125
|
+
* a boolean at this point, we generate dedicated text to avoid displaying "true"/"false".
|
|
126
|
+
* - String replacements remap legacy SF display names to current UI terminology
|
|
127
|
+
* ("Problem Statement" → "Title", "Case Type" → "Support Type").
|
|
128
|
+
*/
|
|
129
|
+
export const applyPostProcessing = (text, item) => {
|
|
130
|
+
if (typeof item.newValue === 'boolean') {
|
|
131
|
+
const fieldName = item.displayName || getFieldDisplayName(item.fieldName);
|
|
132
|
+
return `set ${fieldName} to ${item.newValue}`;
|
|
133
|
+
}
|
|
134
|
+
return text.replaceAll('Problem Statement', 'Title').replaceAll('Case Type', 'Support Type');
|
|
135
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { ICaseHistoryEdge, ICaseHistoryItem, ICaseHistoryNode, SFValue } from '../models/caseHistory';
|
|
2
|
+
/**
|
|
3
|
+
* Maps Salesforce field identifiers to human-readable display names.
|
|
4
|
+
*
|
|
5
|
+
* Contains two distinct key categories:
|
|
6
|
+
* - Real SF API field names (e.g. `ContactId`, `RH_Product__c`, `FolderId__c`)
|
|
7
|
+
* - Synthetic lifecycle pseudo-fields produced by the SF History API (e.g. `created`,
|
|
8
|
+
* `closed`, `ownerAssignment`). These are not custom Salesforce fields — they represent
|
|
9
|
+
* case lifecycle events that appear as history entries with no OldValue/NewValue.
|
|
10
|
+
*/
|
|
11
|
+
export declare const FIELD_NAME_DISPLAY_MAP: Record<string, string>;
|
|
12
|
+
export declare function getFieldDisplayName(fieldName: string): string | undefined;
|
|
13
|
+
export declare function isSfdcId(value: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Extracts a string representation from a polymorphic SF value union.
|
|
16
|
+
*
|
|
17
|
+
* Property names (`stringValue`, `booleanValue`, etc.) correspond to GraphQL
|
|
18
|
+
* inline-fragment aliases defined in the `GET_CASE_HISTORY` query. Changing those
|
|
19
|
+
* aliases without updating this function will silently break value extraction.
|
|
20
|
+
*
|
|
21
|
+
* The check order is safe because the union discriminants are mutually exclusive.
|
|
22
|
+
* Note: empty string `''` is a valid return value (distinct from `null`).
|
|
23
|
+
*/
|
|
24
|
+
export declare function extractStringValue(val: SFValue): string | null;
|
|
25
|
+
/**
|
|
26
|
+
* Lifecycle pseudo-field names from the SF History API mapped to human-readable action
|
|
27
|
+
* sentences. Fields not listed here fall back to using the raw `fieldName` as output text
|
|
28
|
+
* in {@link normalizeNodeToHistoryItem}.
|
|
29
|
+
*/
|
|
30
|
+
export declare const SPECIAL_FIELD_ACTIONS: Record<string, string>;
|
|
31
|
+
export declare const DEFAULT_AVATAR_SRC = "https://www.patternfly.org/images/668560cd.svg";
|
|
32
|
+
/**
|
|
33
|
+
* Only SF `UserType === 'Standard'` is treated as an internal (Red Hat) user.
|
|
34
|
+
* All other types — including `null`, `undefined`, and unknown portal types — default
|
|
35
|
+
* to customer. This conservative default ensures external users are never accidentally
|
|
36
|
+
* styled as internal.
|
|
37
|
+
*/
|
|
38
|
+
export declare function deriveIsCustomer(userType: string | null | undefined): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Filters out history entries whose values are raw Salesforce IDs that cannot be
|
|
41
|
+
* decoded into human-readable display strings.
|
|
42
|
+
*
|
|
43
|
+
* Filtering rules:
|
|
44
|
+
* - Both values null → **keep** (lifecycle action events carry no values)
|
|
45
|
+
* - `newValue` is an SFDC ID and `oldValue` is null or also an ID → **drop**
|
|
46
|
+
* (unresolvable reference change with no readable side)
|
|
47
|
+
* - `oldValue` is an SFDC ID and `newValue` is null → **drop**
|
|
48
|
+
* (ID removal with no display name)
|
|
49
|
+
* - At least one side is a human-readable string → **keep**
|
|
50
|
+
*/
|
|
51
|
+
export declare function filterSfdcIdEntries(edges: ICaseHistoryEdge[]): ICaseHistoryNode[];
|
|
52
|
+
/**
|
|
53
|
+
* Converts a raw SF history node into a normalized `ICaseHistoryItem`.
|
|
54
|
+
*
|
|
55
|
+
* Classifies each entry as either:
|
|
56
|
+
* - **Action** (`!oldValue && !newValue`): lifecycle events like "created", "closed".
|
|
57
|
+
* `outputText` is set here from {@link SPECIAL_FIELD_ACTIONS}, or falls back to the
|
|
58
|
+
* raw `fieldName` for unknown actions.
|
|
59
|
+
* - **Change**: field-value mutations. `outputText` is left empty because the Timeline
|
|
60
|
+
* layer formats change text via `applyReplacements` / `handleFieldChange`.
|
|
61
|
+
*
|
|
62
|
+
* Display name fallback chain: `FIELD_NAME_DISPLAY_MAP` → SF `label` → SF
|
|
63
|
+
* `displayValue` → raw `fieldName`.
|
|
64
|
+
*/
|
|
65
|
+
export declare function normalizeNodeToHistoryItem(node: ICaseHistoryNode): ICaseHistoryItem;
|
|
66
|
+
//# sourceMappingURL=caseHistoryUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caseHistoryUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseHistoryUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE3G;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoBzD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKzE;AAMD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAO9D;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOxD,CAAC;AAEF,eAAO,MAAM,kBAAkB,mDAAmD,CAAC;AAInF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG7E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAajF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAuCnF"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps Salesforce field identifiers to human-readable display names.
|
|
3
|
+
*
|
|
4
|
+
* Contains two distinct key categories:
|
|
5
|
+
* - Real SF API field names (e.g. `ContactId`, `RH_Product__c`, `FolderId__c`)
|
|
6
|
+
* - Synthetic lifecycle pseudo-fields produced by the SF History API (e.g. `created`,
|
|
7
|
+
* `closed`, `ownerAssignment`). These are not custom Salesforce fields — they represent
|
|
8
|
+
* case lifecycle events that appear as history entries with no OldValue/NewValue.
|
|
9
|
+
*/
|
|
10
|
+
export const FIELD_NAME_DISPLAY_MAP = {
|
|
11
|
+
created: 'Case Created',
|
|
12
|
+
closed: 'Case Closed',
|
|
13
|
+
ownerAssignment: 'Owner',
|
|
14
|
+
ownerAccepted: 'Owner',
|
|
15
|
+
ownerEscalated: 'Owner',
|
|
16
|
+
external: 'Visibility',
|
|
17
|
+
ContactId: 'Contact',
|
|
18
|
+
RH_Product__c: 'Product',
|
|
19
|
+
RH_Version__c: 'Version',
|
|
20
|
+
EntitlementId: 'Entitlement',
|
|
21
|
+
AccountId: 'Account',
|
|
22
|
+
OwnerId: 'Owner',
|
|
23
|
+
BusinessHoursId: 'Business Hours',
|
|
24
|
+
FolderId__c: 'Case Group',
|
|
25
|
+
Status: 'Status',
|
|
26
|
+
Customer_Escalation__c: 'Customer Escalation',
|
|
27
|
+
SlaStartDate: 'SLA Start Date',
|
|
28
|
+
Case_Language__c: 'Case Language',
|
|
29
|
+
SBR_Group__c: 'SBR Group',
|
|
30
|
+
};
|
|
31
|
+
export function getFieldDisplayName(fieldName) {
|
|
32
|
+
if (fieldName in FIELD_NAME_DISPLAY_MAP) {
|
|
33
|
+
return FIELD_NAME_DISPLAY_MAP[fieldName];
|
|
34
|
+
}
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
// Salesforce object IDs are strictly 15 (case-sensitive) or 18 (case-insensitive)
|
|
38
|
+
// alphanumeric characters. Strings of 16–17 chars are intentionally excluded.
|
|
39
|
+
const SFDC_ID_REGEX = /^[a-zA-Z0-9]{15}$|^[a-zA-Z0-9]{18}$/;
|
|
40
|
+
export function isSfdcId(value) {
|
|
41
|
+
return SFDC_ID_REGEX.test(value);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Extracts a string representation from a polymorphic SF value union.
|
|
45
|
+
*
|
|
46
|
+
* Property names (`stringValue`, `booleanValue`, etc.) correspond to GraphQL
|
|
47
|
+
* inline-fragment aliases defined in the `GET_CASE_HISTORY` query. Changing those
|
|
48
|
+
* aliases without updating this function will silently break value extraction.
|
|
49
|
+
*
|
|
50
|
+
* The check order is safe because the union discriminants are mutually exclusive.
|
|
51
|
+
* Note: empty string `''` is a valid return value (distinct from `null`).
|
|
52
|
+
*/
|
|
53
|
+
export function extractStringValue(val) {
|
|
54
|
+
if (!val)
|
|
55
|
+
return null;
|
|
56
|
+
if ('stringValue' in val)
|
|
57
|
+
return val.stringValue;
|
|
58
|
+
if ('booleanValue' in val)
|
|
59
|
+
return String(val.booleanValue);
|
|
60
|
+
if ('doubleValue' in val)
|
|
61
|
+
return String(val.doubleValue);
|
|
62
|
+
if ('dateTimeValue' in val)
|
|
63
|
+
return val.dateTimeValue;
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Lifecycle pseudo-field names from the SF History API mapped to human-readable action
|
|
68
|
+
* sentences. Fields not listed here fall back to using the raw `fieldName` as output text
|
|
69
|
+
* in {@link normalizeNodeToHistoryItem}.
|
|
70
|
+
*/
|
|
71
|
+
export const SPECIAL_FIELD_ACTIONS = {
|
|
72
|
+
created: 'created the case',
|
|
73
|
+
closed: 'closed the case',
|
|
74
|
+
ownerAssignment: 'changed the case owner',
|
|
75
|
+
ownerAccepted: 'accepted ownership of the case',
|
|
76
|
+
ownerEscalated: 'escalated the case owner',
|
|
77
|
+
external: 'made the case visible to customers',
|
|
78
|
+
};
|
|
79
|
+
export const DEFAULT_AVATAR_SRC = 'https://www.patternfly.org/images/668560cd.svg';
|
|
80
|
+
const INTERNAL_USER_TYPE = 'Standard';
|
|
81
|
+
/**
|
|
82
|
+
* Only SF `UserType === 'Standard'` is treated as an internal (Red Hat) user.
|
|
83
|
+
* All other types — including `null`, `undefined`, and unknown portal types — default
|
|
84
|
+
* to customer. This conservative default ensures external users are never accidentally
|
|
85
|
+
* styled as internal.
|
|
86
|
+
*/
|
|
87
|
+
export function deriveIsCustomer(userType) {
|
|
88
|
+
if (userType === INTERNAL_USER_TYPE)
|
|
89
|
+
return false;
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Filters out history entries whose values are raw Salesforce IDs that cannot be
|
|
94
|
+
* decoded into human-readable display strings.
|
|
95
|
+
*
|
|
96
|
+
* Filtering rules:
|
|
97
|
+
* - Both values null → **keep** (lifecycle action events carry no values)
|
|
98
|
+
* - `newValue` is an SFDC ID and `oldValue` is null or also an ID → **drop**
|
|
99
|
+
* (unresolvable reference change with no readable side)
|
|
100
|
+
* - `oldValue` is an SFDC ID and `newValue` is null → **drop**
|
|
101
|
+
* (ID removal with no display name)
|
|
102
|
+
* - At least one side is a human-readable string → **keep**
|
|
103
|
+
*/
|
|
104
|
+
export function filterSfdcIdEntries(edges) {
|
|
105
|
+
return edges
|
|
106
|
+
.map((edge) => edge.node)
|
|
107
|
+
.filter((node) => {
|
|
108
|
+
const newVal = extractStringValue(node.NewValue);
|
|
109
|
+
const oldVal = extractStringValue(node.OldValue);
|
|
110
|
+
if (!newVal && !oldVal)
|
|
111
|
+
return true;
|
|
112
|
+
const hasIdNewVal = newVal && isSfdcId(newVal);
|
|
113
|
+
const hasIdOldVal = oldVal && isSfdcId(oldVal);
|
|
114
|
+
if (hasIdNewVal && (!oldVal || hasIdOldVal))
|
|
115
|
+
return false;
|
|
116
|
+
if (hasIdOldVal && !newVal)
|
|
117
|
+
return false;
|
|
118
|
+
return true;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Converts a raw SF history node into a normalized `ICaseHistoryItem`.
|
|
123
|
+
*
|
|
124
|
+
* Classifies each entry as either:
|
|
125
|
+
* - **Action** (`!oldValue && !newValue`): lifecycle events like "created", "closed".
|
|
126
|
+
* `outputText` is set here from {@link SPECIAL_FIELD_ACTIONS}, or falls back to the
|
|
127
|
+
* raw `fieldName` for unknown actions.
|
|
128
|
+
* - **Change**: field-value mutations. `outputText` is left empty because the Timeline
|
|
129
|
+
* layer formats change text via `applyReplacements` / `handleFieldChange`.
|
|
130
|
+
*
|
|
131
|
+
* Display name fallback chain: `FIELD_NAME_DISPLAY_MAP` → SF `label` → SF
|
|
132
|
+
* `displayValue` → raw `fieldName`.
|
|
133
|
+
*/
|
|
134
|
+
export function normalizeNodeToHistoryItem(node) {
|
|
135
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
136
|
+
const fieldName = node.RedHatSupportField.value;
|
|
137
|
+
const oldValue = extractStringValue(node.OldValue);
|
|
138
|
+
const newValue = extractStringValue(node.NewValue);
|
|
139
|
+
const isAction = !oldValue && !newValue;
|
|
140
|
+
let outputText = '';
|
|
141
|
+
if (isAction) {
|
|
142
|
+
if (fieldName in SPECIAL_FIELD_ACTIONS) {
|
|
143
|
+
outputText = SPECIAL_FIELD_ACTIONS[fieldName];
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
outputText = fieldName;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
id: node.Id,
|
|
151
|
+
fieldName,
|
|
152
|
+
displayName: (_c = (_b = (_a = getFieldDisplayName(fieldName)) !== null && _a !== void 0 ? _a : node.RedHatSupportField.label) !== null && _b !== void 0 ? _b : node.RedHatSupportField.displayValue) !== null && _c !== void 0 ? _c : fieldName,
|
|
153
|
+
label: (_f = (_e = (_d = getFieldDisplayName(fieldName)) !== null && _d !== void 0 ? _d : node.RedHatSupportField.label) !== null && _e !== void 0 ? _e : node.RedHatSupportField.displayValue) !== null && _f !== void 0 ? _f : fieldName,
|
|
154
|
+
oldValue,
|
|
155
|
+
newValue,
|
|
156
|
+
createdDate: node.CreatedDate.value,
|
|
157
|
+
createdByUserName: (_j = (_h = (_g = node.CreatedBy) === null || _g === void 0 ? void 0 : _g.Name) === null || _h === void 0 ? void 0 : _h.value) !== null && _j !== void 0 ? _j : '',
|
|
158
|
+
createdByCustomer: deriveIsCustomer((_l = (_k = node.CreatedBy) === null || _k === void 0 ? void 0 : _k.UserType) === null || _l === void 0 ? void 0 : _l.value),
|
|
159
|
+
// TODO: SmallPhotoUrl points to an internal Salesforce domain that external portal
|
|
160
|
+
// users can't authenticate against. If images break, Hydra will need to proxy them.
|
|
161
|
+
photoUrl: (_p = (_o = (_m = node.CreatedBy) === null || _m === void 0 ? void 0 : _m.SmallPhotoUrl) === null || _o === void 0 ? void 0 : _o.value) !== null && _p !== void 0 ? _p : null,
|
|
162
|
+
type: isAction ? 'Action' : 'Change',
|
|
163
|
+
outputText,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { IClusterSubscription } from '@cee-eng/hydrajs/@types/models/cloud';
|
|
2
|
-
import { ISEProduct } from '@cee-eng/hydrajs/@types/models/product';
|
|
3
2
|
export interface IClusterSubscriptionExtended extends IClusterSubscription {
|
|
4
3
|
openshift_version: string;
|
|
5
4
|
}
|
|
6
5
|
export declare const getDisplayNameForCluster: (cluster: Partial<IClusterSubscriptionExtended>) => string;
|
|
7
6
|
export declare const invalidGuidHelperText = "Please enter a valid Cluster ID (For example: d3aa88e2-c754-41e0-8ba6-4198a34aa0a2)";
|
|
8
|
-
export declare const isClusterIdEnabledForProduct: (selectedProduct: string
|
|
7
|
+
export declare const isClusterIdEnabledForProduct: (selectedProduct: string) => boolean;
|
|
9
8
|
export declare const getIsClusterIdInvalid: (openshiftClusterID: any) => boolean;
|
|
10
9
|
//# sourceMappingURL=caseOpenshiftClusterIdUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caseOpenshiftClusterIdUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseOpenshiftClusterIdUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"caseOpenshiftClusterIdUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseOpenshiftClusterIdUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAM5E,MAAM,WAAW,4BAA6B,SAAQ,oBAAoB;IACtE,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,wBAAwB,GAAI,SAAS,OAAO,CAAC,4BAA4B,CAAC,WAKtF,CAAC;AAEF,eAAO,MAAM,qBAAqB,wFACuD,CAAC;AAE1F,eAAO,MAAM,4BAA4B,GAAI,iBAAiB,MAAM,YAGnE,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,uBAAkB,YACY,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isValidGuid } from '@rh-support/utils';
|
|
2
2
|
import isEmpty from 'lodash/isEmpty';
|
|
3
|
+
import { CLUSTER_ID_ENABLED_PRODUCTS } from '../reducers/CaseConstNTypes';
|
|
3
4
|
export const getDisplayNameForCluster = (cluster) => {
|
|
4
5
|
if (isEmpty(cluster))
|
|
5
6
|
return '';
|
|
@@ -9,10 +10,9 @@ export const getDisplayNameForCluster = (cluster) => {
|
|
|
9
10
|
return `${clusterId} <${cluster.display_name}>`;
|
|
10
11
|
};
|
|
11
12
|
export const invalidGuidHelperText = 'Please enter a valid Cluster ID (For example: d3aa88e2-c754-41e0-8ba6-4198a34aa0a2)';
|
|
12
|
-
export const isClusterIdEnabledForProduct = (selectedProduct
|
|
13
|
-
|
|
14
|
-
if (isEmpty(productDetails))
|
|
13
|
+
export const isClusterIdEnabledForProduct = (selectedProduct) => {
|
|
14
|
+
if (isEmpty(selectedProduct))
|
|
15
15
|
return false;
|
|
16
|
-
return
|
|
16
|
+
return CLUSTER_ID_ENABLED_PRODUCTS.includes(selectedProduct);
|
|
17
17
|
};
|
|
18
18
|
export const getIsClusterIdInvalid = (openshiftClusterID) => !isEmpty(openshiftClusterID) && !isValidGuid(openshiftClusterID);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ICasePayload } from '@cee-eng/hydrajs/@types/api/public/case';
|
|
2
|
+
import { IGraphQLCaseUpdateInput } from '@rh-support/utils';
|
|
3
|
+
export type CaseSeverityFtsGraphQLPayload = Partial<Pick<ICasePayload, 'severity' | 'status' | 'fts' | 'contactInfo24x7'>>;
|
|
4
|
+
/** Builds GraphQL case update input for severity/status and FTS (X24x7__c / X24x7ContactInformation__c). */
|
|
5
|
+
export declare function buildCaseSeverityFtsGraphQLUpdate(payload: CaseSeverityFtsGraphQLPayload, currentSeverity?: string | null): Partial<IGraphQLCaseUpdateInput>;
|
|
6
|
+
//# sourceMappingURL=caseSeverityFtsGraphQLUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caseSeverityFtsGraphQLUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseSeverityFtsGraphQLUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAU,MAAM,mBAAmB,CAAC;AAEpE,MAAM,MAAM,6BAA6B,GAAG,OAAO,CAC/C,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,iBAAiB,CAAC,CACxE,CAAC;AAEF,4GAA4G;AAC5G,wBAAgB,iCAAiC,CAC7C,OAAO,EAAE,6BAA6B,EACtC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAChC,OAAO,CAAC,uBAAuB,CAAC,CA2BlC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { isSev1 } from '@rh-support/utils';
|
|
2
|
+
/** Builds GraphQL case update input for severity/status and FTS (X24x7__c / X24x7ContactInformation__c). */
|
|
3
|
+
export function buildCaseSeverityFtsGraphQLUpdate(payload, currentSeverity) {
|
|
4
|
+
var _a;
|
|
5
|
+
const { severity, status, fts: ftsUpdate, contactInfo24x7: contactUpdate } = payload;
|
|
6
|
+
const graphqlUpdate = {};
|
|
7
|
+
if (severity !== undefined) {
|
|
8
|
+
graphqlUpdate.severity = severity;
|
|
9
|
+
}
|
|
10
|
+
if (status !== undefined) {
|
|
11
|
+
graphqlUpdate.status = status;
|
|
12
|
+
}
|
|
13
|
+
if (ftsUpdate !== undefined) {
|
|
14
|
+
graphqlUpdate.fts = ftsUpdate;
|
|
15
|
+
}
|
|
16
|
+
if (contactUpdate !== undefined) {
|
|
17
|
+
graphqlUpdate.contactInfo24x7 = contactUpdate;
|
|
18
|
+
}
|
|
19
|
+
const severityForPatch = String((_a = severity !== null && severity !== void 0 ? severity : currentSeverity) !== null && _a !== void 0 ? _a : '').trim();
|
|
20
|
+
if ((ftsUpdate !== undefined || contactUpdate !== undefined) &&
|
|
21
|
+
graphqlUpdate.severity === undefined &&
|
|
22
|
+
isSev1(severityForPatch)) {
|
|
23
|
+
graphqlUpdate.severity = severityForPatch;
|
|
24
|
+
}
|
|
25
|
+
return graphqlUpdate;
|
|
26
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/troubleshoot",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.358",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -21,7 +21,6 @@
|
|
|
21
21
|
"lib/**/*"
|
|
22
22
|
],
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"@cee-eng/hydrajs": "4.18.111",
|
|
25
24
|
"@cee-eng/ui-toolkit": "1.1.9",
|
|
26
25
|
"@patternfly/patternfly": "6.2.1",
|
|
27
26
|
"@patternfly/react-core": "6.2.1",
|
|
@@ -43,7 +42,7 @@
|
|
|
43
42
|
"react-virtualized": "^9.22.5"
|
|
44
43
|
},
|
|
45
44
|
"dependencies": {
|
|
46
|
-
"@cee-eng/hydrajs": "4.18.
|
|
45
|
+
"@cee-eng/hydrajs": "^4.18.114",
|
|
47
46
|
"@cee-eng/ui-toolkit": "1.1.9",
|
|
48
47
|
"@ifd-ui/ask-redhat-core": "^0.0.61",
|
|
49
48
|
"@patternfly/patternfly": "6.2.1",
|
|
@@ -53,11 +52,11 @@
|
|
|
53
52
|
"@progress/kendo-licensing": "1.3.5",
|
|
54
53
|
"@progress/kendo-react-pdf": "^5.16.0",
|
|
55
54
|
"@redux-devtools/extension": "^3.3.0",
|
|
56
|
-
"@rh-support/components": "2.5.
|
|
57
|
-
"@rh-support/react-context": "2.5.
|
|
55
|
+
"@rh-support/components": "2.5.226",
|
|
56
|
+
"@rh-support/react-context": "2.5.322",
|
|
58
57
|
"@rh-support/types": "2.0.26",
|
|
59
|
-
"@rh-support/user-permissions": "2.5.
|
|
60
|
-
"@rh-support/utils": "2.5.
|
|
58
|
+
"@rh-support/user-permissions": "2.5.174",
|
|
59
|
+
"@rh-support/utils": "2.5.153",
|
|
61
60
|
"@types/react-redux": "^7.1.33",
|
|
62
61
|
"@types/redux": "^3.6.0",
|
|
63
62
|
"date-fns": "3.6.0",
|
|
@@ -85,6 +84,8 @@
|
|
|
85
84
|
"timers": "^0.1.1"
|
|
86
85
|
},
|
|
87
86
|
"devDependencies": {
|
|
87
|
+
"@patternfly/react-styles": "^6.2.1",
|
|
88
|
+
"@patternfly/react-tokens": "^6.2.1",
|
|
88
89
|
"@testing-library/dom": "^10.4.0",
|
|
89
90
|
"@testing-library/jest-dom": "^6.2.0",
|
|
90
91
|
"@testing-library/react": "^14.1.2",
|
|
@@ -127,5 +128,5 @@
|
|
|
127
128
|
"defaults and supports es6-module",
|
|
128
129
|
"maintained node versions"
|
|
129
130
|
],
|
|
130
|
-
"gitHead": "
|
|
131
|
+
"gitHead": "7e9d99cabdfd48a98e1fda53bd6747c1797c548c"
|
|
131
132
|
}
|