@rh-support/troubleshoot 2.1.17 → 2.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/lib/esm/components/CaseEditView/CaseDetailsAside.d.ts.map +1 -1
  2. package/lib/esm/components/CaseEditView/CaseDetailsAside.js +6 -15
  3. package/lib/esm/components/CaseEditView/RequestRemoteSession/index.d.ts +0 -1
  4. package/lib/esm/components/CaseEditView/RequestRemoteSession/index.d.ts.map +1 -1
  5. package/lib/esm/components/CaseEditView/RequestRemoteSession/index.js +0 -1
  6. package/lib/esm/components/CaseInformation/FileDiag.d.ts +5 -1
  7. package/lib/esm/components/CaseInformation/FileDiag.d.ts.map +1 -1
  8. package/lib/esm/components/CaseInformation/FileDiag.js +2 -2
  9. package/lib/esm/components/CaseManagement/CaseManagement.d.ts.map +1 -1
  10. package/lib/esm/components/CaseManagement/CaseManagement.js +2 -15
  11. package/lib/esm/components/Recommendations/CriticalSolutionsToast.d.ts.map +1 -1
  12. package/lib/esm/components/Recommendations/CriticalSolutionsToast.js +5 -2
  13. package/lib/esm/components/Recommendations/RecommendationFeedbackModal.js +1 -1
  14. package/lib/esm/components/Recommendations/RulesModal.d.ts.map +1 -1
  15. package/lib/esm/components/Recommendations/RulesModal.js +25 -9
  16. package/lib/esm/components/Review/Review.d.ts.map +1 -1
  17. package/lib/esm/components/Review/Review.js +2 -12
  18. package/lib/esm/components/SubmitCase/SubmitCase.d.ts.map +1 -1
  19. package/lib/esm/components/SubmitCase/SubmitCase.js +4 -9
  20. package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts.map +1 -1
  21. package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +16 -11
  22. package/lib/esm/components/wizardLayout/WizardAside.js +1 -1
  23. package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
  24. package/lib/esm/components/wizardLayout/WizardNavigation.js +50 -4
  25. package/lib/esm/reducers/CaseConstNTypes.d.ts +1 -0
  26. package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
  27. package/lib/esm/reducers/CaseConstNTypes.js +1 -1
  28. package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
  29. package/lib/esm/reducers/CaseHelpers.js +2 -5
  30. package/lib/esm/reducers/CaseReducer.d.ts +0 -1
  31. package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
  32. package/lib/esm/reducers/CaseReducer.js +1 -21
  33. package/lib/esm/scss/_main.scss +13 -0
  34. package/lib/esm/scss/_pf4-overrides.scss +24 -1
  35. package/package.json +6 -6
  36. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.d.ts +0 -12
  37. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.d.ts.map +0 -1
  38. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.js +0 -48
  39. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSessionModal.d.ts +0 -15
  40. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSessionModal.d.ts.map +0 -1
  41. package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSessionModal.js +0 -108
  42. package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.d.ts +0 -17
  43. package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.d.ts.map +0 -1
  44. package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.js +0 -181
  45. package/lib/esm/components/CaseManagement/ESSRemoteSessionCheckBox.d.ts +0 -3
  46. package/lib/esm/components/CaseManagement/ESSRemoteSessionCheckBox.d.ts.map +0 -1
  47. package/lib/esm/components/CaseManagement/ESSRemoteSessionCheckBox.js +0 -167
@@ -1 +1 @@
1
- {"version":3,"file":"CaseDetailsAside.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseEditView/CaseDetailsAside.tsx"],"names":[],"mappings":"AA8BA,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,eAiW7C"}
1
+ {"version":3,"file":"CaseDetailsAside.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseEditView/CaseDetailsAside.tsx"],"names":[],"mappings":"AA8BA,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,eAiU7C"}
@@ -17,7 +17,7 @@ import TrendUpIcon from '@patternfly/react-icons/dist/js/icons/trend-up-icon';
17
17
  import { ErrorBoundary, ToastNotification, useBreakpoint, useForceUpdate } from '@rh-support/components';
18
18
  import { GlobalMetadataDispatchContext, toggleViewAsCustomerFlag, useGlobalStateContext, useUserPreferences, } from '@rh-support/react-context';
19
19
  import { ability, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
20
- import { isSpecialSupportOfferingEnabled, scrollIntoView } from '@rh-support/utils';
20
+ import { scrollIntoView } from '@rh-support/utils';
21
21
  import isEmpty from 'lodash/isEmpty';
22
22
  import isEqual from 'lodash/isEqual';
23
23
  import React, { useContext, useEffect, useRef, useState } from 'react';
@@ -29,20 +29,17 @@ import { useRecommendationStateContext } from '../../context/RecommendationConte
29
29
  import { ActiveCustomerEscalation } from './ActiveCustomerEscalation';
30
30
  import { CaseSolutions } from './CaseSolutions';
31
31
  import { PDFContext } from './PDFContainer';
32
- import { ESSRemoteSession, RemoteSessionAgreement } from './RequestRemoteSession';
32
+ import { RemoteSessionAgreement } from './RequestRemoteSession';
33
33
  export function CaseDetailsAside(props) {
34
- var _a, _b;
34
+ var _a;
35
35
  const { t } = useTranslation();
36
- const { severity, status, isFetchingCaseDetails, isFetchingCaseDetailsError, acceptedRemoteSessionTerms, screenSessionRequested, product, } = useCaseSelector((state) => ({
36
+ const { severity, status, isFetchingCaseDetails, isFetchingCaseDetailsError, acceptedRemoteSessionTerms } = useCaseSelector((state) => ({
37
37
  severity: state.caseDetails.severity,
38
38
  status: state.caseDetails.status,
39
39
  isFetchingCaseDetails: state.isFetchingCaseDetails,
40
40
  isFetchingCaseDetailsError: state.isFetchingCaseDetailsError,
41
41
  acceptedRemoteSessionTerms: state.caseDetails.remoteSessionTermsAcked,
42
- screenSessionRequested: state.caseDetails.screenSessionRequested,
43
- product: state.caseDetails.product,
44
42
  }), isEqual);
45
- const selectedProduct = product;
46
43
  const { caseDetailsPageState: { caseEscalations }, } = useCaseDetailsPageStateContext();
47
44
  const isCreateRMEVisible = (caseEscalations.data || []).length === 0 || caseEscalations.data.every((item) => item.status === 'Closed');
48
45
  const { recommendationState: { isLoadingRecommendations, allDocs }, } = useRecommendationStateContext();
@@ -61,7 +58,7 @@ export function CaseDetailsAside(props) {
61
58
  const isXLScreen = breakPoint.xl;
62
59
  const toggleCustomerViewRef = useRef(null);
63
60
  const isFirstMountRef = useRef(true);
64
- const { globalMetadataState: { navBarRef, viewAsCustomer, loggedInUsersAccount, loggedInUserRights, allProducts }, } = useGlobalStateContext();
61
+ const { globalMetadataState: { navBarRef, viewAsCustomer, loggedInUsersAccount, loggedInUserRights }, } = useGlobalStateContext();
65
62
  const isSecureSupportAccount = loggedInUsersAccount.data.secureSupport;
66
63
  // To enable RSA Section for external users
67
64
  const isExternal = loggedInUserRights.data.isExternal();
@@ -166,8 +163,6 @@ export function CaseDetailsAside(props) {
166
163
  return t('View internal information available to Red Hat associates only.');
167
164
  }
168
165
  };
169
- // To check if the user is ESS Customer and Product has ESS Support
170
- const isESSCustomer = isSpecialSupportOfferingEnabled((_b = allProducts.data) === null || _b === void 0 ? void 0 : _b.productsResult, selectedProduct);
171
166
  return (React.createElement("aside", { className: `grid-aside ${isSideBarExpanded ? '' : 'sidebar-collapsed'} ` },
172
167
  React.createElement("pfe-collapse-toggle", { "aria-controls": "case-details-aside-content", onClick: onToggleAside }, isSideBarExpanded ? (React.createElement("div", { className: `sidebar-header ${isExportingPDF ? 'hide-in-pdf' : ''}` },
173
168
  React.createElement(Button, { variant: "link", isInline: true, title: t('Collapse sidebar') },
@@ -206,10 +201,6 @@ export function CaseDetailsAside(props) {
206
201
  React.createElement(CaseSolutions, { caseNumber: caseNumber, ref: topSolutionsRef, isSecureSupportAccount: isSecureSupportAccount })),
207
202
  !caseEscalations.isFetching && canViewACESection && (React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading customer escalation section') } },
208
203
  React.createElement(ActiveCustomerEscalation, { caseNumber: caseNumber, caseSeverity: severity, caseStatus: status, ref: createEscalationRef }))),
209
- isExternal && isESSCustomer && (React.createElement(ErrorBoundary, { errorMsgInfo: {
210
- message: t('There was an error loading requesting remote session section'),
211
- } },
212
- React.createElement(ESSRemoteSession, { screenSessionRequested: screenSessionRequested, remoteSessionTermsAcked: acceptedRemoteSessionTerms, caseNumber: caseNumber, caseSeverity: severity, caseStatus: status, ref: createEscalationRef, readOnly: canReadCase }))),
213
- isExternal && !isESSCustomer && (React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading remote session agreement section') } },
204
+ isExternal && (React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading remote session agreement section') } },
214
205
  React.createElement(RemoteSessionAgreement, { caseNumber: caseNumber, caseSeverity: severity, caseStatus: status, ref: createEscalationRef, acceptedRemoteSessionTerms: acceptedRemoteSessionTerms, readOnly: canReadCase })))))));
215
206
  }
@@ -1,3 +1,2 @@
1
1
  export * from './RemoteSessionAgreement';
2
- export * from './ESSRemoteSession';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
@@ -1,2 +1 @@
1
1
  export * from './RemoteSessionAgreement';
2
- export * from './ESSRemoteSession';
@@ -1,2 +1,6 @@
1
- export declare function FileDiag(): JSX.Element;
1
+ interface IProps {
2
+ className?: string;
3
+ }
4
+ export declare function FileDiag(props: IProps): JSX.Element;
5
+ export {};
2
6
  //# sourceMappingURL=FileDiag.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileDiag.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/FileDiag.tsx"],"names":[],"mappings":"AAYA,wBAAgB,QAAQ,gBAgCvB"}
1
+ {"version":3,"file":"FileDiag.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/FileDiag.tsx"],"names":[],"mappings":"AAYA,UAAU,MAAM;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,eAiCrC"}
@@ -8,7 +8,7 @@ import { RulesStateContext } from '../../context/RulesContext';
8
8
  import { SessionRestoreStateContext } from '../../context/SessionRestoreContext';
9
9
  import FileEARule, { getValidAttachmentRules } from '../ImproveCase/FileEARule';
10
10
  import { WidgetFileUploader } from '../shared/fileUpload/WidgetFileUploader';
11
- export function FileDiag() {
11
+ export function FileDiag(props) {
12
12
  const { sessionRestore: { activeSessionId }, } = useContext(SessionRestoreStateContext);
13
13
  const canAddAttachments = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.ATTACHMENTS);
14
14
  const { globalMetadataState: { loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
@@ -19,5 +19,5 @@ export function FileDiag() {
19
19
  const isIdea = caseType === PreviousCaseTypes.FEATURE_ENHANCEMENT;
20
20
  if (!canAddAttachments)
21
21
  return null;
22
- return (React.createElement(WidgetFileUploader, { idToUploadTo: activeSessionId, isPrivate: false, needsAnalyzing: isIdea ? false : true, isSessionId: true, isSecureSupport: loggedInUsersAccount.data.secureSupport, autoUploadOnSelect: loggedInUsersAccount.data.secureSupport ? false : true, helperText: getValidAttachmentRules(rulesState.EARules.rules).length > 0 ? React.createElement(FileEARule, null) : null, isIdea: isIdea }));
22
+ return (React.createElement(WidgetFileUploader, { className: props.className, idToUploadTo: activeSessionId, isPrivate: false, needsAnalyzing: isIdea ? false : true, isSessionId: true, isSecureSupport: loggedInUsersAccount.data.secureSupport, autoUploadOnSelect: loggedInUsersAccount.data.secureSupport ? false : true, helperText: getValidAttachmentRules(rulesState.EARules.rules).length > 0 ? React.createElement(FileEARule, null) : null, isIdea: isIdea }));
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CaseManagement.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/CaseManagement.tsx"],"names":[],"mappings":"AAqBA,MAAM,WAAW,MAAM;CAAG;AAC1B,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAAE,MAAM,eA6CnD"}
1
+ {"version":3,"file":"CaseManagement.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/CaseManagement.tsx"],"names":[],"mappings":"AAiBA,MAAM,WAAW,MAAM;CAAG;AAC1B,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAAE,MAAM,eA4BnD"}
@@ -1,9 +1,6 @@
1
1
  import { Flex, FlexItem } from '@patternfly/react-core';
2
- import { useGlobalStateContext } from '@rh-support/react-context';
3
- import { isSpecialSupportOfferingEnabled } from '@rh-support/utils';
4
- import { isEqual } from 'lodash';
5
2
  import React from 'react';
6
- import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
3
+ import { useCaseDispatch } from '../../context/CaseContext';
7
4
  import { setCaseDetails } from '../../reducers/CaseReducer';
8
5
  import CaseGroup from '../CaseInformation/CaseGroup';
9
6
  import { ContactPhoneNumber } from '../CaseInformation/ContactPhoneNumber';
@@ -13,23 +10,14 @@ import Severity from '../CaseInformation/Severity';
13
10
  import SupportLevel from '../CaseInformation/SupportLevel';
14
11
  import CaseLanguageSelector from './CaseLanguageSelector';
15
12
  import { Cep } from './Cep';
16
- import ESSRemoteSessionCheckBox from './ESSRemoteSessionCheckBox';
17
13
  import OpenReferenceNumber from './OpenReferenceNumber';
18
14
  import { RHAssociatesSelector } from './RHAssociatesSelector';
19
15
  import CaseContactSelector from './SendNotifications/CaseContactSelector';
20
16
  export default function CaseManagement(props) {
21
- var _a;
22
17
  const caseDispatch = useCaseDispatch();
23
18
  const onSeverityChange = (payload) => {
24
19
  setCaseDetails(caseDispatch, payload);
25
20
  };
26
- const { globalMetadataState: { allProducts }, } = useGlobalStateContext();
27
- const { product } = useCaseSelector((state) => ({
28
- product: state.caseDetails.product,
29
- }), isEqual);
30
- const selectedProduct = product;
31
- // To check if the user is ESS Customer and Product has ESS Support
32
- const isESSCustomer = isSpecialSupportOfferingEnabled((_a = allProducts.data) === null || _a === void 0 ? void 0 : _a.productsResult, selectedProduct);
33
21
  return (React.createElement("form", null,
34
22
  React.createElement(SupportLevel, null),
35
23
  React.createElement(Flex, { direction: { default: 'column', '2xl': 'row' } },
@@ -44,6 +32,5 @@ export default function CaseManagement(props) {
44
32
  React.createElement(CaseContactSelector, null),
45
33
  React.createElement(RHAssociatesSelector, null),
46
34
  React.createElement(OpenReferenceNumber, { inlineEditable: false, hideSaveCancel: true }),
47
- React.createElement(Cep, null),
48
- isESSCustomer && React.createElement(ESSRemoteSessionCheckBox, null)));
35
+ React.createElement(Cep, null)));
49
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CriticalSolutionsToast.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/CriticalSolutionsToast.tsx"],"names":[],"mappings":"AAGA,OAAc,EAAE,EAAE,EAAmC,MAAM,OAAO,CAAC;AAMnE,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,QAAA,MAAM,sBAAsB,EAAE,EAAE,CAAC,MAAM,CA0DtC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"CriticalSolutionsToast.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/CriticalSolutionsToast.tsx"],"names":[],"mappings":"AAGA,OAAc,EAAE,EAAE,EAAmC,MAAM,OAAO,CAAC;AAOnE,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,QAAA,MAAM,sBAAsB,EAAE,EAAE,CAAC,MAAM,CA4DtC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -3,14 +3,16 @@ import { PreviousCaseTypes } from '@rh-support/utils';
3
3
  import isEqual from 'lodash/isEqual';
4
4
  import React, { useContext, useEffect, useState } from 'react';
5
5
  import { Trans, useTranslation } from 'react-i18next';
6
- import { useCaseSelector } from '../../context/CaseContext';
6
+ import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
7
7
  import { RulesDispatchContext, RulesStateContext } from '../../context/RulesContext';
8
+ import { setCaseState } from '../../reducers/CaseReducer';
8
9
  import { RulesReducerConstants } from '../../reducers/RulesReducer';
9
10
  const CriticalSolutionsToast = (props) => {
10
11
  const { t } = useTranslation();
11
12
  const [showNotification, setShowNotification] = useState(false);
12
13
  const { rulesState } = useContext(RulesStateContext);
13
14
  const rulesDispatch = useContext(RulesDispatchContext);
15
+ const caseDispatch = useCaseDispatch();
14
16
  const { caseType } = useCaseSelector((state) => ({
15
17
  caseType: state.caseDetails.caseType,
16
18
  }), isEqual);
@@ -35,13 +37,14 @@ const CriticalSolutionsToast = (props) => {
35
37
  });
36
38
  };
37
39
  const viewCriticalSolution = () => {
40
+ setCaseState(caseDispatch, { isFileRecommendationsTriggered: true });
38
41
  onClose();
39
42
  setEAModalVisibility(true);
40
43
  props.userClosed();
41
44
  };
42
45
  if (!showNotification && !rulesState.triggerRuleNotification)
43
46
  return null;
44
- return (React.createElement(Alert, { isLiveRegion: true, variant: "success", title: t('File recommendations are ready to view'), "data-tracking-id": "toast-view-crit-sol", actionLinks: React.createElement(Button, { isInline: true, variant: "link", onClick: viewCriticalSolution },
47
+ return (React.createElement(Alert, { isLiveRegion: true, variant: "success", title: t('File recommendations are ready to view'), "data-tracking-id": "toast-view-critical-solutions", actionLinks: React.createElement(Button, { isInline: true, variant: "link", onClick: viewCriticalSolution },
45
48
  React.createElement(Trans, null, "Troubleshooting specific for your uploaded files.")), actionClose: React.createElement(AlertActionCloseButton, { variantLabel: "success alert", onClose: onClose }), timeout: caseType !== PreviousCaseTypes.FEATURE_ENHANCEMENT }));
46
49
  };
47
50
  export default CriticalSolutionsToast;
@@ -7,7 +7,7 @@ export function RecommendationFeedbackModal({ isModalOpen, handleModalToggle, mo
7
7
  React.createElement(Link, { "data-tracking-id": "resolved-feedback-cases", key: "view", className: "pf-c-button pf-m-primary", to: "/case/list" },
8
8
  React.createElement(Trans, null, "View your cases")),
9
9
  React.createElement(Button, { "data-tracking-id": "resolved-feedback-continue", key: "continue", variant: "link", onClick: handleModalToggle },
10
- React.createElement(Trans, null, "Continue")),
10
+ React.createElement(Trans, null, "Continue troubleshooting")),
11
11
  ] },
12
12
  React.createElement("h1", { id: "rec-feedback-modal" }, modalContent)));
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RulesModal.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/RulesModal.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,UAAU,MAAM;IACZ,cAAc,EAAE,wBAAwB,EAAE,CAAC;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,eA+K/C"}
1
+ {"version":3,"file":"RulesModal.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/RulesModal.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,UAAU,MAAM;IACZ,cAAc,EAAE,wBAAwB,EAAE,CAAC;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,eAyM/C"}
@@ -8,12 +8,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { pcm } from '@cee-eng/hydrajs';
11
- import { Accordion, Button, Modal } from '@patternfly/react-core';
11
+ import { Accordion, Button, Card, CardBody, CardExpandableContent, CardHeader, CardTitle, Modal, } from '@patternfly/react-core';
12
12
  import { useFetch } from '@rh-support/components';
13
13
  import { getResTypeFromUrl } from '@rh-support/utils';
14
14
  import React, { useContext, useEffect, useState } from 'react';
15
15
  import { Trans, useTranslation } from 'react-i18next';
16
+ import { useCaseDispatch } from '../../context/CaseContext';
16
17
  import { SessionRestoreDispatchContext, SessionRestoreStateContext } from '../../context/SessionRestoreContext';
18
+ import { setCaseState } from '../../reducers/CaseReducer';
17
19
  import { createOrUpdateSessionResources, getSessResFromRecs } from '../../reducers/SessionRestoreReducer';
18
20
  import { AttachmentStateContext } from '../shared/fileUpload/reducer/AttachmentReducerContext';
19
21
  import { EARuleInfoAccordion } from './EARules/EARuleInfoAccordion';
@@ -40,6 +42,9 @@ export function InsightResultModal(props) {
40
42
  const { request: resolveSessionRequest, isFetching } = useFetch(pcm.preCase.session.resolveSession);
41
43
  const { sessionRestore: { activeSessionId, sessionResourceTracking }, } = useContext(SessionRestoreStateContext);
42
44
  const [isModalVisible, setIsModalVisible] = useState(false);
45
+ const caseDispatch = useCaseDispatch();
46
+ const [isExpanded, setIsExpanded] = React.useState(true);
47
+ // To handle self solving of issues
43
48
  const handleSolvedIssue = () => __awaiter(this, void 0, void 0, function* () {
44
49
  var _a, _b, _c, _d;
45
50
  try {
@@ -59,6 +64,9 @@ export function InsightResultModal(props) {
59
64
  const onModalToggle = () => {
60
65
  setIsModalVisible((visible) => !visible);
61
66
  };
67
+ const onExpand = (event, id) => {
68
+ setIsExpanded(!isExpanded);
69
+ };
62
70
  useEffect(() => {
63
71
  props.isOpen &&
64
72
  createOrUpdateSessionResources(sessionRestoreDispatch, activeSessionId, sessionResourceTracking, SessionResourceSource.INSIGHTS, getSessResFromRecs(props.insightResults, SessionResourceVisibility.PRESENTED));
@@ -86,14 +94,22 @@ export function InsightResultModal(props) {
86
94
  setCanShowNewTag(!(total === trueValues));
87
95
  }, [selectedLocalFiles, props.EARule]);
88
96
  if (props.isRenderedMain) {
89
- return (React.createElement("div", { className: "card card-white card-support top-recommendations" },
90
- React.createElement("h3", { className: "card-heading popular-solutions" },
91
- React.createElement(Trans, null, "File recommendations")),
92
- React.createElement("div", { className: "card-body file-recommendations" },
93
- React.createElement(Accordion, { headingLevel: "h5", asDefinitionList: false, isBordered: true },
94
- props.insightResults.map((doc) => (React.createElement(InsightsRuleInfo, { duplicateKeys: duplicateKeys, showNewTag: canShowNewTag, key: doc.id + doc.attachmentId, doc: doc }))),
95
- props.EARule.length > 0 &&
96
- props.EARule.map((rule, index) => (React.createElement(EARuleInfoAccordion, { showNewTag: canShowNewTag, key: `${index}_eaRule`, rule: rule })))))));
97
+ setCaseState(caseDispatch, { isFileRecommendationsTriggered: true });
98
+ return (React.createElement(Card, { id: "expandable-card", className: "card-support top-recommendations", isExpanded: isExpanded, isCompact: true },
99
+ React.createElement(CardHeader, { onExpand: onExpand, toggleButtonProps: {
100
+ id: 'toggle-button1',
101
+ 'aria-label': t('File recommendations'),
102
+ 'aria-labelledby': 'expandable-card-title toggle-button1',
103
+ 'aria-expanded': isExpanded,
104
+ }, className: "popular-solutions" },
105
+ React.createElement(CardTitle, { id: "expandable-card-title", className: "card-title" },
106
+ React.createElement(Trans, null, "File recommendations"))),
107
+ React.createElement(CardExpandableContent, null,
108
+ React.createElement(CardBody, { className: "file-recommendation" },
109
+ React.createElement(Accordion, { headingLevel: "h5", asDefinitionList: false, isBordered: true },
110
+ props.insightResults.map((doc) => (React.createElement(InsightsRuleInfo, { duplicateKeys: duplicateKeys, showNewTag: canShowNewTag, key: doc.id + doc.attachmentId, doc: doc }))),
111
+ props.EARule.length > 0 &&
112
+ props.EARule.map((rule, index) => (React.createElement(EARuleInfoAccordion, { showNewTag: canShowNewTag, key: `${index}_eaRule`, rule: rule }))))))));
97
113
  }
98
114
  return (React.createElement(React.Fragment, null,
99
115
  React.createElement(RecommendationFeedbackModal, { isModalOpen: isModalVisible, handleModalToggle: onModalToggle, modalContent: t(`Great, we're glad that resolved your issue`) }),
@@ -1 +1 @@
1
- {"version":3,"file":"Review.d.ts","sourceRoot":"","sources":["../../../../src/components/Review/Review.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAuBlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AACD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,MAAM,eAuE3C"}
1
+ {"version":3,"file":"Review.d.ts","sourceRoot":"","sources":["../../../../src/components/Review/Review.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAsBlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AACD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,MAAM,eA4D3C"}
@@ -1,7 +1,5 @@
1
1
  import { Flex, FlexItem } from '@patternfly/react-core';
2
- import { useGlobalStateContext } from '@rh-support/react-context';
3
2
  import { AbilityContext, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
4
- import { isSpecialSupportOfferingEnabled } from '@rh-support/utils';
5
3
  import isEmpty from 'lodash/isEmpty';
6
4
  import isEqual from 'lodash/isEqual';
7
5
  import React, { useContext } from 'react';
@@ -19,7 +17,6 @@ import Severity from '../CaseInformation/Severity';
19
17
  import SupportLevel from '../CaseInformation/SupportLevel';
20
18
  import CaseLanguageSelector from '../CaseManagement/CaseLanguageSelector';
21
19
  import { Cep } from '../CaseManagement/Cep';
22
- import ESSRemoteSessionCheck from '../CaseManagement/ESSRemoteSessionCheckBox';
23
20
  import OpenReferenceNumber from '../CaseManagement/OpenReferenceNumber';
24
21
  import { OpenShiftClusterId } from '../CaseManagement/OpenShiftClusterId';
25
22
  import { RHAssociatesSelector } from '../CaseManagement/RHAssociatesSelector';
@@ -29,21 +26,15 @@ import KtQuestions from '../ImproveCase/KtQuestions';
29
26
  import { AllProductsSelector } from '../ProductSelector/AllProductsSelector';
30
27
  import { EARuleWidget } from '../Recommendations/EARules/EARuleWidget';
31
28
  export default function Review(props) {
32
- var _a;
33
29
  const caseDispatch = useCaseDispatch();
34
- const { contactInfo24x7, product } = useCaseSelector((state) => ({
30
+ const { contactInfo24x7 } = useCaseSelector((state) => ({
35
31
  contactInfo24x7: state.caseDetails.contactInfo24x7,
36
- product: state.caseDetails.product,
37
32
  }), isEqual);
38
33
  const ability = useContext(AbilityContext);
39
34
  const canSeeEmailNotifications = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_SEND_NOTIFICATIONS);
40
- const selectedProduct = product;
41
- const { globalMetadataState: { allProducts }, } = useGlobalStateContext();
42
35
  const onSeverityChange = (payload) => {
43
36
  setCaseDetails(caseDispatch, payload);
44
37
  };
45
- // To check if the user is ESS Customer and Product has ESS Support
46
- const isESSCustomer = isSpecialSupportOfferingEnabled((_a = allProducts.data) === null || _a === void 0 ? void 0 : _a.productsResult, selectedProduct);
47
38
  return (React.createElement(React.Fragment, null,
48
39
  React.createElement(EARuleWidget, null),
49
40
  React.createElement("form", { className: "review-form card card-light push-bottom" },
@@ -68,6 +59,5 @@ export default function Review(props) {
68
59
  canSeeEmailNotifications && React.createElement(CaseContactSelector, null),
69
60
  React.createElement(RHAssociatesSelector, null),
70
61
  React.createElement(OpenReferenceNumber, { inlineEditable: false, hideSaveCancel: true }),
71
- React.createElement(Cep, null),
72
- isESSCustomer && React.createElement(ESSRemoteSessionCheck, null))));
62
+ React.createElement(Cep, null))));
73
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SubmitCase.d.ts","sourceRoot":"","sources":["../../../../src/components/SubmitCase/SubmitCase.tsx"],"names":[],"mappings":"AAkCA,MAAM,CAAC,OAAO,UAAU,UAAU,gBAiSjC"}
1
+ {"version":3,"file":"SubmitCase.d.ts","sourceRoot":"","sources":["../../../../src/components/SubmitCase/SubmitCase.tsx"],"names":[],"mappings":"AA4BA,MAAM,CAAC,OAAO,UAAU,UAAU,gBA2RjC"}
@@ -3,7 +3,7 @@ import { ActionList, ActionListItem, Button, Text, TextVariants } from '@pattern
3
3
  import CheckCircleIcon from '@patternfly/react-icons/dist/js/icons/check-circle-icon';
4
4
  import { AlertMessage, AlertType, useFetch } from '@rh-support/components';
5
5
  import { GlobalMetadataStateContext } from '@rh-support/react-context';
6
- import { getConfigField, getRedhatDotComHost, isSpecialSupportOfferingEnabled, PCM_CONFIG_FIELD_TYPE, PreviousCaseTypes, } from '@rh-support/utils';
6
+ import { getConfigField, getRedhatDotComHost, PCM_CONFIG_FIELD_TYPE, PreviousCaseTypes } from '@rh-support/utils';
7
7
  import find from 'lodash/find';
8
8
  import isEmpty from 'lodash/isEmpty';
9
9
  import isEqual from 'lodash/isEqual';
@@ -25,8 +25,7 @@ import { isUploadedAndAnalyzed, isUploadingAttachment } from '../shared/fileUplo
25
25
  import { AttachmentStateContext } from '../shared/fileUpload/reducer/AttachmentReducerContext';
26
26
  import Suggestions from '../Suggestions/Suggestions';
27
27
  export default function SubmitCase() {
28
- var _a;
29
- const { entitlementSla, severity, caseNumber, caseType, version, versionsDetails, addNotifiedUserError, isCreatingCase, caseCreationError, caseCreationErrorMessage, selectedAccountDetails, product, } = useCaseSelector((state) => ({
28
+ const { entitlementSla, severity, caseNumber, caseType, version, versionsDetails, addNotifiedUserError, isCreatingCase, caseCreationError, caseCreationErrorMessage, selectedAccountDetails, } = useCaseSelector((state) => ({
30
29
  entitlementSla: state.caseDetails.entitlementSla,
31
30
  severity: state.caseDetails.severity,
32
31
  caseNumber: state.caseDetails.caseNumber,
@@ -38,16 +37,14 @@ export default function SubmitCase() {
38
37
  caseCreationError: state.caseCreationError,
39
38
  caseCreationErrorMessage: state.caseCreationErrorMessage,
40
39
  selectedAccountDetails: state.selectedAccountDetails,
41
- product: state.caseDetails.product,
42
40
  }), isEqual);
43
- const selectedProduct = product;
44
41
  const isIdea = caseType === PreviousCaseTypes.FEATURE_ENHANCEMENT;
45
42
  const { topContentState: { topContent }, } = useContext(TCStateContext);
46
43
  const { rulesState } = useContext(RulesStateContext);
47
44
  const { clusterRecommendationsState: { clusterRecommendations }, } = useContext(ClusterRecommendationsContext);
48
45
  const { attachmentState } = useContext(AttachmentStateContext);
49
46
  const [isRemoteRiderBannerVisible, setIsRemoteRiderBannerVisible] = useState(true);
50
- const { globalMetadataState: { loggedInUser, loggedInUsersAccount, pcmConfig, allProducts }, } = useContext(GlobalMetadataStateContext);
47
+ const { globalMetadataState: { loggedInUser, loggedInUsersAccount, pcmConfig }, } = useContext(GlobalMetadataStateContext);
51
48
  const getBusinessHours = useFetch(publicApi.businessHours.getBusinessHours);
52
49
  const { t } = useTranslation();
53
50
  const showRemoteRiderTermsInline = getConfigField(pcmConfig.data, 'showInlineRemoteRiderTerms', PCM_CONFIG_FIELD_TYPE.FEATURE_FLAG);
@@ -85,14 +82,12 @@ export default function SubmitCase() {
85
82
  ? false
86
83
  : attachmentState.caseFiles.selectedLocalFiles.every((localFile) => !isUploadedAndAnalyzed(localFile));
87
84
  const isNotAnIdea = caseType !== PreviousCaseTypes.FEATURE_ENHANCEMENT;
88
- // To check if the user is ESS Customer and Product has ESS Support
89
- const isESSCustomer = isSpecialSupportOfferingEnabled((_a = allProducts.data) === null || _a === void 0 ? void 0 : _a.productsResult, selectedProduct);
90
85
  return (React.createElement("article", { className: "gird-main" },
91
86
  React.createElement(AlertMessage, { className: "push-top", title: t('Failed to add user.'), variant: AlertType.DANGER, show: addNotifiedUserError }),
92
87
  React.createElement(AlertMessage, { className: "push-top", variant: AlertType.DANGER, show: caseCreationError, title: t("Sorry, we're experiencing an error"), isInline: true },
93
88
  React.createElement(React.Fragment, null, caseCreationErrorMessage)),
94
89
  !isCreatingCase && !caseCreationError && (React.createElement(React.Fragment, null,
95
- showRemoteRiderBanner && !loggedInUser.data.isInternal && !isESSCustomer && (React.createElement(RemoteRiderBanner, { onConfirm: onRemoteRiderConfirm, onClose: onRemoteRiderClose, caseNumber: caseNumber, isSecureSupport: loggedInUsersAccount.data.secureSupport })),
90
+ showRemoteRiderBanner && !loggedInUser.data.isInternal && (React.createElement(RemoteRiderBanner, { onConfirm: onRemoteRiderConfirm, onClose: onRemoteRiderClose, caseNumber: caseNumber, isSecureSupport: loggedInUsersAccount.data.secureSupport })),
96
91
  React.createElement("div", { className: "submit-case-header-container" },
97
92
  React.createElement("p", { className: "kicker kicker-sm pf-u-mb-sm" }, !isEmpty(RouteUtils.seBasePath) &&
98
93
  !isUploadingAttachment(attachmentState.caseFiles.selectedLocalFiles) ? (React.createElement(React.Fragment, null,
@@ -1 +1 @@
1
- {"version":3,"file":"TroubleshootSection.d.ts","sourceRoot":"","sources":["../../../../src/components/TroubleshootSection/TroubleshootSection.tsx"],"names":[],"mappings":"AAiBA,UAAU,MAAM;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AASD,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,eAyFzC;kBAzFQ,mBAAmB;;;AA4F5B,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"TroubleshootSection.d.ts","sourceRoot":"","sources":["../../../../src/components/TroubleshootSection/TroubleshootSection.tsx"],"names":[],"mappings":"AAkBA,UAAU,MAAM;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AASD,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,eA0GzC;kBA1GQ,mBAAmB;;;AA6G5B,eAAe,mBAAmB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { Card, CardBody, CardHeader, CardTitle } from '@patternfly/react-core';
1
2
  import { ErrorBoundary, LoadingDots } from '@rh-support/components';
2
3
  import { GlobalMetadataStateContext } from '@rh-support/react-context';
3
4
  import { ability, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
@@ -31,7 +32,6 @@ function TroubleshootSection(props) {
31
32
  isCreatingCase: state.isCreatingCase,
32
33
  caseType: state.caseDetails.caseType,
33
34
  }), isEqual);
34
- const isIdea = caseType === PreviousCaseTypes.FEATURE_ENHANCEMENT;
35
35
  const canShowTopProducts = isEmpty(product);
36
36
  const canShowTopContent = !canShowTopProducts && ((_a = topContent === null || topContent === void 0 ? void 0 : topContent.data) === null || _a === void 0 ? void 0 : _a.length) > 0;
37
37
  const canAddAttachments = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.ATTACHMENTS);
@@ -47,21 +47,26 @@ function TroubleshootSection(props) {
47
47
  ' ',
48
48
  React.createElement("p", { className: "pf-u-font-weight-bold selected-product-suggestion" }, product))),
49
49
  React.createElement(LoadingDots, { show: topContent.isFetching }),
50
- topContent.data.length === 0 && (React.createElement("div", { className: "card card-white card-support" },
51
- React.createElement("h3", { className: "card-heading popular-solutions" },
52
- React.createElement(Trans, { i18nKey: 'i18nKeyPopularSolutions' }, "Popular solutions and docs")),
53
- React.createElement("div", { className: "card-body" },
50
+ topContent.data.length === 0 && (React.createElement(Card, { id: "card", className: "card-support top-recommendations pf-u-mb-md", isCompact: true },
51
+ React.createElement(CardHeader, { "aria-label": t('Popular solutions and docs'), className: "popular-solutions" },
52
+ React.createElement(CardTitle, { id: "card-title", className: "card-title" },
53
+ React.createElement(Trans, { i18nKey: 'i18nKeyPopularSolutions' }, "Popular solutions and docs"))),
54
+ React.createElement(CardBody, { "aria-label": t('No recommendations for this product'), className: "file-recs-no-recommendation pf-u-mt-md" },
54
55
  React.createElement(Trans, null, "No recommendations for this product")))),
55
56
  React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading suggestions') } }, canShowTopContent && !isEmpty(version) && React.createElement(Suggestions, null)),
56
57
  !isCreatingCase && React.createElement(ClusterRecommendations, { className: "push-top" }))),
57
58
  React.createElement("section", { className: "pf-u-mt-lg" },
58
59
  isNotAnIdea && React.createElement(InsightsResults, { isDisplayOnMain: true }),
59
- React.createElement("div", { className: "push-top" }, canAddAttachments ? (React.createElement(FileDiag, null)) : (React.createElement("div", { className: "card card-white card-support file-diag" },
60
- React.createElement("h3", { className: "card-heading" }, isIdea || loggedInUsersAccount.data.secureSupport ? (React.createElement(Trans, null, "File uploader")) : (React.createElement(Trans, null, "Upload file to analyze"))),
61
- React.createElement("div", { className: "card-body" },
62
- React.createElement("div", { className: "display-dashed pf-u-font-weight-bold pf-u-text-align-center" },
63
- React.createElement(Trans, null, "You do not have access to upload files"),
64
- "."))))))));
60
+ React.createElement("div", { className: "push-top" }, canAddAttachments ? (React.createElement(FileDiag, null)) : (React.createElement(React.Fragment, null,
61
+ React.createElement(Card, { id: "card", className: "card-support card-white file-diag", isCompact: true },
62
+ React.createElement(CardHeader, { "aria-label": !isNotAnIdea || loggedInUsersAccount.data.secureSupport
63
+ ? t('File uploader')
64
+ : t('Upload file to analyze'), className: "card-heading" },
65
+ React.createElement(CardTitle, { id: "card-title", className: "card-title" }, !isNotAnIdea || loggedInUsersAccount.data.secureSupport ? (React.createElement(Trans, null, "File uploader")) : (React.createElement(Trans, null, "Upload file to analyze")))),
66
+ React.createElement(CardBody, { "aria-label": t('No recommendations for this product'), className: "no-access-file-diag" },
67
+ React.createElement("div", { className: "display-dashed pf-u-font-weight-bold pf-u-text-align-center pf-u-mt-md" },
68
+ React.createElement(Trans, null, "You do not have access to upload files"),
69
+ ".")))))))));
65
70
  }
66
71
  TroubleshootSection.defaultProps = defaultProps;
67
72
  export default TroubleshootSection;
@@ -36,7 +36,7 @@ function WizardAside(props) {
36
36
  canShowFileRecommendationSectionsWidget && React.createElement(InsightsResults, { isDisplayOnMain: true }),
37
37
  React.createElement(ClusterRecommendations, { showClusterRecommendationsList: canShowClusterIdReportWidget }),
38
38
  canUseSessionManagement && !isCreatingCase && React.createElement(SessionRestore, { routeProps: props.routeProps }),
39
- canShowFileUploadWidget() && React.createElement(FileDiag, null))));
39
+ canShowFileUploadWidget() && React.createElement(FileDiag, { className: "pf-u-mt-md" }))));
40
40
  }
41
41
  WizardAside.defaultProps = defaultProps;
42
42
  export default WizardAside;
@@ -1 +1 @@
1
- {"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,EAAoB,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAI3G,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mBAAmB,EAAE,CAAC,2BAA2B,EAAE,OAAO,EAAE,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/G,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAGD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,eAoGtC;kBApGQ,gBAAgB;;;AAsGzB,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAMnD,OAAO,EAAoB,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAK3G,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mBAAmB,EAAE,CAAC,2BAA2B,EAAE,OAAO,EAAE,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/G,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAGD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,eA4JtC;kBA5JQ,gBAAgB;;;AA8JzB,eAAe,gBAAgB,CAAC"}
@@ -1,12 +1,28 @@
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
+ import { pcm } from '@cee-eng/hydrajs';
11
+ import { Button, ButtonVariant } from '@patternfly/react-core';
12
+ import { useFetch } from '@rh-support/components';
1
13
  import { GlobalMetadataStateContext, useCanCreateCase } from '@rh-support/react-context';
14
+ import { getResTypeFromUrl } from '@rh-support/utils';
2
15
  import find from 'lodash/find';
3
16
  import isEqual from 'lodash/isEqual';
4
- import React, { useContext } from 'react';
17
+ import React, { useContext, useState } from 'react';
5
18
  import { useTranslation } from 'react-i18next';
6
- import { useCaseSelector } from '../../context/CaseContext';
19
+ import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
7
20
  import { RouteContext, RouteDispatchContext } from '../../context/RouteContext';
21
+ import { SessionRestoreStateContext } from '../../context/SessionRestoreContext';
22
+ import { setCaseState } from '../../reducers/CaseReducer';
8
23
  import { AppRouteSections } from '../../reducers/RouteConstNTypes';
9
24
  import { updateisNextBtnClickedToShowValidationError } from '../../reducers/RouteReducer';
25
+ import { RecommendationFeedbackModal } from '../Recommendations/RecommendationFeedbackModal';
10
26
  import { useIsSectionValid } from '../shared/useIsSectionValid';
11
27
  const defaultProps = {};
12
28
  function WizardNavigation(props) {
@@ -22,6 +38,14 @@ function WizardNavigation(props) {
22
38
  const isEntitledProduct = (_b = find((_a = allProducts === null || allProducts === void 0 ? void 0 : allProducts.data) === null || _a === void 0 ? void 0 : _a.productsResult, (p) => p.product === caseState.caseDetails.product)) === null || _b === void 0 ? void 0 : _b.isEntitledProduct;
23
39
  const dispatchToRouteReducer = useContext(RouteDispatchContext);
24
40
  const { activeSectionError, isSectionValidFn } = useIsSectionValid(activeSection);
41
+ const [isRecsModalVisible, setIsRecsModalVisible] = useState(false);
42
+ const { request: resolveSessionRequest } = useFetch(pcm.preCase.session.resolveSession);
43
+ const { sessionRestore: { activeSessionId, sessionResourceTracking }, } = useContext(SessionRestoreStateContext);
44
+ const { SessionResourceSource } = pcm.preCase.session;
45
+ const { isFileRecommendationsTriggered } = useCaseSelector((state) => ({
46
+ isFileRecommendationsTriggered: state.isFileRecommendationsTriggered,
47
+ }), isEqual);
48
+ const caseDispatch = useCaseDispatch();
25
49
  const onNext = () => {
26
50
  var _a, _b;
27
51
  updateisNextBtnClickedToShowValidationError(dispatchToRouteReducer, true);
@@ -59,13 +83,35 @@ function WizardNavigation(props) {
59
83
  props.onShowRestUpdate(false);
60
84
  props.onBack();
61
85
  };
86
+ const onRecsFeedbackModalToggle = () => {
87
+ setIsRecsModalVisible((visible) => !visible);
88
+ };
89
+ // To handle self solving through file recommendations
90
+ const handleFileRecsSelfSolved = () => __awaiter(this, void 0, void 0, function* () {
91
+ var _c, _d, _e, _f;
92
+ try {
93
+ yield resolveSessionRequest(activeSessionId, {
94
+ sessionId: activeSessionId,
95
+ sessionResourceOriginId: (_d = (_c = sessionResourceTracking[SessionResourceSource.INSIGHTS]) === null || _c === void 0 ? void 0 : _c.resourceOriginId) !== null && _d !== void 0 ? _d : '',
96
+ type: getResTypeFromUrl(''),
97
+ source: SessionResourceSource.INSIGHTS,
98
+ resourceEntityId: (_f = (_e = sessionResourceTracking[SessionResourceSource.INSIGHTS]) === null || _e === void 0 ? void 0 : _e.resourceEntityId) !== null && _f !== void 0 ? _f : '',
99
+ url: '',
100
+ });
101
+ setCaseState(caseDispatch, { isFileRecommendationsTriggered: false });
102
+ setIsRecsModalVisible(true);
103
+ }
104
+ catch (e) { }
105
+ });
62
106
  // To handle entitled products
63
107
  const isEntitledProductLocal = isSearchIntent ? true : isEntitledProduct;
64
108
  return (React.createElement(React.Fragment, null,
65
- props.activeStep.order !== 0 && (React.createElement("button", { onClick: () => onBack(), className: "btn btn-app btn-open-white", "data-tracking-id": `prev-of-${activeSection}` }, t('Go back'))),
109
+ 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}` }, t('Go back'))),
66
110
  React.createElement("button", { disabled: (!isEntitledProductLocal && props.activeStep.nextButtonLabel === 'Get support') ||
67
111
  (!isSectionValidFn(props.activeStep.id) && isNextBtnClickedToShowValidationError) ||
68
- noValidEntitlement, onClick: onNext, className: "btn btn-app btn-primary", "data-tracking-id": `next-of-${activeSection}` }, t(props.activeStep.nextButtonLabel)),
112
+ noValidEntitlement, onClick: onNext, className: "btn btn-app btn-primary main-nav-button", "data-tracking-id": `next-of-${activeSection}` }, t(props.activeStep.nextButtonLabel)),
113
+ activeSection === AppRouteSections.TROUBLESHOOT && 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'))),
114
+ React.createElement(RecommendationFeedbackModal, { isModalOpen: isRecsModalVisible, handleModalToggle: onRecsFeedbackModalToggle, modalContent: t(`Great, we're glad that resolved your issue`) }),
69
115
  activeSectionError ? (React.createElement("small", { className: "pf-u-align-self-center pf-u-ml-md text-red" }, t(activeSectionError))) : null));
70
116
  }
71
117
  WizardNavigation.defaultProps = defaultProps;
@@ -199,6 +199,7 @@ export interface ICaseState {
199
199
  caseCreation500ErrorStatus: boolean;
200
200
  openshiftDisplayName?: string;
201
201
  isCaseOwnerUpdating: boolean;
202
+ isFileRecommendationsTriggered?: boolean;
202
203
  }
203
204
  export interface ICreateCasePayloadType extends ICaseState {
204
205
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CaseConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseConstNTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CaseConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseConstNTypes.ts"],"names":[],"mappings":"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"}