@rh-support/troubleshoot 2.6.42 → 2.6.45
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 +2 -3
- 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/CaseSolutions.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.js +18 -14
- 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.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.js +2 -2
- 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/RemoteSessionAgreement.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreement.js +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.js +21 -23
- 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 +4 -7
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +1 -1
- 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 +7 -5
- package/lib/esm/components/CaseManagement/SendNotifications/AddCustomEmailToAccountModal.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/AddCustomEmailToAccountModal.js +18 -20
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +9 -6
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.js +15 -22
- 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 +3 -3
- 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 +2 -2
- 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/RestoreLastSessionModal.d.ts.map +1 -1
- package/lib/esm/components/SessionRestore/RestoreLastSessionModal.js +5 -3
- 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 -99
- 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 +8 -2
- 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 +6 -9
- package/lib/esm/components/wizardLayout/WizardMain.d.ts +1 -7
- package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardMain.js +18 -202
- 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 +39 -6
- 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 +84 -22
- package/lib/esm/scss/_pf-overrides.scss +37 -10
- 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 -151
- package/lib/esm/components/TroubleshootSection/CloseButton.d.ts +0 -9
- package/lib/esm/components/TroubleshootSection/CloseButton.d.ts.map +0 -1
- package/lib/esm/components/TroubleshootSection/CloseButton.js +0 -5
- package/lib/esm/components/TroubleshootSection/QuickResponse.d.ts +0 -15
- package/lib/esm/components/TroubleshootSection/QuickResponse.d.ts.map +0 -1
- package/lib/esm/components/TroubleshootSection/QuickResponse.js +0 -26
- package/lib/esm/components/TroubleshootSection/ResponseActionButton.d.ts +0 -18
- package/lib/esm/components/TroubleshootSection/ResponseActionButton.d.ts.map +0 -1
- package/lib/esm/components/TroubleshootSection/ResponseActionButton.js +0 -28
- package/lib/esm/components/TroubleshootSection/ResponseActions.d.ts +0 -20
- package/lib/esm/components/TroubleshootSection/ResponseActions.d.ts.map +0 -1
- package/lib/esm/components/TroubleshootSection/ResponseActions.js +0 -52
- package/lib/esm/components/TroubleshootSection/UserFeedback.d.ts +0 -12
- package/lib/esm/components/TroubleshootSection/UserFeedback.d.ts.map +0 -1
- package/lib/esm/components/TroubleshootSection/UserFeedback.js +0 -44
- package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.d.ts +0 -10
- package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.d.ts.map +0 -1
- package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.js +0 -46
- 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/constants/askRedHatMessages.d.ts +0 -35
- package/lib/esm/constants/askRedHatMessages.d.ts.map +0 -1
- package/lib/esm/constants/askRedHatMessages.js +0 -36
- 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 -359
- 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,16 +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
|
-
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":"
|
|
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,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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
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
|
|
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:
|
|
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,
|
|
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
|
@@ -177,15 +177,36 @@ button,
|
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
.clipboard-wrapper {
|
|
180
|
+
display: flex;
|
|
180
181
|
position: relative;
|
|
181
182
|
}
|
|
182
183
|
|
|
183
|
-
.
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
184
|
+
.clipboard-wrapper svg {
|
|
185
|
+
color: var(--pf-t--global--text--color--link--default);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.clipboard-wrapper :first-child {
|
|
189
|
+
white-space: nowrap;
|
|
190
|
+
overflow: hidden;
|
|
191
|
+
text-overflow: ellipsis;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.helper-text-size {
|
|
195
|
+
font-size: var(--pf-t--global--font--size--100);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.label-text-size {
|
|
199
|
+
font-size: var(--pf-t--global--font--size--300);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.request-collaboration-input {
|
|
203
|
+
background-color: var(--pf-t--global--background--color--200);
|
|
204
|
+
border: var(--pf-t--global--border--width--box--default) solid var(--pf-t--global--border--color--100);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.copy-button {
|
|
208
|
+
display: flex;
|
|
209
|
+
align-items: center;
|
|
189
210
|
}
|
|
190
211
|
|
|
191
212
|
.clip-code-raw-btn {
|
|
@@ -363,3 +384,15 @@ input[aria-invalid='true'].pf-v6-c-form-control {
|
|
|
363
384
|
min-width: 552px;
|
|
364
385
|
}
|
|
365
386
|
}
|
|
387
|
+
|
|
388
|
+
#reopen-case-description {
|
|
389
|
+
resize: none !important;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
.add-watcher-button {
|
|
393
|
+
max-width: 15rem;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
.remove-watcher-button {
|
|
397
|
+
max-width: 15rem;
|
|
398
|
+
}
|
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,
|