@rh-support/troubleshoot 2.6.27 → 2.6.28
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/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.d.ts +0 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.js +5 -31
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +34 -33
- package/lib/esm/components/CaseEditView/CaseDetailsAside.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsAside.js +1 -2
- package/lib/esm/components/CaseEditView/CaseDetailsTabs.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsTabs.js +0 -1
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.js +1 -1
- package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.js +22 -16
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.js +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.js +102 -53
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.js +20 -22
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseHostname.js +2 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CasePhoneNumberConfirmAlert.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CasePhoneNumberConfirmAlert.js +5 -8
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.js +9 -7
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +8 -0
- package/lib/esm/components/CaseInformation/Fts.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/Fts.js +2 -6
- package/lib/esm/components/CaseInformation/Severity.js +1 -1
- package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/SupportLevel.js +1 -1
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.js +13 -1
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.js +8 -5
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +7 -7
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.js +1 -1
- package/lib/esm/components/Cve/CveModal.d.ts.map +1 -1
- package/lib/esm/components/Cve/CveModal.js +3 -2
- package/lib/esm/components/Cve/CveSidebar.js +1 -1
- package/lib/esm/components/OpenCase/SupportTypeSelectorPage.js +1 -1
- package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/AllProductsSelector.js +9 -6
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.js +10 -1
- package/lib/esm/components/Recommendations/AsideResults.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/AsideResults.js +2 -2
- package/lib/esm/components/Recommendations/ClusterRecommendationsModal.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/ClusterRecommendationsModal.js +7 -4
- package/lib/esm/components/Recommendations/EARules/EARuleInfoAccordion.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARuleInfoAccordion.js +3 -1
- package/lib/esm/components/Recommendations/InsightsResults.js +1 -1
- package/lib/esm/components/Recommendations/InsightsRuleInfo.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/InsightsRuleInfo.js +9 -2
- package/lib/esm/components/Recommendations/RecommendationFeedbackModal.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/RecommendationFeedbackModal.js +4 -4
- package/lib/esm/components/Recommendations/Recommendations.js +1 -1
- package/lib/esm/components/Recommendations/RulesModal.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/RulesModal.js +7 -4
- package/lib/esm/components/Recommendations/WatsonxAiIcon.js +1 -1
- package/lib/esm/components/SessionRestore/SessionRestore.js +1 -1
- package/lib/esm/components/Suggestions/Suggestions.d.ts.map +1 -1
- package/lib/esm/components/Suggestions/Suggestions.js +17 -12
- package/lib/esm/components/Suggestions/TopContent.d.ts.map +1 -1
- package/lib/esm/components/Suggestions/TopContent.js +13 -13
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts +0 -7
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts.map +1 -1
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +13 -96
- package/lib/esm/components/shared/fileUpload/WidgetFileUploader.js +3 -3
- package/lib/esm/components/shared/fileUpload/css/fileSelector.css +1 -0
- package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts +1 -0
- package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts.map +1 -1
- package/lib/esm/components/shared/input/ContactSelectorInternal.js +6 -1
- package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
- package/lib/esm/components/shared/useIsSectionValid.js +7 -1
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +3 -1
- package/lib/esm/components/wizardLayout/WizardAside.js +3 -3
- package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardLayout.js +4 -6
- package/lib/esm/components/wizardLayout/WizardMain.d.ts +1 -5
- package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardMain.js +18 -147
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts +2 -4
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardNavigation.js +16 -13
- package/lib/esm/components/wizardLayout/index.d.ts +0 -1
- package/lib/esm/components/wizardLayout/index.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/index.js +0 -1
- package/lib/esm/context/RootTroubleshootProvider.d.ts.map +1 -1
- package/lib/esm/context/RootTroubleshootProvider.js +6 -8
- package/lib/esm/css/app.css +5 -4
- package/lib/esm/css/case.css +12 -0
- package/lib/esm/css/results.css +2 -2
- package/lib/esm/hooks/useWizard.d.ts +0 -6
- package/lib/esm/hooks/useWizard.d.ts.map +1 -1
- package/lib/esm/hooks/useWizard.js +1 -1
- package/lib/esm/reducers/CaseConstNTypes.d.ts +0 -2
- package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/CaseConstNTypes.js +0 -2
- package/lib/esm/scss/_main.scss +35 -8
- package/lib/esm/scss/_pf-overrides.scss +14 -6
- package/package.json +6 -7
- package/lib/esm/components/TroubleshootSection/AskRedHat.d.ts +0 -7
- package/lib/esm/components/TroubleshootSection/AskRedHat.d.ts.map +0 -1
- package/lib/esm/components/TroubleshootSection/AskRedHat.js +0 -73
- package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.d.ts +0 -9
- package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.d.ts.map +0 -1
- package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.js +0 -9
- package/lib/esm/components/TroubleshootSection/icons/StarIcon.d.ts +0 -9
- package/lib/esm/components/TroubleshootSection/icons/StarIcon.d.ts.map +0 -1
- package/lib/esm/components/TroubleshootSection/icons/StarIcon.js +0 -17
- package/lib/esm/context/AIResponseContext.d.ts +0 -10
- package/lib/esm/context/AIResponseContext.d.ts.map +0 -1
- package/lib/esm/context/AIResponseContext.js +0 -26
- package/lib/esm/css/AskRedHat.css +0 -338
- package/lib/esm/reducers/AIResponseConstNTypes.d.ts +0 -48
- package/lib/esm/reducers/AIResponseConstNTypes.d.ts.map +0 -1
- package/lib/esm/reducers/AIResponseConstNTypes.js +0 -16
- package/lib/esm/reducers/AIResponseReducer.d.ts +0 -9
- package/lib/esm/reducers/AIResponseReducer.d.ts.map +0 -1
- package/lib/esm/reducers/AIResponseReducer.js +0 -43
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"AASA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EAAqB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAQrF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"AASA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EAAqB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAQrF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,qBAmTtD"}
|
|
@@ -24,7 +24,7 @@ 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 { setRouteFlags, updateisNextBtnClickedToShowValidationError } from '../../reducers/RouteReducer';
|
|
28
28
|
import { fetchEdmundAbbottRules } from '../../reducers/RulesReducer';
|
|
29
29
|
import { fetchTopContent } from '../../reducers/TopContentReducer';
|
|
30
30
|
import RouteUtils from '../../utils/routeUtils';
|
|
@@ -120,6 +120,8 @@ export function GlobalTroubleshootEffects(props) {
|
|
|
120
120
|
if (!isFirstMount.current && loggedInUser.data && managedAccounts.data)
|
|
121
121
|
return;
|
|
122
122
|
if (isFirstMount.current) {
|
|
123
|
+
// Reset validation error state when the troubleshoot app first loads
|
|
124
|
+
updateisNextBtnClickedToShowValidationError(dispatchToRouteReducer, false);
|
|
123
125
|
// set the summary if redirected from portal with url query param "summary"
|
|
124
126
|
if (!isEmpty(urlQueryParams.summary)) {
|
|
125
127
|
setCaseDetails(caseDispatch, { summary: urlQueryParams.summary });
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
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,
|
|
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,10 +33,8 @@ 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;
|
|
37
36
|
const { routeState: { activeSection, isCaseCreate }, } = useContext(RouteContext);
|
|
38
37
|
const { getMetadata } = useMetadata();
|
|
39
|
-
const [isAIChatMode, setIsAIChatMode] = useState(false);
|
|
40
38
|
const { caseCreationError, contactSSOName, caseType, product, caseState, ABTestVariation } = useCaseSelector((state) => ({
|
|
41
39
|
caseState: state,
|
|
42
40
|
caseCreationError: state.caseCreationError,
|
|
@@ -154,9 +152,9 @@ export function WizardLayout(props) {
|
|
|
154
152
|
React.createElement(GlobalTroubleshootEffects, { routeProps: props.routeProps }),
|
|
155
153
|
activeSection !== AppRouteSections.DESCRIBE_IDEA && (React.createElement(PreCaseConfirmationModals, { onModalClose: onModalClose, confirmationModalType: confirmationModalType, onConfirm: () => submitCaseAndNavigate(caseCreationError) })),
|
|
156
154
|
React.createElement(Grid, { style: { height: '100%' } },
|
|
157
|
-
React.createElement(GridItem, { sm: 12, md: 12, lg:
|
|
158
|
-
React.createElement(WizardMain, { routeProps: props.routeProps, submitCaseAndNavigate: submitCaseAndNavigate, confirmSupportModal: confirmSupportModal
|
|
159
|
-
|
|
160
|
-
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 }))),
|
|
161
159
|
React.createElement(AlertToastWrapper, { submitCaseAndNavigate: submitCaseAndNavigate, routeProps: props.routeProps })));
|
|
162
160
|
}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import 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
8
|
}
|
|
13
9
|
declare function WizardMain(props: IProps): React.JSX.Element;
|
|
14
10
|
export default WizardMain;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardMain.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardMain.tsx"],"names":[],"mappings":"
|
|
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 {
|
|
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,54 +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) => {
|
|
52
|
-
if (activeSection === AppRouteSections.TROUBLESHOOT) {
|
|
53
|
-
return '';
|
|
54
|
-
}
|
|
55
|
-
const helpWith = getCaseTypeAIText(caseType);
|
|
56
|
-
return `I want help with ${helpWith}. `;
|
|
57
|
-
};
|
|
58
|
-
//generate AI question based on case details
|
|
59
|
-
const generateAIQuestion = (activeSection, product, version, summary, issue, caseType) => {
|
|
60
|
-
const baseMessage = `My issue is primarily related to ${product} ${version}. I would title my problem: ${summary}. More details are as follows: ${issue}.`;
|
|
61
|
-
const prefix = generateCaseTypePrefix(activeSection, caseType);
|
|
62
|
-
return `${prefix}${baseMessage}`;
|
|
63
|
-
};
|
|
64
30
|
function WizardMain(props) {
|
|
65
31
|
const [showRestFlag, setShowRestFlag] = useState(false);
|
|
66
|
-
const [aiServicesAvailable, setAIServicesAvailable] = useState(false); // default to false until services are confirmed available
|
|
67
32
|
const recommendationDispatch = useContext(RecommendationDispatchContext);
|
|
68
|
-
const { isCreatingCase
|
|
33
|
+
const { isCreatingCase } = useCaseSelector((state) => ({
|
|
69
34
|
isCreatingCase: state.isCreatingCase,
|
|
70
|
-
product: state.caseDetails.product,
|
|
71
|
-
version: state.caseDetails.version,
|
|
72
|
-
summary: state.caseDetails.summary,
|
|
73
|
-
issue: state.caseDetails.issue,
|
|
74
|
-
caseType: state.caseDetails.caseType,
|
|
75
35
|
}), isEqual);
|
|
76
|
-
const { routeState: { isCaseCreate
|
|
77
|
-
const aiResponseDispatch = useAIResponseDispatch();
|
|
78
|
-
const isTroubleshootSection = activeSection === AppRouteSections.TROUBLESHOOT;
|
|
79
|
-
const isResourcesSection = activeSection === AppRouteSections.RESOURCES;
|
|
80
|
-
const isSummarizeSection = activeSection === AppRouteSections.SUMMARIZE;
|
|
36
|
+
const { routeState: { isCaseCreate }, } = useContext(RouteContext);
|
|
81
37
|
const [userSeenRecommendations, setUserSeenRecommendations] = useState(false);
|
|
82
38
|
const [userClickedNextonRecommendations, setUserClickedNextonRecommendations] = useState(false);
|
|
83
39
|
const [userScrolledLabel, setUserScrolledLabel] = useState(false);
|
|
84
40
|
const [userCanNavigateToTroubleshoot, setUserCanNavigateToTroubleshoot] = useState(false);
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
85
42
|
const [isNextButtonClicked, setIsNextButtonClicked] = useState(false);
|
|
86
43
|
const isNextButtonClickedRef = useRef(false);
|
|
87
44
|
const isBackButtonClickedRef = useRef(false);
|
|
88
45
|
const resultsRowRef = useRef(null);
|
|
89
|
-
const handleChatWithAIClick = () => {
|
|
90
|
-
props.setIsAIChatMode(true);
|
|
91
|
-
};
|
|
92
46
|
const { getStepsSequece } = useWizard(props.routeProps, {
|
|
93
47
|
userSeenRecommendationsfn: setUserSeenRecommendations,
|
|
94
48
|
userSeenRecommendationsValue: userSeenRecommendations,
|
|
@@ -96,66 +50,12 @@ function WizardMain(props) {
|
|
|
96
50
|
userClickedNextonRecommendationsValue: userClickedNextonRecommendations,
|
|
97
51
|
resultsRowRef: resultsRowRef,
|
|
98
52
|
userScrolledLabel: userScrolledLabel,
|
|
99
|
-
isAIChatMode: props.isAIChatMode,
|
|
100
|
-
setIsAIChatMode: props.setIsAIChatMode,
|
|
101
|
-
onChatWithAIClick: handleChatWithAIClick,
|
|
102
|
-
aiServicesAvailable: aiServicesAvailable,
|
|
103
|
-
isSecureSupport: props.isSecureSupport,
|
|
104
|
-
hasConfirmedStatesideSupport: props.hasConfirmedStatesideSupport,
|
|
105
53
|
});
|
|
106
54
|
const dispatchToRouteReducer = useContext(RouteDispatchContext);
|
|
107
55
|
const { t } = useTranslation();
|
|
108
56
|
useEffect(() => {
|
|
109
57
|
setActiveSectionChanged(dispatchToRouteReducer, isCaseCreate ? AppRouteSections.GET_SUPPORT : AppRouteSections.TROUBLESHOOT, '');
|
|
110
58
|
}, [isCaseCreate, dispatchToRouteReducer]);
|
|
111
|
-
const shouldEnableARHServices = () => {
|
|
112
|
-
// Check if the current section is relevant for AI services
|
|
113
|
-
const isRelevantSection = isTroubleshootSection || isSummarizeSection || isResourcesSection;
|
|
114
|
-
// Check if the case type is allowed (not in the excluded list)
|
|
115
|
-
const isCaseTypeAllowed = !excludedCaseTypesforARH.includes(caseType || '');
|
|
116
|
-
// Check if user is not a secure support or confirmed stateside support user
|
|
117
|
-
const isNotSecureOrStatesideUser = !props.isSecureSupport && !props.hasConfirmedStatesideSupport;
|
|
118
|
-
return isRelevantSection && isCaseTypeAllowed && isNotSecureOrStatesideUser;
|
|
119
|
-
};
|
|
120
|
-
useEffect(() => {
|
|
121
|
-
if (!activeSection) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
if (!shouldEnableARHServices()) {
|
|
125
|
-
if (aiServicesAvailable) {
|
|
126
|
-
setAIServicesAvailable(false);
|
|
127
|
-
}
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
// check if ARH services are available
|
|
131
|
-
if (!aiServicesAvailable) {
|
|
132
|
-
const checkAIServices = () => __awaiter(this, void 0, void 0, function* () {
|
|
133
|
-
var _a, _b, _c;
|
|
134
|
-
const config = {
|
|
135
|
-
appSourceId: appSourceId_ARH,
|
|
136
|
-
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 : '',
|
|
137
|
-
packageVersion: (_c = window === null || window === void 0 ? void 0 : window.supportVersionInfo) === null || _c === void 0 ? void 0 : _c.packageVersion,
|
|
138
|
-
appEnv: Env.getEnvName(),
|
|
139
|
-
};
|
|
140
|
-
try {
|
|
141
|
-
yield getRHDirectStatusCheck(config);
|
|
142
|
-
setAIServicesAvailable(true);
|
|
143
|
-
}
|
|
144
|
-
catch (error) {
|
|
145
|
-
setAIServicesAvailable(false);
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
checkAIServices();
|
|
149
|
-
}
|
|
150
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
151
|
-
}, [
|
|
152
|
-
activeSection,
|
|
153
|
-
caseType,
|
|
154
|
-
isCaseCreate,
|
|
155
|
-
aiServicesAvailable,
|
|
156
|
-
props.isSecureSupport,
|
|
157
|
-
props.hasConfirmedStatesideSupport,
|
|
158
|
-
]);
|
|
159
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" },
|
|
160
60
|
React.createElement(Suspense, { fallback: React.createElement(LoadingIndicator, { size: "sm" }) },
|
|
161
61
|
React.createElement(SubmitCase, { routeProps: props.routeProps }))));
|
|
@@ -200,55 +100,26 @@ function WizardMain(props) {
|
|
|
200
100
|
isBackButtonClickedRef.current = false;
|
|
201
101
|
setIsNextButtonClicked(false);
|
|
202
102
|
};
|
|
203
|
-
const handleReturnToCaseCreation = () => {
|
|
204
|
-
props.setIsAIChatMode(false);
|
|
205
|
-
};
|
|
206
103
|
const customNav = (isExpanded, steps, activeStep, goToStepByIndex) => (React.createElement(WizardNav, { isExpanded: isExpanded }, steps.map((step) => {
|
|
207
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) }));
|
|
208
105
|
})));
|
|
209
|
-
const CustomFooter = () => {
|
|
210
|
-
var _a, _b, _c;
|
|
211
|
-
const { activeStep, goToNextStep, goToPrevStep, steps, goToStepByIndex } = useWizardContext(); // Correctly using the context
|
|
212
|
-
const config = {
|
|
213
|
-
appSourceId: appSourceId_ARH,
|
|
214
|
-
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 : '',
|
|
215
|
-
packageVersion: (_c = window === null || window === void 0 ? void 0 : window.supportVersionInfo) === null || _c === void 0 ? void 0 : _c.packageVersion,
|
|
216
|
-
appEnv: Env.getEnvName(),
|
|
217
|
-
};
|
|
106
|
+
const CustomFooter = (activeStep, goToNextStep, goToPrevStep) => {
|
|
218
107
|
useEffect(() => {
|
|
219
|
-
if (steps.length > 2 && activeStep.index === 2 && isNextButtonClicked) {
|
|
220
|
-
|
|
108
|
+
if (steps.length > 2 && (activeStep === null || activeStep === void 0 ? void 0 : activeStep.index) === 2 && isNextButtonClicked) {
|
|
109
|
+
goToNextStep({});
|
|
221
110
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
}
|
|
231
|
-
catch (error) {
|
|
232
|
-
const errorMessage = error instanceof Error ? error.message : 'Failed to get AI response';
|
|
233
|
-
aiResponseDispatch(receivedAIResponseError(errorMessage));
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
const handleContinueClick = () => __awaiter(this, void 0, void 0, function* () {
|
|
237
|
-
// Navigate to next step first
|
|
238
|
-
isNextButtonClickedRef.current = true;
|
|
239
|
-
setIsNextButtonClicked(true);
|
|
240
|
-
goToNextStep();
|
|
241
|
-
focusWizardMainPanel();
|
|
242
|
-
// Fetch ARH response if conditions are met
|
|
243
|
-
if (shouldEnableARHServices() && aiServicesAvailable) {
|
|
244
|
-
yield fetchARHResponse();
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
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) => {
|
|
248
119
|
isBackButtonClickedRef.current = true;
|
|
249
|
-
goToPrevStep();
|
|
120
|
+
goToPrevStep(e);
|
|
250
121
|
focusWizardMainPanel();
|
|
251
|
-
}, 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
|
|
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 }));
|
|
252
123
|
};
|
|
253
124
|
const steps = getStepsSequece(showRestFlag);
|
|
254
125
|
const wizardSteps = steps.map((step) => {
|
|
@@ -259,7 +130,7 @@ function WizardMain(props) {
|
|
|
259
130
|
// in useWizard file then add it to step squences in RouteConstNTypes
|
|
260
131
|
return (React.createElement(React.Fragment, null,
|
|
261
132
|
React.createElement(NewFeatureModal, null),
|
|
262
|
-
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:
|
|
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)) })),
|
|
263
134
|
React.createElement(Route, { exact: true, path: `${RouteUtils.seBasePath}/${AppRouteSections.SUBMIT_CASE}`, render: () => renderSubmitCasePage() })));
|
|
264
135
|
}
|
|
265
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,
|
|
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, (
|
|
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.
|
|
253
|
-
|
|
254
|
-
|
|
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,
|
|
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;
|
|
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(
|
|
15
|
-
React.createElement(
|
|
16
|
-
React.createElement(
|
|
17
|
-
React.createElement(
|
|
18
|
-
React.createElement(
|
|
19
|
-
React.createElement(
|
|
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
|
}
|
package/lib/esm/css/app.css
CHANGED
|
@@ -91,10 +91,6 @@ form textarea.form-control:focus {
|
|
|
91
91
|
border-bottom-color: #06c;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
form textarea {
|
|
95
|
-
resize: vertical !important;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
94
|
.pf-v6-c-form-control.pf-m-warning {
|
|
99
95
|
border-bottom-color: var(--pf-v5-c-form-control--m-warning--BorderBottomColor);
|
|
100
96
|
border-bottom-width: 2px;
|
|
@@ -345,6 +341,7 @@ input[type='checkbox'] {
|
|
|
345
341
|
|
|
346
342
|
.list-flushleft li {
|
|
347
343
|
margin-bottom: 0.5em;
|
|
344
|
+
list-style-type: none;
|
|
348
345
|
}
|
|
349
346
|
|
|
350
347
|
.list-flushleft li:last-child {
|
|
@@ -448,3 +445,7 @@ input[type='checkbox'] {
|
|
|
448
445
|
row-gap: 9px;
|
|
449
446
|
line-height: 2px;
|
|
450
447
|
}
|
|
448
|
+
|
|
449
|
+
#additional-information-section textarea {
|
|
450
|
+
resize: none !important;
|
|
451
|
+
}
|
package/lib/esm/css/case.css
CHANGED
|
@@ -363,3 +363,15 @@ input[aria-invalid='true'].pf-v6-c-form-control {
|
|
|
363
363
|
min-width: 552px;
|
|
364
364
|
}
|
|
365
365
|
}
|
|
366
|
+
|
|
367
|
+
#reopen-case-description {
|
|
368
|
+
resize: none !important;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.add-watcher-button {
|
|
372
|
+
max-width: 15rem;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.remove-watcher-button {
|
|
376
|
+
max-width: 15rem;
|
|
377
|
+
}
|
package/lib/esm/css/results.css
CHANGED
|
@@ -5,12 +5,6 @@ interface IProps {
|
|
|
5
5
|
userClickedNextonRecommendationsValue: boolean;
|
|
6
6
|
resultsRowRef: any;
|
|
7
7
|
userScrolledLabel: boolean;
|
|
8
|
-
isAIChatMode: boolean;
|
|
9
|
-
setIsAIChatMode: (value: boolean) => void;
|
|
10
|
-
onChatWithAIClick?: () => void;
|
|
11
|
-
aiServicesAvailable: boolean;
|
|
12
|
-
isSecureSupport?: boolean;
|
|
13
|
-
hasConfirmedStatesideSupport?: boolean;
|
|
14
8
|
}
|
|
15
9
|
export declare function useWizard(routeProps: any, props?: IProps): {
|
|
16
10
|
getStepsSequece: (showRest?: boolean) => any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWizard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useWizard.tsx"],"names":[],"mappings":"AA+BA,UAAU,MAAM;IACZ,yBAAyB,CAAC,EAAE,GAAG,CAAC;IAChC,4BAA4B,EAAE,OAAO,CAAC;IACtC,6BAA6B,EAAE,OAAO,CAAC;IACvC,qCAAqC,EAAE,OAAO,CAAC;IAC/C,aAAa,EAAE,GAAG,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useWizard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useWizard.tsx"],"names":[],"mappings":"AA+BA,UAAU,MAAM;IACZ,yBAAyB,CAAC,EAAE,GAAG,CAAC;IAChC,4BAA4B,EAAE,OAAO,CAAC;IACtC,6BAA6B,EAAE,OAAO,CAAC;IACvC,qCAAqC,EAAE,OAAO,CAAC;IAC/C,aAAa,EAAE,GAAG,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,SAAS,CAAC,UAAU,KAAA,EAAE,KAAK,CAAC,EAAE,MAAM;iCA2Qb,OAAO;EAwC7C"}
|
|
@@ -68,7 +68,7 @@ export function useWizard(routeProps, props) {
|
|
|
68
68
|
[AppRouteSections.RESOURCES]: Object.assign(Object.assign({}, defaultRouteConfiguration), { id: AppRouteSections.RESOURCES, name: isCaseCreate ? t('Resources') : t('Resources'), component: (React.createElement(MainSection, { stepNumber: 3, totalSteps: 6, section: AppRouteSections.RESOURCES, title: t('Recommendations') },
|
|
69
69
|
React.createElement(Suspense, { fallback: React.createElement(LoadingIndicator, { size: "sm" }) },
|
|
70
70
|
alertMessage(),
|
|
71
|
-
React.createElement(TroubleshootSection,
|
|
71
|
+
React.createElement(TroubleshootSection, null)))), canJumpTo: isSectionValidFn(AppRouteSections.RESOURCES || activeSection === AppRouteSections.RESOURCES) &&
|
|
72
72
|
(props === null || props === void 0 ? void 0 : props.userSeenRecommendationsValue) &&
|
|
73
73
|
(props === null || props === void 0 ? void 0 : props.userCanNavigateToTroubleshoot), nextButtonLabel: isCaseCreate ? t('Continue') : t('Convert to case') }),
|
|
74
74
|
[AppRouteSections.ADDITIONAL_INFORMATION]: Object.assign(Object.assign({}, defaultRouteConfiguration), { id: AppRouteSections.ADDITIONAL_INFORMATION, name: t('Additional information'), component: (React.createElement(MainSection, { stepNumber: 4, totalSteps: 6, section: AppRouteSections.ADDITIONAL_INFORMATION, title: React.createElement(React.Fragment, null,
|
|
@@ -242,6 +242,4 @@ export type ICaseActionType = IAction<CaseReducerConstants, ICreateCasePayloadTy
|
|
|
242
242
|
export type CaseReducerDispatchType = Dispatch<ICaseActionType>;
|
|
243
243
|
export declare const ORG_ADMIN_SEND_NOTIFCATION_KBASE_LINK = "https://access.redhat.com/articles/5967811";
|
|
244
244
|
export declare const NON_ORG_ADMIN_SEND_NOTIFCATION_KBASE_LINK = "https://access.redhat.com/articles/5967831";
|
|
245
|
-
export declare const excludedCaseTypesforARH: string[];
|
|
246
|
-
export declare const appSourceId_ARH = "PCM-001";
|
|
247
245
|
//# sourceMappingURL=CaseConstNTypes.d.ts.map
|