@rh-support/troubleshoot 2.6.42 → 2.6.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.d.ts +0 -1
  2. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.d.ts.map +1 -1
  3. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.js +5 -31
  4. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
  5. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +34 -33
  6. package/lib/esm/components/CaseEditView/CaseDetailsAside.d.ts.map +1 -1
  7. package/lib/esm/components/CaseEditView/CaseDetailsAside.js +2 -3
  8. package/lib/esm/components/CaseEditView/CaseDetailsTabs.d.ts.map +1 -1
  9. package/lib/esm/components/CaseEditView/CaseDetailsTabs.js +0 -1
  10. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.d.ts.map +1 -1
  11. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.js +18 -14
  12. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.js +1 -1
  13. package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.d.ts.map +1 -1
  14. package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.js +22 -16
  15. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.d.ts.map +1 -1
  16. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.js +2 -2
  17. package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.d.ts.map +1 -1
  18. package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.js +102 -53
  19. package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreement.d.ts.map +1 -1
  20. package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreement.js +1 -1
  21. package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map +1 -1
  22. package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.js +21 -23
  23. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseHostname.js +2 -4
  24. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CasePhoneNumberConfirmAlert.d.ts.map +1 -1
  25. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CasePhoneNumberConfirmAlert.js +4 -7
  26. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
  27. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +1 -1
  28. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.d.ts.map +1 -1
  29. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.js +9 -7
  30. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +8 -0
  31. package/lib/esm/components/CaseInformation/Fts.d.ts.map +1 -1
  32. package/lib/esm/components/CaseInformation/Fts.js +2 -6
  33. package/lib/esm/components/CaseInformation/Severity.js +1 -1
  34. package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
  35. package/lib/esm/components/CaseInformation/SupportLevel.js +1 -1
  36. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts +0 -3
  37. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts.map +1 -1
  38. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.js +20 -15
  39. package/lib/esm/components/CaseManagement/RHAssociatesSelector.d.ts.map +1 -1
  40. package/lib/esm/components/CaseManagement/RHAssociatesSelector.js +7 -5
  41. package/lib/esm/components/CaseManagement/SendNotifications/AddCustomEmailToAccountModal.d.ts.map +1 -1
  42. package/lib/esm/components/CaseManagement/SendNotifications/AddCustomEmailToAccountModal.js +18 -20
  43. package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.d.ts.map +1 -1
  44. package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +9 -6
  45. package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.d.ts.map +1 -1
  46. package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.js +15 -22
  47. package/lib/esm/components/Cve/CveModal.d.ts.map +1 -1
  48. package/lib/esm/components/Cve/CveModal.js +3 -2
  49. package/lib/esm/components/Cve/CveSidebar.js +1 -1
  50. package/lib/esm/components/OpenCase/SupportTypeSelectorPage.js +1 -1
  51. package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts.map +1 -1
  52. package/lib/esm/components/ProductSelector/AllProductsSelector.js +9 -6
  53. package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts.map +1 -1
  54. package/lib/esm/components/ProductSelector/NewProductDropdownSelector.js +10 -1
  55. package/lib/esm/components/Recommendations/AsideResults.d.ts.map +1 -1
  56. package/lib/esm/components/Recommendations/AsideResults.js +3 -3
  57. package/lib/esm/components/Recommendations/ClusterRecommendationsModal.d.ts.map +1 -1
  58. package/lib/esm/components/Recommendations/ClusterRecommendationsModal.js +7 -4
  59. package/lib/esm/components/Recommendations/EARules/EARuleInfoAccordion.d.ts.map +1 -1
  60. package/lib/esm/components/Recommendations/EARules/EARuleInfoAccordion.js +3 -1
  61. package/lib/esm/components/Recommendations/InsightsResults.js +1 -1
  62. package/lib/esm/components/Recommendations/InsightsRuleInfo.d.ts.map +1 -1
  63. package/lib/esm/components/Recommendations/InsightsRuleInfo.js +9 -2
  64. package/lib/esm/components/Recommendations/RecommendationFeedbackModal.d.ts.map +1 -1
  65. package/lib/esm/components/Recommendations/RecommendationFeedbackModal.js +4 -4
  66. package/lib/esm/components/Recommendations/Recommendations.js +2 -2
  67. package/lib/esm/components/Recommendations/RulesModal.d.ts.map +1 -1
  68. package/lib/esm/components/Recommendations/RulesModal.js +7 -4
  69. package/lib/esm/components/Recommendations/WatsonxAiIcon.js +1 -1
  70. package/lib/esm/components/SessionRestore/RestoreLastSessionModal.d.ts.map +1 -1
  71. package/lib/esm/components/SessionRestore/RestoreLastSessionModal.js +5 -3
  72. package/lib/esm/components/SessionRestore/SessionRestore.js +1 -1
  73. package/lib/esm/components/Suggestions/Suggestions.d.ts.map +1 -1
  74. package/lib/esm/components/Suggestions/Suggestions.js +17 -12
  75. package/lib/esm/components/Suggestions/TopContent.d.ts.map +1 -1
  76. package/lib/esm/components/Suggestions/TopContent.js +13 -13
  77. package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts +0 -7
  78. package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts.map +1 -1
  79. package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +13 -99
  80. package/lib/esm/components/shared/fileUpload/WidgetFileUploader.js +3 -3
  81. package/lib/esm/components/shared/fileUpload/css/fileSelector.css +1 -0
  82. package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts +1 -0
  83. package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts.map +1 -1
  84. package/lib/esm/components/shared/input/ContactSelectorInternal.js +6 -1
  85. package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
  86. package/lib/esm/components/shared/useIsSectionValid.js +7 -1
  87. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
  88. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +8 -2
  89. package/lib/esm/components/wizardLayout/WizardAside.js +3 -3
  90. package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
  91. package/lib/esm/components/wizardLayout/WizardLayout.js +6 -9
  92. package/lib/esm/components/wizardLayout/WizardMain.d.ts +1 -7
  93. package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
  94. package/lib/esm/components/wizardLayout/WizardMain.js +18 -202
  95. package/lib/esm/components/wizardLayout/WizardNavigation.d.ts +2 -4
  96. package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
  97. package/lib/esm/components/wizardLayout/WizardNavigation.js +16 -13
  98. package/lib/esm/components/wizardLayout/index.d.ts +0 -1
  99. package/lib/esm/components/wizardLayout/index.d.ts.map +1 -1
  100. package/lib/esm/components/wizardLayout/index.js +0 -1
  101. package/lib/esm/context/RootTroubleshootProvider.d.ts.map +1 -1
  102. package/lib/esm/context/RootTroubleshootProvider.js +6 -8
  103. package/lib/esm/css/app.css +5 -4
  104. package/lib/esm/css/case.css +39 -6
  105. package/lib/esm/css/results.css +2 -2
  106. package/lib/esm/hooks/useWizard.d.ts +0 -6
  107. package/lib/esm/hooks/useWizard.d.ts.map +1 -1
  108. package/lib/esm/hooks/useWizard.js +1 -1
  109. package/lib/esm/reducers/CaseConstNTypes.d.ts +0 -2
  110. package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
  111. package/lib/esm/reducers/CaseConstNTypes.js +0 -2
  112. package/lib/esm/scss/_main.scss +84 -22
  113. package/lib/esm/scss/_pf-overrides.scss +37 -10
  114. package/package.json +6 -7
  115. package/lib/esm/components/TroubleshootSection/AskRedHat.d.ts +0 -7
  116. package/lib/esm/components/TroubleshootSection/AskRedHat.d.ts.map +0 -1
  117. package/lib/esm/components/TroubleshootSection/AskRedHat.js +0 -151
  118. package/lib/esm/components/TroubleshootSection/CloseButton.d.ts +0 -9
  119. package/lib/esm/components/TroubleshootSection/CloseButton.d.ts.map +0 -1
  120. package/lib/esm/components/TroubleshootSection/CloseButton.js +0 -5
  121. package/lib/esm/components/TroubleshootSection/QuickResponse.d.ts +0 -15
  122. package/lib/esm/components/TroubleshootSection/QuickResponse.d.ts.map +0 -1
  123. package/lib/esm/components/TroubleshootSection/QuickResponse.js +0 -26
  124. package/lib/esm/components/TroubleshootSection/ResponseActionButton.d.ts +0 -18
  125. package/lib/esm/components/TroubleshootSection/ResponseActionButton.d.ts.map +0 -1
  126. package/lib/esm/components/TroubleshootSection/ResponseActionButton.js +0 -28
  127. package/lib/esm/components/TroubleshootSection/ResponseActions.d.ts +0 -20
  128. package/lib/esm/components/TroubleshootSection/ResponseActions.d.ts.map +0 -1
  129. package/lib/esm/components/TroubleshootSection/ResponseActions.js +0 -52
  130. package/lib/esm/components/TroubleshootSection/UserFeedback.d.ts +0 -12
  131. package/lib/esm/components/TroubleshootSection/UserFeedback.d.ts.map +0 -1
  132. package/lib/esm/components/TroubleshootSection/UserFeedback.js +0 -44
  133. package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.d.ts +0 -10
  134. package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.d.ts.map +0 -1
  135. package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.js +0 -46
  136. package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.d.ts +0 -9
  137. package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.d.ts.map +0 -1
  138. package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.js +0 -9
  139. package/lib/esm/components/TroubleshootSection/icons/StarIcon.d.ts +0 -9
  140. package/lib/esm/components/TroubleshootSection/icons/StarIcon.d.ts.map +0 -1
  141. package/lib/esm/components/TroubleshootSection/icons/StarIcon.js +0 -17
  142. package/lib/esm/constants/askRedHatMessages.d.ts +0 -35
  143. package/lib/esm/constants/askRedHatMessages.d.ts.map +0 -1
  144. package/lib/esm/constants/askRedHatMessages.js +0 -36
  145. package/lib/esm/context/AIResponseContext.d.ts +0 -10
  146. package/lib/esm/context/AIResponseContext.d.ts.map +0 -1
  147. package/lib/esm/context/AIResponseContext.js +0 -26
  148. package/lib/esm/css/AskRedHat.css +0 -359
  149. package/lib/esm/reducers/AIResponseConstNTypes.d.ts +0 -48
  150. package/lib/esm/reducers/AIResponseConstNTypes.d.ts.map +0 -1
  151. package/lib/esm/reducers/AIResponseConstNTypes.js +0 -16
  152. package/lib/esm/reducers/AIResponseReducer.d.ts +0 -9
  153. package/lib/esm/reducers/AIResponseReducer.d.ts.map +0 -1
  154. package/lib/esm/reducers/AIResponseReducer.js +0 -43
@@ -24,7 +24,8 @@ import { useResetCaseCreate } from '../../hooks/useResetCaseCreate';
24
24
  import { CASE_DEATILS_SOURCE_REFERRER_LIMIT } from '../../reducers/CaseConstNTypes';
25
25
  import { getDescriptionWOQues } from '../../reducers/CaseHelpers';
26
26
  import { setCaseAccountNumber, setCaseDetails, setCaseOwner } from '../../reducers/CaseReducer';
27
- import { setRouteFlags } from '../../reducers/RouteReducer';
27
+ import { AppRouteSections } from '../../reducers/RouteConstNTypes';
28
+ import { setActiveSectionChanged, setRouteFlags, updateisNextBtnClickedToShowValidationError, } from '../../reducers/RouteReducer';
28
29
  import { fetchEdmundAbbottRules } from '../../reducers/RulesReducer';
29
30
  import { fetchTopContent } from '../../reducers/TopContentReducer';
30
31
  import RouteUtils from '../../utils/routeUtils';
@@ -117,6 +118,8 @@ export function GlobalTroubleshootEffects(props) {
117
118
  }, [allProducts.data.productsResult, caseDispatch, props.routeProps]);
118
119
  // if you want to hide any section on page load then the logic will go here..
119
120
  useEffect(() => {
121
+ // Reset validation error state when the troubleshoot app loads freshly
122
+ updateisNextBtnClickedToShowValidationError(dispatchToRouteReducer, false);
120
123
  if (!isFirstMount.current && loggedInUser.data && managedAccounts.data)
121
124
  return;
122
125
  if (isFirstMount.current) {
@@ -143,11 +146,14 @@ export function GlobalTroubleshootEffects(props) {
143
146
  */
144
147
  useEffect(() => {
145
148
  if (props.routeProps.location.pathname === RouteUtils.seBasePath) {
149
+ // Set the active section to the default section when navigating to base path
150
+ const defaultSection = isCaseCreate ? AppRouteSections.GET_SUPPORT : AppRouteSections.TROUBLESHOOT;
151
+ setActiveSectionChanged(dispatchToRouteReducer, defaultSection, '');
146
152
  RouteUtils.navigateToDefaltSection(props.routeProps, isCaseCreate, isSearchIntent, false);
147
153
  !isSearchIntent && resetCaseCreateState();
148
154
  }
149
155
  // eslint-disable-next-line react-hooks/exhaustive-deps
150
- }, [dispatchToRouteReducer, props.routeProps, isCaseCreate, isSearchIntent]);
156
+ }, [dispatchToRouteReducer, props.routeProps.location.pathname, isCaseCreate, isSearchIntent]);
151
157
  /**
152
158
  * Setting Default AccountNumber and ContactSsoUsername from loggedInUsersAccount
153
159
  * Disabling exhaustive-deps rule as we don't want to reset default values if user manually clears these from UI.
@@ -39,14 +39,14 @@ function WizardAside(props) {
39
39
  React.createElement("section", { className: "grid-aside-content" },
40
40
  canUseSessionManagement && !isCreatingCase && activeSection !== AppRouteSections.SUBMIT_CASE && (React.createElement(SessionRestore, { routeProps: props.routeProps })),
41
41
  canShowFileUploadWidget() && React.createElement(InsightsResults, null),
42
- canShowFileUploadWidget() && React.createElement(FileDiag, { className: "pf-v6-u-mb-md" }),
42
+ canShowFileUploadWidget() && React.createElement(FileDiag, { className: "pf-v6-u-mb-lg" }),
43
43
  activeSection === (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) &&
44
44
  !isCveModalOpened && React.createElement(CveSidebar, null),
45
45
  activeSection === AppRouteSections.RESOURCES && React.createElement(CveSidebar, null),
46
46
  canShowEARuleWidget && React.createElement(EARuleWidget, null),
47
- !(isIdea && activeSection === 'submit-case') && (React.createElement(AsideResults, { routeProps: props.routeProps, className: "pf-v6-u-mb-md pf-v6-u-mt-0" })),
47
+ !(isIdea && activeSection === 'submit-case') && (React.createElement(AsideResults, { routeProps: props.routeProps, className: "pf-v6-u-mb-lg pf-v6-u-mt-0" })),
48
48
  canShowFileRecommendationSectionsWidget && React.createElement(InsightsResults, { isDisplayOnMain: true }),
49
- React.createElement(ClusterRecommendations, { showClusterRecommendationsList: canShowClusterIdReportWidget, className: "pf-v6-u-mb-md pf-v6-u-mt-0" }))));
49
+ React.createElement(ClusterRecommendations, { showClusterRecommendationsList: canShowClusterIdReportWidget, className: "pf-v6-u-mb-lg pf-v6-u-mt-0" }))));
50
50
  }
51
51
  WizardAside.defaultProps = defaultProps;
52
52
  export default WizardAside;
@@ -1 +1 @@
1
- {"version":3,"file":"WizardLayout.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardLayout.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAcvG,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,qBA+NzC"}
1
+ {"version":3,"file":"WizardLayout.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardLayout.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAcvG,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,qBAoNzC"}
@@ -33,23 +33,20 @@ import { GlobalTroubleshootEffects } from './GlobalTroubleshootEffects';
33
33
  import WizardAside from './WizardAside';
34
34
  import WizardMain from './WizardMain';
35
35
  export function WizardLayout(props) {
36
- var _a, _b, _c, _d;
37
36
  const { routeState: { activeSection, isCaseCreate }, } = useContext(RouteContext);
38
37
  const { getMetadata } = useMetadata();
39
- const [isAIChatMode, setIsAIChatMode] = useState(false);
40
- const { caseCreationError, contactSSOName, caseType, product, caseState, ABTestVariation, hasInvalidEntitlements } = useCaseSelector((state) => ({
38
+ const { caseCreationError, contactSSOName, caseType, product, caseState, ABTestVariation } = useCaseSelector((state) => ({
41
39
  caseState: state,
42
40
  caseCreationError: state.caseCreationError,
43
41
  contactSSOName: state.caseDetails.contactSSOName,
44
42
  caseType: state.caseDetails.caseType,
45
43
  product: state.caseDetails.product,
46
44
  ABTestVariation: state.ABTestVariation,
47
- hasInvalidEntitlements: state.hasInvalidEntitlements,
48
45
  }), isEqual);
49
46
  const sessionRestoreDispatch = useContext(SessionRestoreDispatchContext);
50
47
  const caseDispatch = useCaseDispatch();
51
48
  const { sessionRestore: { activeSessionId, previousSessions }, } = useContext(SessionRestoreStateContext);
52
- const { globalMetadataState: { allProducts, loggedInUser, loggedInUsersAccount, loggedInUserRights, pcmConfig }, } = useContext(GlobalMetadataStateContext);
49
+ const { globalMetadataState: { allProducts, loggedInUser, loggedInUsersAccount, pcmConfig }, } = useContext(GlobalMetadataStateContext);
53
50
  const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
54
51
  const canAddAttachments = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.ATTACHMENTS);
55
52
  const { attachmentState } = useContext(AttachmentStateContext);
@@ -155,9 +152,9 @@ export function WizardLayout(props) {
155
152
  React.createElement(GlobalTroubleshootEffects, { routeProps: props.routeProps }),
156
153
  activeSection !== AppRouteSections.DESCRIBE_IDEA && (React.createElement(PreCaseConfirmationModals, { onModalClose: onModalClose, confirmationModalType: confirmationModalType, onConfirm: () => submitCaseAndNavigate(caseCreationError) })),
157
154
  React.createElement(Grid, { style: { height: '100%' } },
158
- React.createElement(GridItem, { sm: 12, md: 12, lg: isAIChatMode ? 12 : 8, xl2: isAIChatMode ? 12 : 8 },
159
- React.createElement(WizardMain, { routeProps: props.routeProps, submitCaseAndNavigate: submitCaseAndNavigate, confirmSupportModal: confirmSupportModal, isAIChatMode: isAIChatMode, setIsAIChatMode: setIsAIChatMode, isSecureSupport: (_a = loggedInUsersAccount === null || loggedInUsersAccount === void 0 ? void 0 : loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.secureSupport, hasConfirmedStatesideSupport: (_b = loggedInUsersAccount === null || loggedInUsersAccount === void 0 ? void 0 : loggedInUsersAccount.data) === null || _b === void 0 ? void 0 : _b.hasConfirmedStatesideSupport, isUserExternal: (_d = (_c = loggedInUserRights === null || loggedInUserRights === void 0 ? void 0 : loggedInUserRights.data) === null || _c === void 0 ? void 0 : _c.isExternal()) !== null && _d !== void 0 ? _d : false, hasInvalidEntitlements: hasInvalidEntitlements })),
160
- !isAIChatMode && (React.createElement(GridItem, { span: 4, className: "grid-wizard-aside-content" },
161
- React.createElement(WizardAside, { isAttachmentUploadModalOpen: confirmationModalType === PreCaseConfirmationModalsEnum.NO_ATTACHMENT_MODAL, routeProps: props.routeProps })))),
155
+ React.createElement(GridItem, { sm: 12, md: 12, lg: 8, xl2: 8 },
156
+ React.createElement(WizardMain, { routeProps: props.routeProps, submitCaseAndNavigate: submitCaseAndNavigate, confirmSupportModal: confirmSupportModal })),
157
+ React.createElement(GridItem, { span: 4, className: "grid-wizard-aside-content" },
158
+ React.createElement(WizardAside, { isAttachmentUploadModalOpen: confirmationModalType === PreCaseConfirmationModalsEnum.NO_ATTACHMENT_MODAL, routeProps: props.routeProps }))),
162
159
  React.createElement(AlertToastWrapper, { submitCaseAndNavigate: submitCaseAndNavigate, routeProps: props.routeProps })));
163
160
  }
@@ -1,16 +1,10 @@
1
- import React, { Dispatch, SetStateAction } from 'react';
1
+ import React from 'react';
2
2
  import { RouteComponentProps } from 'react-router-dom';
3
3
  import { IRouteUrlParams } from '../../reducers/RouteConstNTypes';
4
4
  interface IProps {
5
5
  routeProps: RouteComponentProps<IRouteUrlParams>;
6
6
  submitCaseAndNavigate: (isReSubmitting: boolean) => void;
7
7
  confirmSupportModal: (hasPreferredSecureSupportAccount: boolean) => void;
8
- isAIChatMode: boolean;
9
- setIsAIChatMode: Dispatch<SetStateAction<boolean>>;
10
- isSecureSupport?: boolean;
11
- hasConfirmedStatesideSupport?: boolean;
12
- isUserExternal?: boolean;
13
- hasInvalidEntitlements?: boolean;
14
8
  }
15
9
  declare function WizardMain(props: IProps): React.JSX.Element;
16
10
  export default WizardMain;
@@ -1 +1 @@
1
- {"version":3,"file":"WizardMain.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardMain.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAqD,MAAM,OAAO,CAAC;AAE3G,OAAO,EAAS,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAU9D,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AA0FpF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,qBAAqB,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,mBAAmB,EAAE,CAAC,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,MAAM,qBAyWhC;AACD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"WizardMain.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardMain.tsx"],"names":[],"mappings":"AAUA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAS,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAO9D,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAOpF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,qBAAqB,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,mBAAmB,EAAE,CAAC,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5E;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,MAAM,qBAwMhC;AACD,eAAe,UAAU,CAAC"}
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  var __rest = (this && this.__rest) || function (s, e) {
11
2
  var t = {};
12
3
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -18,21 +9,16 @@ var __rest = (this && this.__rest) || function (s, e) {
18
9
  }
19
10
  return t;
20
11
  };
21
- import { Env } from '@cee-eng/hydrajs';
22
- import { askRHDirectAIResponse, getRHDirectStatusCheck, } from '@ifd-ui/ask-redhat-core';
23
- import { useWizardContext, Wizard, WizardNav, WizardNavItem, WizardStep } from '@patternfly/react-core';
12
+ import { Wizard, WizardNav, WizardNavItem, WizardStep, } from '@patternfly/react-core';
24
13
  import { LoadingIndicator } from '@rh-support/components';
25
14
  import isEqual from 'lodash/isEqual';
26
15
  import React, { Suspense, useContext, useEffect, useRef, useState } from 'react';
27
16
  import { useTranslation } from 'react-i18next';
28
17
  import { Route } from 'react-router-dom';
29
- import { useAIResponseDispatch } from '../../context/AIResponseContext';
30
18
  import { useCaseSelector } from '../../context/CaseContext';
31
19
  import { RecommendationDispatchContext } from '../../context/RecommendationContext';
32
20
  import { RouteContext, RouteDispatchContext } from '../../context/RouteContext';
33
21
  import { useWizard } from '../../hooks/useWizard';
34
- import { receivedAIResponse, receivedAIResponseError, requestAIResponse } from '../../reducers/AIResponseReducer';
35
- import { appSourceId_ARH, excludedCaseTypesforARH } from '../../reducers/CaseConstNTypes';
36
22
  import { RecommendationsConstants } from '../../reducers/RecommendationsReducer';
37
23
  import { AppRouteSections } from '../../reducers/RouteConstNTypes';
38
24
  import { setActiveSectionChanged, updateisNextBtnClickedToShowValidationError } from '../../reducers/RouteReducer';
@@ -41,84 +27,22 @@ import SubmitCase from '../SubmitCase/SubmitCase';
41
27
  import MainSection from './MainSection';
42
28
  import NewFeatureModal from './NewFeatureModal';
43
29
  import WizardNavigation from './WizardNavigation';
44
- // Mapping for case type display text in AI questions
45
- const CASE_TYPE_AI_TEXT_MAP = {
46
- Other: 'Something',
47
- };
48
- const getCaseTypeAIText = (caseType) => {
49
- return CASE_TYPE_AI_TEXT_MAP[caseType] || caseType;
50
- };
51
- const generateCaseTypePrefix = (activeSection, caseType, lang) => {
52
- if (activeSection === AppRouteSections.TROUBLESHOOT) {
53
- return '';
54
- }
55
- const helpWith = getCaseTypeAIText(caseType);
56
- const helpWithMap = {
57
- en: `I want help with ${helpWith}.`,
58
- de: `Ich benoetige Hilfe bei ${helpWith}.`,
59
- zh: `我需要 ${helpWith} 方面的帮助。`,
60
- pt: `Eu quero ajuda com ${helpWith}.`,
61
- fr: `Je souhaite obtenir de l'aide pour ${helpWith}.`,
62
- ko: `${helpWith}에 대한 도움이 필요합니다.`,
63
- it: `Vorrei aiuto con un ${helpWith}.`,
64
- ja: `${helpWith}のサポートを希望します。`,
65
- ru: `Я хочу помощь с ${helpWith}.`,
66
- es: `Quiero ayuda con ${helpWith}.`,
67
- };
68
- return helpWithMap[lang] || helpWithMap.en;
69
- };
70
- // Generate AI question based on case details
71
- const generateAIQuestion = (activeSection, product, version, summary, issue, caseType, lang) => {
72
- const baseMessageMap = {
73
- en: `My issue is primarily related to ${product !== null && product !== void 0 ? product : ''} ${version !== null && version !== void 0 ? version : ''}. I would title my problem: ${summary !== null && summary !== void 0 ? summary : ''}. More details are as follows: ${issue !== null && issue !== void 0 ? issue : ''}.`,
74
- de: `Mein Problem hängt hauptsächlich mit ${product !== null && product !== void 0 ? product : ''} ${version !== null && version !== void 0 ? version : ''} zusammen. Ich würde mein Problem so betiteln: ${summary !== null && summary !== void 0 ? summary : ''}. Weitere Details sind wie folgt: ${issue !== null && issue !== void 0 ? issue : ''}.`,
75
- zh: `我的问题主要与${product !== null && product !== void 0 ? product : ''} ${version !== null && version !== void 0 ? version : ''}有关。我会将我的问题命名为:${summary !== null && summary !== void 0 ? summary : ''}。更多细节如下:${issue !== null && issue !== void 0 ? issue : ''}。`,
76
- pt: `Meu problema está principalmente relacionado a ${product !== null && product !== void 0 ? product : ''} ${version !== null && version !== void 0 ? version : ''}. Eu daria ao meu problema o título: ${summary !== null && summary !== void 0 ? summary : ''}. Mais detalhes são os seguintes: ${issue !== null && issue !== void 0 ? issue : ''}.`,
77
- fr: `Mon problème est principalement lié à ${product !== null && product !== void 0 ? product : ''} ${version !== null && version !== void 0 ? version : ''}. Je donnerais à mon problème le titre : ${summary !== null && summary !== void 0 ? summary : ''}. Plus de détails sont les suivants : ${issue !== null && issue !== void 0 ? issue : ''}.`,
78
- ko: `내 문제는 주로 ${product !== null && product !== void 0 ? product : ''} ${version !== null && version !== void 0 ? version : ''}과(와) 관련이 있습니다. 내 문제의 제목은 ${summary !== null && summary !== void 0 ? summary : ''}입니다. 자세한 내용은 다음과 같습니다: ${issue !== null && issue !== void 0 ? issue : ''}.`,
79
- it: `Il mio problema è principalmente legato a ${product !== null && product !== void 0 ? product : ''} ${version !== null && version !== void 0 ? version : ''}. Intitolerei il mio problema: ${summary !== null && summary !== void 0 ? summary : ''}. Ulteriori dettagli sono i seguenti: ${issue !== null && issue !== void 0 ? issue : ''}`,
80
- ja: `私の問題は主に${product !== null && product !== void 0 ? product : ''} ${version !== null && version !== void 0 ? version : ''}に関係しています。問題のタイトルは: ${summary !== null && summary !== void 0 ? summary : ''}です。詳細は次のとおりです: ${issue !== null && issue !== void 0 ? issue : ''}。`,
81
- ru: `Моя проблема в основном связана с ${product !== null && product !== void 0 ? product : ''} ${version !== null && version !== void 0 ? version : ''}. Я бы назвал свою проблему: ${summary !== null && summary !== void 0 ? summary : ''}. Дополнительные подробности следующие: ${issue !== null && issue !== void 0 ? issue : ''}.`,
82
- es: `Mi problema está principalmente relacionado con ${product !== null && product !== void 0 ? product : ''} ${version !== null && version !== void 0 ? version : ''}. Titularía mi problema: ${summary !== null && summary !== void 0 ? summary : ''}. Más detalles son los siguientes: ${issue !== null && issue !== void 0 ? issue : ''}.`,
83
- };
84
- const prefix = generateCaseTypePrefix(activeSection, caseType, lang);
85
- return `${prefix} ${baseMessageMap[lang] || baseMessageMap.en}`;
86
- };
87
30
  function WizardMain(props) {
88
31
  const [showRestFlag, setShowRestFlag] = useState(false);
89
- const [aiServicesAvailable, setAIServicesAvailable] = useState(false); // default to false until services are confirmed available
90
32
  const recommendationDispatch = useContext(RecommendationDispatchContext);
91
- const { isCreatingCase, product, version, summary, issue, caseType, caseLanguage } = useCaseSelector((state) => ({
33
+ const { isCreatingCase } = useCaseSelector((state) => ({
92
34
  isCreatingCase: state.isCreatingCase,
93
- product: state.caseDetails.product,
94
- version: state.caseDetails.version,
95
- summary: state.caseDetails.summary,
96
- issue: state.caseDetails.issue,
97
- caseType: state.caseDetails.caseType,
98
- caseLanguage: state.caseDetails.caseLanguage,
99
35
  }), isEqual);
100
- const { routeState: { isCaseCreate, activeSection }, } = useContext(RouteContext);
101
- const aiResponseDispatch = useAIResponseDispatch();
102
- const isTroubleshootSection = activeSection === AppRouteSections.TROUBLESHOOT;
103
- const isResourcesSection = activeSection === AppRouteSections.RESOURCES;
104
- const isSummarizeSection = activeSection === AppRouteSections.SUMMARIZE;
36
+ const { routeState: { isCaseCreate }, } = useContext(RouteContext);
105
37
  const [userSeenRecommendations, setUserSeenRecommendations] = useState(false);
106
38
  const [userClickedNextonRecommendations, setUserClickedNextonRecommendations] = useState(false);
107
39
  const [userScrolledLabel, setUserScrolledLabel] = useState(false);
108
40
  const [userCanNavigateToTroubleshoot, setUserCanNavigateToTroubleshoot] = useState(false);
41
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
109
42
  const [isNextButtonClicked, setIsNextButtonClicked] = useState(false);
110
43
  const isNextButtonClickedRef = useRef(false);
111
44
  const isBackButtonClickedRef = useRef(false);
112
45
  const resultsRowRef = useRef(null);
113
- const previousARHFieldsRef = useRef({
114
- product: product,
115
- version: version,
116
- summary: summary,
117
- issue: issue,
118
- });
119
- const handleChatWithAIClick = () => {
120
- props.setIsAIChatMode(true);
121
- };
122
46
  const { getStepsSequece } = useWizard(props.routeProps, {
123
47
  userSeenRecommendationsfn: setUserSeenRecommendations,
124
48
  userSeenRecommendationsValue: userSeenRecommendations,
@@ -126,91 +50,12 @@ function WizardMain(props) {
126
50
  userClickedNextonRecommendationsValue: userClickedNextonRecommendations,
127
51
  resultsRowRef: resultsRowRef,
128
52
  userScrolledLabel: userScrolledLabel,
129
- isAIChatMode: props.isAIChatMode,
130
- setIsAIChatMode: props.setIsAIChatMode,
131
- onChatWithAIClick: handleChatWithAIClick,
132
- aiServicesAvailable: aiServicesAvailable,
133
- isSecureSupport: props.isSecureSupport,
134
- hasConfirmedStatesideSupport: props.hasConfirmedStatesideSupport,
135
53
  });
136
54
  const dispatchToRouteReducer = useContext(RouteDispatchContext);
137
55
  const { t } = useTranslation();
138
56
  useEffect(() => {
139
57
  setActiveSectionChanged(dispatchToRouteReducer, isCaseCreate ? AppRouteSections.GET_SUPPORT : AppRouteSections.TROUBLESHOOT, '');
140
58
  }, [isCaseCreate, dispatchToRouteReducer]);
141
- const shouldEnableARHServices = () => {
142
- // Check if the current section is relevant for AI services
143
- const isRelevantSection = isTroubleshootSection || isSummarizeSection || isResourcesSection;
144
- // Check if the case type is allowed (not in the excluded list)
145
- const isCaseTypeAllowed = !excludedCaseTypesforARH.includes(caseType || '');
146
- // Check if user is not a secure support or confirmed stateside support user
147
- const isNotSecureOrStatesideUser = !props.isSecureSupport && !props.hasConfirmedStatesideSupport;
148
- // Check if the ARH fields have changed
149
- const isARHFieldsChanged = haveARHFieldsChanged();
150
- // Check if user is external and has invalid entitlements
151
- const isNotUnentitledExternalUser = !(props.isUserExternal && props.hasInvalidEntitlements);
152
- return (isRelevantSection &&
153
- isCaseTypeAllowed &&
154
- isNotSecureOrStatesideUser &&
155
- isARHFieldsChanged &&
156
- isNotUnentitledExternalUser);
157
- };
158
- // Check if any of the ARH-relevant fields have changed
159
- const haveARHFieldsChanged = () => {
160
- const hasChanged = previousARHFieldsRef.current.product !== product ||
161
- previousARHFieldsRef.current.version !== version ||
162
- previousARHFieldsRef.current.summary !== summary ||
163
- previousARHFieldsRef.current.issue !== issue;
164
- if (hasChanged) {
165
- previousARHFieldsRef.current = {
166
- product,
167
- version,
168
- summary,
169
- issue,
170
- };
171
- }
172
- return hasChanged;
173
- };
174
- useEffect(() => {
175
- if (!activeSection) {
176
- return;
177
- }
178
- //todo - need to revisit this logic
179
- // if (!shouldEnableARHServices()) {
180
- // if (aiServicesAvailable) {
181
- // setAIServicesAvailable(false);
182
- // }
183
- // return;
184
- // }
185
- // check if ARH services are available
186
- if (!aiServicesAvailable) {
187
- const checkAIServices = () => __awaiter(this, void 0, void 0, function* () {
188
- var _a, _b, _c;
189
- const config = {
190
- appSourceId: appSourceId_ARH,
191
- authToken: (_b = (_a = window === null || window === void 0 ? void 0 : window.sessionjs) === null || _a === void 0 ? void 0 : _a.getEncodedToken()) !== null && _b !== void 0 ? _b : '',
192
- packageVersion: (_c = window === null || window === void 0 ? void 0 : window.supportVersionInfo) === null || _c === void 0 ? void 0 : _c.packageVersion,
193
- appEnv: Env.getEnvName(),
194
- };
195
- try {
196
- yield getRHDirectStatusCheck(config);
197
- setAIServicesAvailable(true);
198
- }
199
- catch (error) {
200
- setAIServicesAvailable(false);
201
- }
202
- });
203
- checkAIServices();
204
- }
205
- // eslint-disable-next-line react-hooks/exhaustive-deps
206
- }, [
207
- activeSection,
208
- caseType,
209
- isCaseCreate,
210
- aiServicesAvailable,
211
- props.isSecureSupport,
212
- props.hasConfirmedStatesideSupport,
213
- ]);
214
59
  const renderSubmitCasePage = () => (React.createElement(MainSection, { section: AppRouteSections.SUBMIT_CASE, title: t('Case has been submitted'), isLoading: isCreatingCase, description: t("We'll be in contact with you shortly. Look for updates on this case."), className: "case-submit-page" },
215
60
  React.createElement(Suspense, { fallback: React.createElement(LoadingIndicator, { size: "sm" }) },
216
61
  React.createElement(SubmitCase, { routeProps: props.routeProps }))));
@@ -255,55 +100,26 @@ function WizardMain(props) {
255
100
  isBackButtonClickedRef.current = false;
256
101
  setIsNextButtonClicked(false);
257
102
  };
258
- const handleReturnToCaseCreation = () => {
259
- props.setIsAIChatMode(false);
260
- };
261
103
  const customNav = (isExpanded, steps, activeStep, goToStepByIndex) => (React.createElement(WizardNav, { isExpanded: isExpanded }, steps.map((step) => {
262
104
  return (React.createElement(WizardNavItem, { key: step.id, id: step.id, content: step.name, isCurrent: activeStep.id === step.id, isDisabled: !step.canJumpTo, stepIndex: step.index, onClick: () => goToStepByIndex(step.index) }));
263
105
  })));
264
- const CustomFooter = () => {
265
- var _a, _b, _c;
266
- const { activeStep, goToNextStep, goToPrevStep, steps, goToStepByIndex } = useWizardContext(); // Correctly using the context
267
- const config = {
268
- appSourceId: appSourceId_ARH,
269
- authToken: (_b = (_a = window === null || window === void 0 ? void 0 : window.sessionjs) === null || _a === void 0 ? void 0 : _a.getEncodedToken()) !== null && _b !== void 0 ? _b : '',
270
- packageVersion: (_c = window === null || window === void 0 ? void 0 : window.supportVersionInfo) === null || _c === void 0 ? void 0 : _c.packageVersion,
271
- appEnv: Env.getEnvName(),
272
- };
106
+ const CustomFooter = (activeStep, goToNextStep, goToPrevStep) => {
273
107
  useEffect(() => {
274
- if (steps.length > 2 && activeStep.index === 2 && isNextButtonClicked) {
275
- goToStepByIndex(3);
276
- }
277
- }, [activeStep, steps.length, goToStepByIndex]);
278
- const fetchARHResponse = () => __awaiter(this, void 0, void 0, function* () {
279
- const detailedQuestion = generateAIQuestion(activeSection || '', product, version, summary, issue, caseType || '', caseLanguage || 'en');
280
- // Dispatch request started action
281
- aiResponseDispatch(requestAIResponse(detailedQuestion));
282
- try {
283
- const response = yield askRHDirectAIResponse(detailedQuestion, config);
284
- aiResponseDispatch(receivedAIResponse(response));
285
- }
286
- catch (error) {
287
- const errorMessage = error instanceof Error ? error.message : 'Failed to get AI response';
288
- aiResponseDispatch(receivedAIResponseError(errorMessage));
108
+ if (steps.length > 2 && (activeStep === null || activeStep === void 0 ? void 0 : activeStep.index) === 2 && isNextButtonClicked) {
109
+ goToNextStep({});
289
110
  }
290
- });
291
- const handleContinueClick = () => __awaiter(this, void 0, void 0, function* () {
292
- // Navigate to next step first
293
- isNextButtonClickedRef.current = true;
294
- setIsNextButtonClicked(true);
295
- goToNextStep();
296
- focusWizardMainPanel();
297
- // Fetch ARH response if conditions are met
298
- if (shouldEnableARHServices() && aiServicesAvailable) {
299
- yield fetchARHResponse();
300
- }
301
- });
302
- return (React.createElement(WizardNavigation, { routeProps: props.routeProps, onNext: handleContinueClick, onBack: () => {
111
+ // eslint-disable-next-line react-hooks/exhaustive-deps
112
+ }, [activeStep, steps.length, isNextButtonClicked, goToNextStep]);
113
+ return (React.createElement(WizardNavigation, { routeProps: props.routeProps, onNext: (e) => {
114
+ isNextButtonClickedRef.current = true;
115
+ setIsNextButtonClicked(true);
116
+ goToNextStep(e);
117
+ focusWizardMainPanel();
118
+ }, onBack: (e) => {
303
119
  isBackButtonClickedRef.current = true;
304
- goToPrevStep();
120
+ goToPrevStep(e);
305
121
  focusWizardMainPanel();
306
- }, activeStep: activeStep, onSubmit: onSubmit, confirmSupportModal: props.confirmSupportModal, onShowRestUpdate: (flag) => setShowRestFlag(flag), userSeenRecommendations: userSeenRecommendations, setUserSeenRecommendations: setUserSeenRecommendations, userClickedNextonRecommendationsFn: setUserClickedNextonRecommendations, userClickedNextonRecommendationsValue: userClickedNextonRecommendations, setUserCanNavigateToTroubleshoot: setUserCanNavigateToTroubleshoot, resultsRowRef: resultsRowRef, setUserScrolledLabel: setUserScrolledLabel, isAIChatMode: props.isAIChatMode, onReturnToCaseCreation: handleReturnToCaseCreation }));
122
+ }, activeStep: activeStep, onSubmit: onSubmit, confirmSupportModal: props.confirmSupportModal, onShowRestUpdate: (flag) => setShowRestFlag(flag), userSeenRecommendations: userSeenRecommendations, setUserSeenRecommendations: setUserSeenRecommendations, userClickedNextonRecommendationsFn: setUserClickedNextonRecommendations, userClickedNextonRecommendationsValue: userClickedNextonRecommendations, setUserCanNavigateToTroubleshoot: setUserCanNavigateToTroubleshoot, resultsRowRef: resultsRowRef, setUserScrolledLabel: setUserScrolledLabel }));
307
123
  };
308
124
  const steps = getStepsSequece(showRestFlag);
309
125
  const wizardSteps = steps.map((step) => {
@@ -314,7 +130,7 @@ function WizardMain(props) {
314
130
  // in useWizard file then add it to step squences in RouteConstNTypes
315
131
  return (React.createElement(React.Fragment, null,
316
132
  React.createElement(NewFeatureModal, null),
317
- steps.length !== 0 && (React.createElement(Route, { path: `${RouteUtils.seBasePath}/(${steps[0].id}|describe-issue|open-case)`, render: () => (React.createElement(Wizard, { isVisitRequired: true, nav: customNav, navAriaLabel: ` navAriaLabel steps `, footer: React.createElement(CustomFooter, null), onStepChange: onCurrentStepChanged }, wizardSteps)) })),
133
+ steps.length !== 0 && (React.createElement(Route, { path: `${RouteUtils.seBasePath}/(${steps[0].id}|describe-issue|open-case)`, render: () => (React.createElement(Wizard, { isVisitRequired: true, nav: customNav, navAriaLabel: ` navAriaLabel steps `, footer: CustomFooter, onStepChange: onCurrentStepChanged }, wizardSteps)) })),
318
134
  React.createElement(Route, { exact: true, path: `${RouteUtils.seBasePath}/${AppRouteSections.SUBMIT_CASE}`, render: () => renderSubmitCasePage() })));
319
135
  }
320
136
  export default WizardMain;
@@ -3,8 +3,8 @@ import { RouteComponentProps } from 'react-router-dom';
3
3
  import { IRouteUrlParams, ISectionConfiguration } from '../../reducers/RouteConstNTypes';
4
4
  interface IProps {
5
5
  routeProps: RouteComponentProps<IRouteUrlParams>;
6
- onNext: () => void;
7
- onBack: () => void;
6
+ onNext: (e: React.MouseEvent<HTMLButtonElement>) => void;
7
+ onBack: (e: React.MouseEvent<HTMLButtonElement>) => void;
8
8
  activeStep: Partial<ISectionConfiguration>;
9
9
  onSubmit: () => void;
10
10
  confirmSupportModal: (hasPreferredSecureSupportAccount: boolean) => void;
@@ -16,8 +16,6 @@ interface IProps {
16
16
  setUserCanNavigateToTroubleshoot: (value: React.SetStateAction<boolean>) => void;
17
17
  resultsRowRef?: any;
18
18
  setUserScrolledLabel: (value: React.SetStateAction<boolean>) => void;
19
- isAIChatMode?: boolean;
20
- onReturnToCaseCreation?: () => void;
21
19
  }
22
20
  declare function WizardNavigation(props: IProps): React.JSX.Element;
23
21
  declare namespace WizardNavigation {
@@ -1 +1 @@
1
- {"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,EAAoB,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAM3G,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mBAAmB,EAAE,CAAC,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC5E,kCAAkC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACpF,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAChD,gCAAgC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACrE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;CACvC;AAGD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBAiVtC;kBAjVQ,gBAAgB;;;AAmVzB,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,EAAoB,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAM3G,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACzD,UAAU,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mBAAmB,EAAE,CAAC,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC5E,kCAAkC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACpF,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAChD,gCAAgC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACxE;AAGD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBA8UtC;kBA9UQ,gBAAgB;;;AAgVzB,eAAe,gBAAgB,CAAC"}
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { pcm } from '@cee-eng/hydrajs';
11
11
  import { Button, ButtonVariant, WizardFooterWrapper } from '@patternfly/react-core';
12
- import { useFetch } from '@rh-support/components';
12
+ import { useFetch, usePrevious } from '@rh-support/components';
13
13
  import { GlobalMetadataStateContext, useCanCreateCase } from '@rh-support/react-context';
14
14
  import { dtmTrackEventCaseCreationStepEncountered, getResTypeFromUrl, PreviousToNewCaseTypeMap, scrollIntoView, } from '@rh-support/utils';
15
15
  import find from 'lodash/find';
@@ -51,6 +51,7 @@ function WizardNavigation(props) {
51
51
  const { activeSectionError, isSectionValidFn } = useIsSectionValid(activeSection);
52
52
  const [isRecsModalVisible, setIsRecsModalVisible] = useState(false);
53
53
  const previousRecommendationTop = useRef(0);
54
+ const previousStep = usePrevious(props.activeStep);
54
55
  const { request: resolveSessionRequest } = useFetch(pcm.preCase.session.resolveSession);
55
56
  const { sessionRestore: { activeSessionId, sessionResourceTracking }, } = useContext(SessionRestoreStateContext);
56
57
  const { SessionResourceSource } = pcm.preCase.session;
@@ -59,12 +60,15 @@ function WizardNavigation(props) {
59
60
  }), isEqual);
60
61
  const caseDispatch = useCaseDispatch();
61
62
  useEffect(() => {
62
- var _a;
63
+ var _a, _b;
64
+ if ((previousStep === null || previousStep === void 0 ? void 0 : previousStep.id) === ((_a = props.activeStep) === null || _a === void 0 ? void 0 : _a.id)) {
65
+ return;
66
+ }
63
67
  const isCreatingCase = RouteUtils.getQueryParams(props.routeProps).caseCreate === 'true';
64
68
  dtmTrackEventCaseCreationStepEncountered(isCreatingCase,
65
69
  // @ts-ignore
66
70
  props.activeStep.name, props.activeStep.id === AppRouteSections.GET_SUPPORT ||
67
- props.activeStep.id === AppRouteSections.TROUBLESHOOT, (_a = caseState.caseDetails) === null || _a === void 0 ? void 0 : _a.caseNumber, PreviousToNewCaseTypeMap[caseState.caseDetails.caseType], caseState.caseDetails.summary, caseState.caseDetails.product, caseState.caseDetails.version);
71
+ props.activeStep.id === AppRouteSections.TROUBLESHOOT, (_b = caseState.caseDetails) === null || _b === void 0 ? void 0 : _b.caseNumber, PreviousToNewCaseTypeMap[caseState.caseDetails.caseType], caseState.caseDetails.summary, caseState.caseDetails.product, caseState.caseDetails.version);
68
72
  if (props.activeStep.id === AppRouteSections.RESOURCES) {
69
73
  window.scrollTo({
70
74
  top: 0,
@@ -72,7 +76,7 @@ function WizardNavigation(props) {
72
76
  });
73
77
  }
74
78
  // eslint-disable-next-line react-hooks/exhaustive-deps
75
- }, [props.activeStep.id]);
79
+ }, [previousStep === null || previousStep === void 0 ? void 0 : previousStep.id, props.activeStep.id]);
76
80
  const [hasUserScrolled, setHasUserScrolled] = useState(false);
77
81
  useEffect(() => {
78
82
  if (props.activeStep.id !== (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) ||
@@ -135,7 +139,7 @@ function WizardNavigation(props) {
135
139
  }
136
140
  };
137
141
  }, [recommendationState.numFound, hasUserScrolled, props, isCaseCreate]);
138
- const onNext = () => {
142
+ const onNext = (e) => {
139
143
  var _a;
140
144
  updateisNextBtnClickedToShowValidationError(dispatchToRouteReducer, true);
141
145
  //handle the new changes for 13406:
@@ -171,19 +175,19 @@ function WizardNavigation(props) {
171
175
  // to show all steps, a delay needed in order to steps array
172
176
  // to be updated
173
177
  window.setTimeout(() => {
174
- props.onNext && props.onNext();
178
+ props.onNext && props.onNext(e);
175
179
  }, 10);
176
180
  }
177
181
  else {
178
- props.onNext && props.onNext();
182
+ props.onNext && props.onNext(e);
179
183
  }
180
184
  }
181
185
  return;
182
186
  };
183
- const onBack = () => {
187
+ const onBack = (e) => {
184
188
  if (props.activeStep.hidRestOnBack)
185
189
  props.onShowRestUpdate(false);
186
- props.onBack();
190
+ props.onBack(e);
187
191
  };
188
192
  const onRecsFeedbackModalToggle = () => {
189
193
  setIsRecsModalVisible((visible) => !visible);
@@ -249,10 +253,9 @@ function WizardNavigation(props) {
249
253
  // To handle entitled products
250
254
  return (React.createElement(React.Fragment, null,
251
255
  React.createElement(WizardFooterWrapper, null,
252
- props.isAIChatMode && activeSection === AppRouteSections.RESOURCES ? (React.createElement(Button, { onClick: props.onReturnToCaseCreation, variant: "link", className: "return-to-case-btn" }, isCaseCreate ? t('Return to case creation') : t('Return to resources'))) : (React.createElement(React.Fragment, null,
253
- props.activeStep.order !== 0 && (React.createElement("button", { onClick: () => onBack(), className: "btn btn-app btn-open-white main-nav-button", "data-tracking-id": `prev-of-${activeSection}`, type: "button", disabled: isDisabledGoBack() }, t('Go back'))),
254
- React.createElement("button", { disabled: nextButtonDisabledLogic(), onClick: onNext, className: "btn btn-app btn-primary main-nav-button", "data-tracking-id": `next-of-${activeSection}`, type: "button" }, t(props.activeStep.nextButtonLabel)),
255
- activeSection === AppRouteSections.RESOURCES && isFileRecommendationsTriggered && (React.createElement(Button, { onClick: handleFileRecsSelfSolved, variant: ButtonVariant.secondary, className: "issue-solved-button solved-issue-button", "data-tracking-id": "troubleshoot-self-solved-issue" }, t('I solved my issue'))))),
256
+ props.activeStep.order !== 0 && (React.createElement("button", { onClick: onBack, className: "btn btn-app btn-open-white main-nav-button", "data-tracking-id": `prev-of-${activeSection}`, type: "button", disabled: isDisabledGoBack() }, t('Go back'))),
257
+ React.createElement("button", { disabled: nextButtonDisabledLogic(), onClick: onNext, className: "btn btn-app btn-primary main-nav-button", "data-tracking-id": `next-of-${activeSection}`, type: "button" }, t(props.activeStep.nextButtonLabel)),
258
+ activeSection === AppRouteSections.RESOURCES && isFileRecommendationsTriggered && (React.createElement(Button, { onClick: handleFileRecsSelfSolved, variant: ButtonVariant.secondary, className: "issue-solved-button solved-issue-button", "data-tracking-id": "troubleshoot-self-solved-issue" }, t('I solved my issue'))),
256
259
  React.createElement(RecommendationFeedbackModal, { isModalOpen: isRecsModalVisible, handleModalToggle: onRecsFeedbackModalToggle, modalContent: t(`Great, we're glad that resolved your issue`) }),
257
260
  activeSectionError ? (React.createElement("small", { className: "pf-v6-u-align-self-center pf-v6-u-ml-md text-red" }, activeSectionError)) : null)));
258
261
  }
@@ -2,7 +2,6 @@ import 'react-bootstrap-typeahead/css/Typeahead.css';
2
2
  import '../../css/app.css';
3
3
  import '../../css/pagination.css';
4
4
  import '../../css/productSelector.css';
5
- import '../../css/AskRedHat.css';
6
5
  import '../../css/results.css';
7
6
  import '../shared/fileUpload/css/fileSelector.css';
8
7
  import React from 'react';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/index.tsx"],"names":[],"mappings":"AAAA,OAAO,6CAA6C,CAAC;AACrD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,0BAA0B,CAAC;AAClC,OAAO,+BAA+B,CAAC;AACvC,OAAO,yBAAyB,CAAC;AACjC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,2CAA2C,CAAC;AAGnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,SAAS,EAAE,GAAG,CAAC;QACf,oBAAoB,EAAE,GAAG,CAAC;QAC1B,MAAM,EAAE,GAAG,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC;QACX,aAAa,EAAE;YACX,cAAc,EAAE,MAAM,CAAC;YACvB,OAAO,EAAE,MAAM,CAAC;SACnB,CAAC;KACL;IAED,UAAU,QAAQ;QACd,YAAY,EAAE,GAAG,CAAC;KACrB;CACJ;AAED,eAAO,MAAM,YAAY,UAAW,MAAM,sBAYzC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/index.tsx"],"names":[],"mappings":"AAAA,OAAO,6CAA6C,CAAC;AACrD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,0BAA0B,CAAC;AAClC,OAAO,+BAA+B,CAAC;AACvC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,2CAA2C,CAAC;AAGnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,SAAS,EAAE,GAAG,CAAC;QACf,oBAAoB,EAAE,GAAG,CAAC;QAC1B,MAAM,EAAE,GAAG,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC;QACX,aAAa,EAAE;YACX,cAAc,EAAE,MAAM,CAAC;YACvB,OAAO,EAAE,MAAM,CAAC;SACnB,CAAC;KACL;IAED,UAAU,QAAQ;QACd,YAAY,EAAE,GAAG,CAAC;KACrB;CACJ;AAED,eAAO,MAAM,YAAY,UAAW,MAAM,sBAYzC,CAAC"}
@@ -2,7 +2,6 @@ import 'react-bootstrap-typeahead/css/Typeahead.css';
2
2
  import '../../css/app.css';
3
3
  import '../../css/pagination.css';
4
4
  import '../../css/productSelector.css';
5
- import '../../css/AskRedHat.css';
6
5
  import '../../css/results.css';
7
6
  import '../shared/fileUpload/css/fileSelector.css';
8
7
  import { useDocumentTitle } from '@rh-support/components';
@@ -1 +1 @@
1
- {"version":3,"file":"RootTroubleshootProvider.d.ts","sourceRoot":"","sources":["../../../src/context/RootTroubleshootProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,UAAU,MAAM;IACZ,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;CACzC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,qBAoBrD"}
1
+ {"version":3,"file":"RootTroubleshootProvider.d.ts","sourceRoot":"","sources":["../../../src/context/RootTroubleshootProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,UAAU,MAAM;IACZ,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;CACzC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,qBAkBrD"}
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import { AttachmentContextProvider } from '../components/shared/fileUpload/reducer/AttachmentReducerContext';
3
- import { AIResponseContextProvider } from './AIResponseContext';
4
3
  import { CaseContextProvider } from './CaseContext';
5
4
  import { ClusterRecommendationsContextProvider } from './ClusterRecommendationsContext';
6
5
  import { RecommendationContextProvider } from './RecommendationContext';
@@ -11,11 +10,10 @@ import { TCContextProvider } from './TopContentContext';
11
10
  export function RootTroubleshootProvider(props) {
12
11
  return (React.createElement(RouteContextProvider, null,
13
12
  React.createElement(CaseContextProvider, null,
14
- React.createElement(AIResponseContextProvider, null,
15
- React.createElement(RecommendationContextProvider, null,
16
- React.createElement(AttachmentContextProvider, null,
17
- React.createElement(RulesContextProvider, null,
18
- React.createElement(ClusterRecommendationsContextProvider, null,
19
- React.createElement(TCContextProvider, null,
20
- React.createElement(SessionRestoreContextProvider, null, props.children))))))))));
13
+ React.createElement(RecommendationContextProvider, null,
14
+ React.createElement(AttachmentContextProvider, null,
15
+ React.createElement(RulesContextProvider, null,
16
+ React.createElement(ClusterRecommendationsContextProvider, null,
17
+ React.createElement(TCContextProvider, null,
18
+ React.createElement(SessionRestoreContextProvider, null, props.children)))))))));
21
19
  }