@rh-support/troubleshoot 2.2.149 → 2.2.151
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/Tabs/CaseDetails/CaseInformation.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInformation.js +3 -7
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.js +1 -6
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/Summary.js +3 -3
- package/lib/esm/components/CaseInformation/CaseInformation.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/CaseInformation.js +0 -2
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.js +0 -2
- package/lib/esm/components/CaseInformation/Description.d.ts +1 -0
- package/lib/esm/components/CaseInformation/Description.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/Description.js +6 -13
- package/lib/esm/components/CaseInformation/OpenCaseIssue.d.ts +1 -0
- package/lib/esm/components/CaseInformation/OpenCaseIssue.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/OpenCaseIssue.js +36 -19
- package/lib/esm/components/CaseManagement/OpenShiftClusterId.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/OpenShiftClusterId.js +3 -7
- package/lib/esm/components/ImproveCase/KtQuestions.d.ts.map +1 -1
- package/lib/esm/components/ImproveCase/KtQuestions.js +65 -14
- package/lib/esm/components/OpenCase/OpenCase.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/OpenCase.js +0 -2
- package/lib/esm/components/ProductSelector/AllProductsSelector.js +1 -1
- package/lib/esm/components/ProductSelector/ProductSelector.d.ts +1 -0
- package/lib/esm/components/ProductSelector/ProductSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/ProductSelector.js +1 -1
- package/lib/esm/components/Recommendations/EARules/EARuleWidget.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARuleWidget.js +7 -5
- package/lib/esm/components/Recommendations/RecommendationInfoBox.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/RecommendationInfoBox.js +10 -8
- package/lib/esm/components/Recommendations/Recommendations.d.ts +1 -0
- package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/Recommendations.js +15 -6
- package/lib/esm/components/Review/Review.d.ts.map +1 -1
- package/lib/esm/components/Review/Review.js +0 -2
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts.map +1 -1
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +8 -4
- package/lib/esm/components/shared/fileUpload/WidgetFileUploader.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/WidgetFileUploader.js +2 -3
- package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
- package/lib/esm/components/shared/useIsSectionValid.js +6 -3
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +2 -38
- package/lib/esm/components/wizardLayout/NewFeatureModal.d.ts +4 -0
- package/lib/esm/components/wizardLayout/NewFeatureModal.d.ts.map +1 -0
- package/lib/esm/components/wizardLayout/NewFeatureModal.js +38 -0
- package/lib/esm/components/wizardLayout/RedHatCustomerPortalIcon.d.ts.map +1 -0
- package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardMain.js +8 -2
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts +1 -0
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardNavigation.js +2 -1
- package/lib/esm/hooks/useWizard.d.ts +6 -1
- package/lib/esm/hooks/useWizard.d.ts.map +1 -1
- package/lib/esm/hooks/useWizard.js +10 -6
- package/lib/esm/reducers/CaseConstNTypes.d.ts +11 -5
- package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/CaseConstNTypes.js +11 -5
- package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
- package/lib/esm/reducers/CaseHelpers.js +7 -7
- package/lib/esm/reducers/RecommendationsReducer.d.ts +3 -1
- package/lib/esm/reducers/RecommendationsReducer.d.ts.map +1 -1
- package/lib/esm/reducers/RecommendationsReducer.js +2 -0
- package/lib/esm/scss/_main.scss +6 -0
- package/lib/esm/scss/_pf-overrides.scss +21 -0
- package/package.json +4 -4
- package/lib/esm/components/OpenCase/MandatoryPhoneBanner.d.ts +0 -4
- package/lib/esm/components/OpenCase/MandatoryPhoneBanner.d.ts.map +0 -1
- package/lib/esm/components/OpenCase/MandatoryPhoneBanner.js +0 -29
- package/lib/esm/components/OpenCase/RedHatCustomerPortalIcon.d.ts.map +0 -1
- /package/lib/esm/components/{OpenCase → wizardLayout}/RedHatCustomerPortalIcon.d.ts +0 -0
- /package/lib/esm/components/{OpenCase → wizardLayout}/RedHatCustomerPortalIcon.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationInfoBox.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/RecommendationInfoBox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RecommendationInfoBox.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/RecommendationInfoBox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,eAAO,MAAM,qBAAqB,yBAiDjC,CAAC"}
|
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
import { Accordion, AccordionContent, AccordionItem, AccordionToggle, List, ListItem } from '@patternfly/react-core';
|
|
2
2
|
import React, { useState } from 'react';
|
|
3
3
|
import { Trans, useTranslation } from 'react-i18next';
|
|
4
|
-
import { SUMMARY_LENGTH_LIMIT } from '../../reducers/CaseConstNTypes';
|
|
5
4
|
export const RecommendationInfoBox = () => {
|
|
6
5
|
const { t } = useTranslation();
|
|
7
6
|
const [isExpanded, setIsExpanded] = useState(true);
|
|
8
7
|
return (React.createElement(React.Fragment, null,
|
|
9
8
|
React.createElement(Accordion, { isBordered: true, asDefinitionList: false, className: "pf-v5-u-mb-md" },
|
|
10
9
|
React.createElement(AccordionItem, null,
|
|
11
|
-
React.createElement(AccordionToggle, { id: "recommendation-tips", isExpanded: isExpanded, onClick: () => setIsExpanded(!isExpanded) }, t(
|
|
10
|
+
React.createElement(AccordionToggle, { id: "recommendation-tips", isExpanded: isExpanded, onClick: () => setIsExpanded(!isExpanded) }, t('Tips for problem description field')),
|
|
12
11
|
React.createElement(AccordionContent, { isHidden: !isExpanded },
|
|
13
12
|
React.createElement("span", { className: "pf-v5-u-color-100" },
|
|
14
|
-
React.createElement(Trans, null, "
|
|
13
|
+
React.createElement(Trans, null, "Include the following information in the description to expedite your case: ")),
|
|
15
14
|
React.createElement(List, { className: "pf-v5-u-ml-lg", style: { listStyleType: 'disc' } },
|
|
16
15
|
React.createElement(ListItem, null,
|
|
17
|
-
React.createElement(Trans, null, "
|
|
16
|
+
React.createElement(Trans, null, "Problem")),
|
|
18
17
|
React.createElement(ListItem, null,
|
|
19
|
-
React.createElement(Trans, null, "
|
|
18
|
+
React.createElement(Trans, null, "Steps you\u2019ve taken")),
|
|
20
19
|
React.createElement(ListItem, null,
|
|
21
|
-
React.createElement(Trans, null, "
|
|
20
|
+
React.createElement(Trans, null, "Error Messages"))),
|
|
22
21
|
React.createElement("span", { className: "pf-v5-u-color-100" },
|
|
23
22
|
React.createElement(Trans, null, "Examples:")),
|
|
24
23
|
React.createElement(List, { className: "pf-v5-u-ml-lg", style: { listStyleType: 'disc' } },
|
|
25
24
|
React.createElement(ListItem, null,
|
|
26
|
-
React.createElement(Trans, null, "
|
|
25
|
+
React.createElement(Trans, null, "\"we see error code/message\", \"function that is failing\"")),
|
|
27
26
|
React.createElement(ListItem, null,
|
|
28
|
-
React.createElement(Trans, null,
|
|
27
|
+
React.createElement(Trans, null,
|
|
28
|
+
"I\u2019m unable to start the SSHD service receiving the error message ",
|
|
29
|
+
React.createElement("br", null),
|
|
30
|
+
"\"Bad yes/no argument for ShowPatchLevel parameter\u201D"))))))));
|
|
29
31
|
};
|
|
@@ -3,6 +3,7 @@ import { RouteComponentProps } from 'react-router-dom';
|
|
|
3
3
|
import { IRouteUrlParams } from '../../reducers/RouteConstNTypes';
|
|
4
4
|
interface IProps {
|
|
5
5
|
routeProps: RouteComponentProps<IRouteUrlParams>;
|
|
6
|
+
userSeenRecommendations?: (value: React.SetStateAction<boolean>) => void;
|
|
6
7
|
}
|
|
7
8
|
export default function Recommendations(props: IProps): React.JSX.Element;
|
|
8
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Recommendations.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/Recommendations.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAa,MAAM,kBAAkB,CAAC;AAelE,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAWpF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Recommendations.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/Recommendations.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAa,MAAM,kBAAkB,CAAC;AAelE,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAWpF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CAC5E;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBAgRpD"}
|
|
@@ -24,11 +24,12 @@ import { WatsonxAiIcon } from './WatsonxAiIcon';
|
|
|
24
24
|
const { SessionResourceSource, SessionResourceVisibility } = pcm.preCase.session;
|
|
25
25
|
export default function Recommendations(props) {
|
|
26
26
|
var _a, _b, _c;
|
|
27
|
-
const { product, version, environment, summary, caseResourceLinks } = useCaseSelector((state) => ({
|
|
27
|
+
const { product, version, environment, summary, caseResourceLinks, issue } = useCaseSelector((state) => ({
|
|
28
28
|
product: state.caseDetails.product,
|
|
29
29
|
version: state.caseDetails.version,
|
|
30
30
|
environment: state.caseDetails.environment,
|
|
31
31
|
summary: state.caseDetails.summary,
|
|
32
|
+
issue: state.caseDetails.issue,
|
|
32
33
|
caseResourceLinks: state.caseDetails.caseResourceLinks,
|
|
33
34
|
}), isEqual);
|
|
34
35
|
const caseDispatch = useCaseDispatch();
|
|
@@ -48,7 +49,7 @@ export default function Recommendations(props) {
|
|
|
48
49
|
const MAXROW = 24;
|
|
49
50
|
const recPageSize = pageSize !== null && pageSize !== void 0 ? pageSize : DEFAULTPAGESIZE;
|
|
50
51
|
const abortControllerRef = useRef(undefined);
|
|
51
|
-
const payload = { product, version, summary };
|
|
52
|
+
const payload = { product: product, version: version, summary: summary + ' ' + (issue ? issue : '') };
|
|
52
53
|
const isRecSearchPayloadSame = isEqual(payload, recommendationState.prevRecommendationsBody);
|
|
53
54
|
useEffect(() => {
|
|
54
55
|
// currently due to the debounce we use after the page load leads to some delay in the disbaling of next button
|
|
@@ -80,9 +81,16 @@ export default function Recommendations(props) {
|
|
|
80
81
|
// recreate a new AbortController for each call
|
|
81
82
|
let controller = new AbortController();
|
|
82
83
|
abortControllerRef.current = controller;
|
|
83
|
-
!
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
if (!isEmpty(issue)) {
|
|
85
|
+
!loggedInUsersAccount.data.secureSupport
|
|
86
|
+
? fetchWatsonXRecommendations(recommendationDispatch, payload, MAXROW, recPageSize, 0, true, queryFilters, controller.signal)
|
|
87
|
+
: fetchRecommendations(recommendationDispatch, payload, MAXROW, recPageSize, 0, true, caseNumber, isSecureSupportAccount, queryFilters, controller.signal);
|
|
88
|
+
props.userSeenRecommendations && props.userSeenRecommendations(true);
|
|
89
|
+
recommendationDispatch({
|
|
90
|
+
type: RecommendationsConstants.userViewedDocs,
|
|
91
|
+
payload: { userViewedDocs: true },
|
|
92
|
+
});
|
|
93
|
+
}
|
|
86
94
|
}, [
|
|
87
95
|
activeSection,
|
|
88
96
|
environment,
|
|
@@ -91,6 +99,7 @@ export default function Recommendations(props) {
|
|
|
91
99
|
sessionRestoreDispatch,
|
|
92
100
|
summary,
|
|
93
101
|
version,
|
|
102
|
+
issue,
|
|
94
103
|
recommendationState.insightsKcsIds,
|
|
95
104
|
], 1000);
|
|
96
105
|
useEffect(() => {
|
|
@@ -136,7 +145,7 @@ export default function Recommendations(props) {
|
|
|
136
145
|
dtmTrackEvent('recommendation click', caseNumber, `${product}|${version}`);
|
|
137
146
|
};
|
|
138
147
|
return (React.createElement(React.Fragment, null,
|
|
139
|
-
React.createElement(LoadingDots, { className: "recommendation-loading-dots", show: recommendationState.isLoadingRecommendations && !isEmpty(summary) }),
|
|
148
|
+
React.createElement(LoadingDots, { className: "recommendation-loading-dots", show: recommendationState.isLoadingRecommendations && !isEmpty(summary) && !isEmpty(issue) }),
|
|
140
149
|
React.createElement("div", { className: "recommendation-list pf-v5-u-pt-md", ref: resultRowRef },
|
|
141
150
|
recommendationState.visibleDocs.length !== 0 && (React.createElement(Label, { color: "purple", className: "pf-v5-u-mb-md" },
|
|
142
151
|
React.createElement(WatsonxAiIcon, { fillColor: "#6753ac", className: "pf-v5-u-mr-xs" }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Review.d.ts","sourceRoot":"","sources":["../../../../src/components/Review/Review.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"Review.d.ts","sourceRoot":"","sources":["../../../../src/components/Review/Review.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,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,qBAsE3C"}
|
|
@@ -13,7 +13,6 @@ import CaseGroup from '../CaseInformation/CaseGroup';
|
|
|
13
13
|
import CaseType from '../CaseInformation/CaseType';
|
|
14
14
|
import { ContactPhoneNumber } from '../CaseInformation/ContactPhoneNumber';
|
|
15
15
|
import { ContactPhoneNumberAlert } from '../CaseInformation/ContactPhoneNumberAlert';
|
|
16
|
-
import Description from '../CaseInformation/Description';
|
|
17
16
|
import Fts from '../CaseInformation/Fts';
|
|
18
17
|
import Severity from '../CaseInformation/Severity';
|
|
19
18
|
import SupportLevel from '../CaseInformation/SupportLevel';
|
|
@@ -52,7 +51,6 @@ export default function Review(props) {
|
|
|
52
51
|
React.createElement(AllProductsSelector, { routeProps: props.routeProps, loadTCOnChange: true, showTCAfterButtonClicked: true, checkEntitledProduct: true }),
|
|
53
52
|
React.createElement(OpenShiftClusterId, null),
|
|
54
53
|
React.createElement(Hostname, null),
|
|
55
|
-
React.createElement(Description, { inlineEditable: true, hideSaveCancel: true }),
|
|
56
54
|
React.createElement(KtQuestions, { inlineEditable: true, hideSaveCancel: true }),
|
|
57
55
|
React.createElement(CaseType, { hideIdea: true }),
|
|
58
56
|
React.createElement(SupportLevel, null),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TroubleshootSection.d.ts","sourceRoot":"","sources":["../../../../src/components/TroubleshootSection/TroubleshootSection.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAU1C,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,
|
|
1
|
+
{"version":3,"file":"TroubleshootSection.d.ts","sourceRoot":"","sources":["../../../../src/components/TroubleshootSection/TroubleshootSection.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAU1C,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,qBA4EzC;kBA5EQ,mBAAmB;;;AA+E5B,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Card, CardBody, CardHeader, CardTitle } from '@patternfly/react-core';
|
|
2
|
-
import { ErrorBoundary, LoadingDots } from '@rh-support/components';
|
|
2
|
+
import { ErrorBoundary, LoadingDots, MoreOrLess } from '@rh-support/components';
|
|
3
3
|
import { PreviousCaseTypes } from '@rh-support/utils';
|
|
4
4
|
import isEmpty from 'lodash/isEmpty';
|
|
5
5
|
import isEqual from 'lodash/isEqual';
|
|
@@ -22,12 +22,13 @@ function TroubleshootSection(props) {
|
|
|
22
22
|
var _a;
|
|
23
23
|
const { t } = useTranslation();
|
|
24
24
|
const { topContentState: { topContent }, } = useContext(TCStateContext);
|
|
25
|
-
const { product, version, summary, isCreatingCase, caseType } = useCaseSelector((state) => ({
|
|
25
|
+
const { product, version, summary, isCreatingCase, caseType, issue } = useCaseSelector((state) => ({
|
|
26
26
|
product: state.caseDetails.product,
|
|
27
27
|
version: state.caseDetails.version,
|
|
28
28
|
summary: state.caseDetails.summary,
|
|
29
29
|
isCreatingCase: state.isCreatingCase,
|
|
30
30
|
caseType: state.caseDetails.caseType,
|
|
31
|
+
issue: state.caseDetails.issue,
|
|
31
32
|
}), isEqual);
|
|
32
33
|
const canShowTopProducts = isEmpty(product);
|
|
33
34
|
const canShowTopContent = !canShowTopProducts && ((_a = topContent === null || topContent === void 0 ? void 0 : topContent.data) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
|
@@ -42,8 +43,11 @@ function TroubleshootSection(props) {
|
|
|
42
43
|
React.createElement("span", { className: "pf-v5-u-font-family-heading pf-v5-u-ml-xl pf-v5-u-pr-xs" }, "Version"),
|
|
43
44
|
' ',
|
|
44
45
|
version),
|
|
45
|
-
React.createElement("div", { className: "pf-v5-u-font-family-heading" }, "
|
|
46
|
-
React.createElement("p", { className: "pf-v5-u-mb-xl" }, summary)
|
|
46
|
+
React.createElement("div", { className: "pf-v5-u-font-family-heading" }, "Title"),
|
|
47
|
+
React.createElement("p", { className: "pf-v5-u-mb-xl" }, summary),
|
|
48
|
+
React.createElement("div", { className: "pf-v5-u-font-family-heading" }, "Problem description"),
|
|
49
|
+
React.createElement("p", { className: "pf-v5-u-mb-xl" },
|
|
50
|
+
React.createElement(MoreOrLess, { maxHeight: 93 }, issue))),
|
|
47
51
|
!isCreatingCase && (React.createElement(OpenShiftClusterId, { className: "push-bottom", "data-tracking-id": "troubleshoot-section-openshift-cluster-id" })),
|
|
48
52
|
React.createElement(LoadingDots, { show: topContent.isFetching }),
|
|
49
53
|
topContent.data.length === 0 && (React.createElement(Card, { id: "card", className: "card-support top-recommendations pf-v5-u-mb-md", isCompact: true },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetFileUploader.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/fileUpload/WidgetFileUploader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AA0B/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAInD,UAAU,MAAO,SAAQ,wBAAwB,EAAE,gBAAgB;IAC/D,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAYD,iBAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"WidgetFileUploader.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/fileUpload/WidgetFileUploader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AA0B/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAInD,UAAU,MAAO,SAAQ,wBAAwB,EAAE,gBAAgB;IAC/D,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAYD,iBAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,qBA6OxC;kBA7OQ,kBAAkB;;;AAiP3B,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -152,10 +152,9 @@ function WidgetFileUploader(props) {
|
|
|
152
152
|
React.createElement(WidgetFileSelector, { isSessionId: props.isSessionId, isPrivate: props.isPrivate, isIdea: props.isIdea, showFileExceed: fileExceedInfo }),
|
|
153
153
|
!hasSomeSelectedFiles(selectedLocalFiles) ? ((!props.isIdea && props.helperText) || (React.createElement("p", { className: "pf-v5-u-mt-sm" },
|
|
154
154
|
!props.isIdea ? (React.createElement(Trans, { i18nKey: "i18nUploadSosReport" },
|
|
155
|
-
"
|
|
155
|
+
"To help us provide the right guidance, upload a",
|
|
156
156
|
' ',
|
|
157
|
-
React.createElement("a", { href: "/solutions/3592", target: "_blank" }, "sosreport"),
|
|
158
|
-
"to help us provide the best solutions for your system.")) : (React.createElement("span", { className: "pf-v5-u-font-family-redhatVF-heading-sans-serif pf-v5-u-color-300" },
|
|
157
|
+
React.createElement("a", { href: "/solutions/3592", target: "_blank" }, "sosreport"))) : (React.createElement("span", { className: "pf-v5-u-font-family-redhatVF-heading-sans-serif pf-v5-u-color-300" },
|
|
159
158
|
React.createElement(Trans, null, "Allowed file types: png, gif, jpg, jpeg."))),
|
|
160
159
|
' '))) : (React.createElement(React.Fragment, null,
|
|
161
160
|
unallowedLocalFileExists && (React.createElement(Alert, { variant: "danger", title: t('File type is not allowed on this support type. Please remove file to proceed.') })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsSectionValid.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/useIsSectionValid.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useIsSectionValid.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/useIsSectionValid.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAqB1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAInE,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,gBAAgB;;;;;EAgM9D"}
|
|
@@ -8,13 +8,13 @@ import { useCaseSelector } from '../../context/CaseContext';
|
|
|
8
8
|
import { RecommendationStateContext } from '../../context/RecommendationContext';
|
|
9
9
|
import { RouteContext } from '../../context/RouteContext';
|
|
10
10
|
import { TCStateContext } from '../../context/TopContentContext';
|
|
11
|
-
import { CASE_REFERENCE_NUMBER_LIMIT, CONTACT_INFO_24X7_LIMIT, HOSTNAME_LENGTH_LIMIT,
|
|
11
|
+
import { CASE_REFERENCE_NUMBER_LIMIT, CONTACT_INFO_24X7_LIMIT, HOSTNAME_LENGTH_LIMIT, ISSUE_SUMMARY_LENGTH_LIMIT, TITLE_SUMMARY_LENGTH_LIMIT, } from '../../reducers/CaseConstNTypes';
|
|
12
12
|
import { isCaseInformationSectionValid, isCaseManagementStateValid, isCaseStateValid, isClusterIDValid, isIdeaCaseStateValid, } from '../../reducers/CaseHelpers';
|
|
13
13
|
import { AppRouteSections } from '../../reducers/RouteConstNTypes';
|
|
14
14
|
import { AttachmentStateContext } from './fileUpload/reducer/AttachmentReducerContext';
|
|
15
15
|
export function useIsSectionValid(sectionName) {
|
|
16
16
|
var _a, _b;
|
|
17
|
-
const { caseState, caseType, product, version, contactSSOName, accountNumber, summary, hostname, contactInfo24x7, alternateId, selectedAccountDetails, } = useCaseSelector((state) => ({
|
|
17
|
+
const { caseState, caseType, product, version, contactSSOName, accountNumber, summary, hostname, contactInfo24x7, alternateId, selectedAccountDetails, issue, } = useCaseSelector((state) => ({
|
|
18
18
|
caseState: state,
|
|
19
19
|
caseType: state.caseDetails.caseType,
|
|
20
20
|
product: state.caseDetails.product,
|
|
@@ -26,6 +26,7 @@ export function useIsSectionValid(sectionName) {
|
|
|
26
26
|
contactInfo24x7: state.caseDetails.contactInfo24x7,
|
|
27
27
|
alternateId: state.caseDetails.alternateId,
|
|
28
28
|
selectedAccountDetails: state.selectedAccountDetails,
|
|
29
|
+
issue: state.caseDetails.issue,
|
|
29
30
|
}), isEqual);
|
|
30
31
|
const { globalMetadataState: { allProducts, loggedInUserJwtToken }, } = useContext(GlobalMetadataStateContext);
|
|
31
32
|
const { topContentState: { topContent }, } = useContext(TCStateContext);
|
|
@@ -57,8 +58,10 @@ export function useIsSectionValid(sectionName) {
|
|
|
57
58
|
!allProducts.isError &&
|
|
58
59
|
!topContent.isFetching &&
|
|
59
60
|
!isEmpty(summary) &&
|
|
61
|
+
!isEmpty(issue) &&
|
|
60
62
|
!recommendationState.isLoadingRecommendations &&
|
|
61
|
-
(summary === null || summary === void 0 ? void 0 : summary.length) <=
|
|
63
|
+
(summary === null || summary === void 0 ? void 0 : summary.length) <= TITLE_SUMMARY_LENGTH_LIMIT &&
|
|
64
|
+
(issue === null || issue === void 0 ? void 0 : issue.length) <= ISSUE_SUMMARY_LENGTH_LIMIT);
|
|
62
65
|
};
|
|
63
66
|
const isCaseManagementSectionValid = () => {
|
|
64
67
|
const hasContactInfo24x7ValidLength = contactInfo24x7
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"AASA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EAAqB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAQrF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,qBAgTtD"}
|
|
@@ -7,11 +7,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { useDebounce
|
|
10
|
+
import { useDebounce } from '@rh-support/components';
|
|
11
11
|
import { GlobalMetadataStateContext, useUserPreferences } from '@rh-support/react-context';
|
|
12
12
|
import { ability, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
13
|
-
import { getVersion } from '@rh-support/utils';
|
|
14
|
-
import { isUndefined } from 'lodash';
|
|
15
13
|
import findIndex from 'lodash/findIndex';
|
|
16
14
|
import includes from 'lodash/includes';
|
|
17
15
|
import isEmpty from 'lodash/isEmpty';
|
|
@@ -25,11 +23,10 @@ import { TCDispatchContext, TCStateContext } from '../../context/TopContentConte
|
|
|
25
23
|
import { useResetCaseCreate } from '../../hooks/useResetCaseCreate';
|
|
26
24
|
import { CASE_DEATILS_SOURCE_REFERRER_LIMIT } from '../../reducers/CaseConstNTypes';
|
|
27
25
|
import { getDescriptionWOQues } from '../../reducers/CaseHelpers';
|
|
28
|
-
import { setCaseAccountNumber, setCaseDetails, setCaseOwner
|
|
26
|
+
import { setCaseAccountNumber, setCaseDetails, setCaseOwner } from '../../reducers/CaseReducer';
|
|
29
27
|
import { setRouteFlags } from '../../reducers/RouteReducer';
|
|
30
28
|
import { fetchEdmundAbbottRules } from '../../reducers/RulesReducer';
|
|
31
29
|
import { fetchTopContent } from '../../reducers/TopContentReducer';
|
|
32
|
-
import { isClusterIdEnabledForProduct } from '../../utils/caseOpenshiftClusterIdUtils';
|
|
33
30
|
import RouteUtils from '../../utils/routeUtils';
|
|
34
31
|
import Constants from '../shared/Constants';
|
|
35
32
|
import { AttachmentStateContext } from '../shared/fileUpload/reducer/AttachmentReducerContext';
|
|
@@ -257,38 +254,5 @@ export function GlobalTroubleshootEffects(props) {
|
|
|
257
254
|
}
|
|
258
255
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
259
256
|
}, [loggedInUsersAccount.data]);
|
|
260
|
-
/**
|
|
261
|
-
* When user change version (on product component page or preview page) need to reset clusterID states
|
|
262
|
-
* If version change happens because od session restore, need to skip this otherwise restored value will be reset
|
|
263
|
-
*/
|
|
264
|
-
const previousVersion = usePrevious(version);
|
|
265
|
-
const previousActiveSessionId = usePrevious(activeSessionId);
|
|
266
|
-
useEffect(() => {
|
|
267
|
-
var _a;
|
|
268
|
-
if (isEmpty(product) || isEmpty(version) || activeSessionId !== previousActiveSessionId)
|
|
269
|
-
return;
|
|
270
|
-
// we need to reset openshift cluster states only when major version is different
|
|
271
|
-
// this logic can be removed when version 3 is depricated
|
|
272
|
-
const oldMajorVersion = previousVersion && getVersion(previousVersion).major;
|
|
273
|
-
const newMajorVersion = getVersion(version).major;
|
|
274
|
-
const hasCluster = isClusterIdEnabledForProduct(product, (_a = allProducts.data) === null || _a === void 0 ? void 0 : _a.productsResult);
|
|
275
|
-
// Need to check `hasCluster` is empty as when product is changing from shift product to non-shift
|
|
276
|
-
// product new product will don't have any cluster
|
|
277
|
-
const isClusterInfoShouldBeReset = !hasCluster || (hasCluster && !isUndefined(oldMajorVersion) && oldMajorVersion !== newMajorVersion);
|
|
278
|
-
const isOpenShiftV3 = product === 'OpenShift Container Platform' && newMajorVersion === '3';
|
|
279
|
-
if (isClusterInfoShouldBeReset) {
|
|
280
|
-
setCaseDetails(caseDispatch, {
|
|
281
|
-
openshiftClusterID: '',
|
|
282
|
-
openshiftClusterVersion: '',
|
|
283
|
-
noClusterIdReason: '',
|
|
284
|
-
noClusterIdReasonExplanation: '',
|
|
285
|
-
});
|
|
286
|
-
setCaseState(caseDispatch, { v3ClusterName: '' });
|
|
287
|
-
}
|
|
288
|
-
if (!isOpenShiftV3) {
|
|
289
|
-
setCaseState(caseDispatch, { v3ClusterName: '' });
|
|
290
|
-
}
|
|
291
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
292
|
-
}, [product, version, allProducts.data.productsResult, caseDispatch]);
|
|
293
257
|
return React.createElement(React.Fragment, null);
|
|
294
258
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewFeatureModal.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/NewFeatureModal.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAK/D,QAAA,MAAM,eAAe,yBA8EpB,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Button, Checkbox, Modal, Title } from '@patternfly/react-core';
|
|
2
|
+
import { useLocalStorage, useSessionStorage } from '@rh-support/components';
|
|
3
|
+
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
4
|
+
import { getConfigField, PCM_CONFIG_FIELD_TYPE } from '@rh-support/utils';
|
|
5
|
+
import React, { useContext, useEffect, useState } from 'react';
|
|
6
|
+
import { Trans, useTranslation } from 'react-i18next';
|
|
7
|
+
import { RedHatCustomerPortalIcon } from './RedHatCustomerPortalIcon';
|
|
8
|
+
const NewFeatureModal = () => {
|
|
9
|
+
const [modalViewStorageCounter, setModalViewStorageCounter] = useSessionStorage('modalShowCounter', 0);
|
|
10
|
+
const [shouldNotShowModal, setShouldNotShowModal] = useLocalStorage('shouldNotShowFeatureModal', false); // local storage flag to not show modal
|
|
11
|
+
const [checkedToNotShowModal, setCheckedToNotShowModal] = useState(false);
|
|
12
|
+
const [showModal, setShowModal] = useState(false);
|
|
13
|
+
const { t } = useTranslation();
|
|
14
|
+
const { globalMetadataState: { pcmConfig }, } = useContext(GlobalMetadataStateContext);
|
|
15
|
+
const isNewFeatureBannerVisible = getConfigField(pcmConfig.data, 'isNewFeatureBannerVisible', PCM_CONFIG_FIELD_TYPE.FEATURE_FLAG);
|
|
16
|
+
const handleModalToggle = (_event) => {
|
|
17
|
+
setShowModal(!showModal);
|
|
18
|
+
if (checkedToNotShowModal) {
|
|
19
|
+
setShouldNotShowModal(true); // updating the local storage value on clicking close button
|
|
20
|
+
}
|
|
21
|
+
setModalViewStorageCounter(modalViewStorageCounter + 1);
|
|
22
|
+
};
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
setShowModal(modalViewStorageCounter < 2);
|
|
25
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
26
|
+
}, []);
|
|
27
|
+
const onBannerCheckboxChange = () => {
|
|
28
|
+
setCheckedToNotShowModal(!checkedToNotShowModal);
|
|
29
|
+
};
|
|
30
|
+
return (React.createElement(React.Fragment, null, !shouldNotShowModal && isNewFeatureBannerVisible && showModal && (React.createElement(Modal, { className: "newFeatureModal", width: "45%", "aria-label": t('New feature modal'), isOpen: showModal, onClose: handleModalToggle, actions: [
|
|
31
|
+
React.createElement(Button, { key: "close", variant: "primary", "data-tracking-id": "new-feature-modal-close", onClick: handleModalToggle }, t('Close')),
|
|
32
|
+
], showClose: false },
|
|
33
|
+
React.createElement(RedHatCustomerPortalIcon, null),
|
|
34
|
+
React.createElement(Title, { headingLevel: "h2", className: "pf-v5-u-font-weight-bold" }, t('Change: Application Announcement For KT Question Update')),
|
|
35
|
+
React.createElement(Trans, null, "Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source."),
|
|
36
|
+
React.createElement(Checkbox, { className: "pf-v5-u-mt-md", id: "new-feature-modal-checkbox", label: t(`I don't want to see this modal again`), isChecked: checkedToNotShowModal, onChange: onBannerCheckboxChange, "data-tracking-id": "new-feature-modal-checkbox" })))));
|
|
37
|
+
};
|
|
38
|
+
export default NewFeatureModal;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RedHatCustomerPortalIcon.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/RedHatCustomerPortalIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,wBAAwB,yBA0GpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardMain.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardMain.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAS,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAK9D,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"WizardMain.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardMain.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAS,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAK9D,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAQpF,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,qBAsHhC;AACD,eAAe,UAAU,CAAC"}
|
|
@@ -12,13 +12,18 @@ import { setActiveSectionChanged, updateisNextBtnClickedToShowValidationError }
|
|
|
12
12
|
import RouteUtils from '../../utils/routeUtils';
|
|
13
13
|
import SubmitCase from '../SubmitCase/SubmitCase';
|
|
14
14
|
import MainSection from './MainSection';
|
|
15
|
+
import NewFeatureModal from './NewFeatureModal';
|
|
15
16
|
import WizardNavigation from './WizardNavigation';
|
|
16
17
|
function WizardMain(props) {
|
|
17
18
|
const [showRestFlag, setShowRestFlag] = useState(false);
|
|
18
19
|
const { isCreatingCase } = useCaseSelector((state) => ({
|
|
19
20
|
isCreatingCase: state.isCreatingCase,
|
|
20
21
|
}), isEqual);
|
|
21
|
-
const
|
|
22
|
+
const [userSeenRecommendations, setUserSeenRecommendations] = useState(false);
|
|
23
|
+
const { getStepsSequece } = useWizard(props.routeProps, {
|
|
24
|
+
userSeenRecommendationsfn: setUserSeenRecommendations,
|
|
25
|
+
userSeenRecommendationsValue: userSeenRecommendations,
|
|
26
|
+
});
|
|
22
27
|
const dispatchToRouteReducer = useContext(RouteDispatchContext);
|
|
23
28
|
const { t } = useTranslation();
|
|
24
29
|
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" },
|
|
@@ -54,12 +59,13 @@ function WizardMain(props) {
|
|
|
54
59
|
}, onBack: () => {
|
|
55
60
|
onBack();
|
|
56
61
|
focusWizardMainPanel();
|
|
57
|
-
}, activeStep: activeStep, onSubmit: onSubmit, confirmSupportModal: props.confirmSupportModal, onShowRestUpdate: (flag) => setShowRestFlag(flag) }));
|
|
62
|
+
}, activeStep: activeStep, onSubmit: onSubmit, confirmSupportModal: props.confirmSupportModal, onShowRestUpdate: (flag) => setShowRestFlag(flag), userSeenRecommendations: userSeenRecommendations }));
|
|
58
63
|
})));
|
|
59
64
|
// To add a new step to wizard first need to add the component to appRouteConfugurations
|
|
60
65
|
// in useWizard file then add it to step squences in RouteConstNTypes
|
|
61
66
|
const steps = getStepsSequece(showRestFlag);
|
|
62
67
|
return (React.createElement(React.Fragment, null,
|
|
68
|
+
React.createElement(NewFeatureModal, null),
|
|
63
69
|
steps.length !== 0 && (React.createElement(Route, { path: `${RouteUtils.seBasePath}/(${steps[0].id}|describe-issue|open-case)`, render: () => (React.createElement(Wizard, { navAriaLabel: ` navAriaLabel steps `, mainAriaLabel: ` mainAriaLabel content `, steps: steps, footer: CustomFooter, onNext: onNext, onBack: onBack, hideClose: true, backButtonText: t('Go back'), onCurrentStepChanged: onCurrentStepChanged })) })),
|
|
64
70
|
React.createElement(Route, { exact: true, path: `${RouteUtils.seBasePath}/${AppRouteSections.SUBMIT_CASE}`, render: () => renderSubmitCasePage() })));
|
|
65
71
|
}
|
|
@@ -9,6 +9,7 @@ interface IProps {
|
|
|
9
9
|
onSubmit: () => void;
|
|
10
10
|
confirmSupportModal: (hasPreferredSecureSupportAccount: boolean) => void;
|
|
11
11
|
onShowRestUpdate: (flag: boolean) => void;
|
|
12
|
+
userSeenRecommendations?: boolean;
|
|
12
13
|
}
|
|
13
14
|
declare function WizardNavigation(props: IProps): React.JSX.Element;
|
|
14
15
|
declare namespace WizardNavigation {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAEpD,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,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAEpD,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,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACrC;AAGD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBAyJtC;kBAzJQ,gBAAgB;;;AA2JzB,eAAe,gBAAgB,CAAC"}
|
|
@@ -105,7 +105,8 @@ function WizardNavigation(props) {
|
|
|
105
105
|
const isEntitledProductLocal = isSearchIntent ? true : isEntitledProduct;
|
|
106
106
|
return (React.createElement(React.Fragment, null,
|
|
107
107
|
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" }, t('Go back'))),
|
|
108
|
-
React.createElement("button", { disabled: (!
|
|
108
|
+
React.createElement("button", { disabled: (!props.userSeenRecommendations && props.activeStep.id === AppRouteSections.SUMMARIZE) ||
|
|
109
|
+
(!isEntitledProductLocal && props.activeStep.nextButtonLabel === 'Get support') ||
|
|
109
110
|
(!isSectionValidFn(props.activeStep.id) && isNextBtnClickedToShowValidationError) ||
|
|
110
111
|
noValidEntitlement, onClick: onNext, className: "btn btn-app btn-primary main-nav-button", "data-tracking-id": `next-of-${activeSection}`, type: "button" }, t(props.activeStep.nextButtonLabel)),
|
|
111
112
|
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'))),
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
interface IProps {
|
|
2
|
+
userSeenRecommendationsfn?: any;
|
|
3
|
+
userSeenRecommendationsValue: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function useWizard(routeProps: any, props?: IProps): {
|
|
2
6
|
getStepsSequece: (showRest?: boolean) => any;
|
|
3
7
|
};
|
|
8
|
+
export {};
|
|
4
9
|
//# sourceMappingURL=useWizard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWizard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useWizard.tsx"],"names":[],"mappings":"AA+BA,wBAAgB,SAAS,CAAC,UAAU,KAAA;
|
|
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;CACzC;AAED,wBAAgB,SAAS,CAAC,UAAU,KAAA,EAAE,KAAK,CAAC,EAAE,MAAM;iCAqPb,OAAO;EAwC7C"}
|
|
@@ -19,16 +19,17 @@ import { RouteContext } from '../context/RouteContext';
|
|
|
19
19
|
import { TCStateContext } from '../context/TopContentContext';
|
|
20
20
|
import { AppRouteSections, openCaseNonTechnicalSequence, openCaseRouteSectionSequence, searchIntentRouteSectionSequence, troubleshootNonTechnicalSequence, troubleshootRouteSectionsSequence, } from '../reducers/RouteConstNTypes';
|
|
21
21
|
import RouteUtils from '../utils/routeUtils';
|
|
22
|
-
export function useWizard(routeProps) {
|
|
22
|
+
export function useWizard(routeProps, props) {
|
|
23
23
|
const { routeState: { activeSection, isSearchIntent, isNextBtnClickedToShowValidationError }, } = useContext(RouteContext);
|
|
24
24
|
// state value was available later - reading dirctly from url
|
|
25
25
|
const isCaseCreate = RouteUtils.getQueryParams(routeProps).caseCreate === 'true';
|
|
26
26
|
const { recommendationState: { isLoadingRecommendations }, } = useContext(RecommendationStateContext);
|
|
27
27
|
const { topContentState: { topContent }, } = useContext(TCStateContext);
|
|
28
|
-
const { isSelectedAccounntSecureSupport, summary, caseType } = useCaseSelector((state) => ({
|
|
28
|
+
const { isSelectedAccounntSecureSupport, summary, caseType, issue } = useCaseSelector((state) => ({
|
|
29
29
|
isSelectedAccounntSecureSupport: state.selectedAccountDetails.data.secureSupport,
|
|
30
30
|
summary: state.caseDetails.summary,
|
|
31
31
|
caseType: state.caseDetails.caseType,
|
|
32
|
+
issue: state.caseDetails.issue,
|
|
32
33
|
}), isEqual);
|
|
33
34
|
const { t } = useTranslation();
|
|
34
35
|
const { isSectionValidFn, isActiveSectionValid } = useIsSectionValid(activeSection);
|
|
@@ -40,11 +41,13 @@ export function useWizard(routeProps) {
|
|
|
40
41
|
};
|
|
41
42
|
const alertMessage = () => {
|
|
42
43
|
// alert title and variant based on multiple conditions for two different sections
|
|
43
|
-
const isLoading = topContent.isFetching || (isLoadingRecommendations && summary);
|
|
44
|
+
const isLoading = topContent.isFetching || (isLoadingRecommendations && summary && issue);
|
|
44
45
|
const title = isLoading
|
|
45
46
|
? t('Please wait while recommendations are loading')
|
|
46
47
|
: t('Please address the errors to proceed');
|
|
47
|
-
return (React.createElement(AlertMessage, { show: isNextBtnClickedToShowValidationError && !isActiveSectionValid, variant: (isLoadingRecommendations && summary) || topContent.isFetching
|
|
48
|
+
return (React.createElement(AlertMessage, { show: isNextBtnClickedToShowValidationError && !isActiveSectionValid, variant: (isLoadingRecommendations && summary && issue) || topContent.isFetching
|
|
49
|
+
? AlertType.INFO
|
|
50
|
+
: AlertType.DANGER, isInline: true, title: title, className: "pf-v5-u-mb-lg", "data-tracking-id": isLoading ? 'wait-recommendations-loading' : 'proceed-address-errors' }));
|
|
48
51
|
};
|
|
49
52
|
// components that are used in wizard steps
|
|
50
53
|
const appRouteConfugurations = {
|
|
@@ -55,11 +58,12 @@ export function useWizard(routeProps) {
|
|
|
55
58
|
[AppRouteSections.SUMMARIZE]: Object.assign(Object.assign({}, defaultRouteConfiguration), { id: AppRouteSections.SUMMARIZE, name: t('Summarize'), component: (React.createElement(MainSection, { stepNumber: 2, totalSteps: 6, section: AppRouteSections.SUMMARIZE, title: t('What are you having an issue with?') },
|
|
56
59
|
React.createElement(Suspense, { fallback: React.createElement(LoadingIndicator, { size: "sm" }) },
|
|
57
60
|
alertMessage(),
|
|
58
|
-
React.createElement(ProductSelector, { routeProps: routeProps })))), canJumpTo: isSectionValidFn(AppRouteSections.SUMMARIZE) || activeSection === AppRouteSections.SUMMARIZE, nextButtonLabel: t('See more options') }),
|
|
61
|
+
React.createElement(ProductSelector, { routeProps: routeProps, userSeenRecommendations: props.userSeenRecommendationsfn })))), canJumpTo: isSectionValidFn(AppRouteSections.SUMMARIZE) || activeSection === AppRouteSections.SUMMARIZE, nextButtonLabel: t('See more options') }),
|
|
59
62
|
[AppRouteSections.TROUBLESHOOT]: Object.assign(Object.assign({}, defaultRouteConfiguration), { id: AppRouteSections.TROUBLESHOOT, name: t('Troubleshoot'), component: (React.createElement(MainSection, { stepNumber: 3, totalSteps: 6, section: AppRouteSections.TROUBLESHOOT, title: t('Recommendations') },
|
|
60
63
|
React.createElement(Suspense, { fallback: React.createElement(LoadingIndicator, { size: "sm" }) },
|
|
61
64
|
alertMessage(),
|
|
62
|
-
React.createElement(TroubleshootSection, null)))), canJumpTo: isSectionValidFn(AppRouteSections.TROUBLESHOOT
|
|
65
|
+
React.createElement(TroubleshootSection, null)))), canJumpTo: isSectionValidFn(AppRouteSections.TROUBLESHOOT || activeSection === AppRouteSections.TROUBLESHOOT) &&
|
|
66
|
+
(props === null || props === void 0 ? void 0 : props.userSeenRecommendationsValue), nextButtonLabel: isCaseCreate ? t('Continue') : t('Convert to Case') }),
|
|
63
67
|
[AppRouteSections.DESCRIBE_MORE]: Object.assign(Object.assign({}, defaultRouteConfiguration), { id: AppRouteSections.DESCRIBE_MORE, name: t('Describe more'), component: (React.createElement(MainSection, { stepNumber: 4, totalSteps: 6, section: AppRouteSections.DESCRIBE_MORE, title: React.createElement(React.Fragment, null,
|
|
64
68
|
t('Case information'),
|
|
65
69
|
isEmpty(RouteUtils.seBasePath) && isSelectedAccounntSecureSupport && (React.createElement("span", { className: "secured-support" },
|
|
@@ -7,11 +7,14 @@ import { ICaseNotificationAddresses } from '@cee-eng/hydrajs/@types/models/case'
|
|
|
7
7
|
import { IContact } from '@cee-eng/hydrajs/@types/models/contact';
|
|
8
8
|
import { IAction, IAPIError, IApiResponseDetails } from '@rh-support/types/shared';
|
|
9
9
|
import { Dispatch } from 'react';
|
|
10
|
-
export declare const
|
|
10
|
+
export declare const TITLE_SUMMARY_LENGTH_LIMIT = 255;
|
|
11
|
+
export declare const ISSUE_SUMMARY_LENGTH_LIMIT = 20000;
|
|
12
|
+
export declare const SUMMARY_LENGTH_LIMIT = 16000;
|
|
13
|
+
export declare const KTQUESTION_MAX_LIMIT = 4000;
|
|
11
14
|
export declare const ATTACHMENT_DESCRIPTION_LENGTH_LIMIT = 255;
|
|
12
15
|
export declare const ESCALATION_SUBJECT_LENGTH_LIMIT = 255;
|
|
13
16
|
export declare const DESCRIPTION_LENGTH_LIMIT = 32000;
|
|
14
|
-
export declare const MODIFIED_DESCRIPTION_LENGTH_LIMIT =
|
|
17
|
+
export declare const MODIFIED_DESCRIPTION_LENGTH_LIMIT = 32000;
|
|
15
18
|
export declare const HOSTNAME_LENGTH_LIMIT = 255;
|
|
16
19
|
export declare const CONTACT_INFO_24X7_LIMIT = 32768;
|
|
17
20
|
export declare const CLUSTER_ID_LIMIT = 255;
|
|
@@ -37,11 +40,14 @@ export declare const CASE_DEATILS_SOURCE_REFERRER_LIMIT = 255;
|
|
|
37
40
|
export declare const summaryMaxLengthErrorMessage = "Case summary cannot be more than {{limit}} characters.";
|
|
38
41
|
export declare enum KtQuestionConstant {
|
|
39
42
|
issue = "What are you experiencing? What are you expecting to happen?",
|
|
40
|
-
timeFramesAndUrgency = "
|
|
41
|
-
environment = "
|
|
42
|
-
periodicityOfIssue = "
|
|
43
|
+
timeFramesAndUrgency = "Describe the impact to you or the business",
|
|
44
|
+
environment = "In what environment are you experiencing this behavior?",
|
|
45
|
+
periodicityOfIssue = "How frequently does this behavior occur? Does it occur repeatedly or at certain times?",
|
|
43
46
|
ideaIssue = "Please describe your request"
|
|
44
47
|
}
|
|
48
|
+
export declare const KTQ2LengthError = "Please describe the value and impact to your business in 4000 characters or less.";
|
|
49
|
+
export declare const KTQ3LengthError = "Please describe the location and environment to your business in 4000 characters or less.";
|
|
50
|
+
export declare const KTQ4LengthError = "Please describe the time and frequency when the issue occurs in 4000 characters or less.";
|
|
45
51
|
export declare const enum SupportLevelsInternal {
|
|
46
52
|
SELF_SUPPORT = "selfSupport",
|
|
47
53
|
STANDARD = "standard",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseConstNTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACjH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEnF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,eAAO,MAAM,oBAAoB,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"CaseConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseConstNTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACjH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEnF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,eAAO,MAAM,mCAAmC,MAAM,CAAC;AACvD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AACnD,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAC9C,eAAO,MAAM,iCAAiC,QAAQ,CAAC;AACvD,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,qCAAqC,OAAO,CAAC;AAC1D,eAAO,MAAM,qCAAqC,OAAO,CAAC;AAC1D,eAAO,MAAM,iCAAiC,QAAQ,CAAC;AACvD,eAAO,MAAM,kCAAkC,QAAQ,CAAC;AACxD,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAC/C,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,sCAAsC,MAAM,CAAC;AAC1D,eAAO,MAAM,kDAAkD,MAAM,CAAC;AACtE,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAI9C,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAC9C,eAAO,MAAM,uCAAuC,OAAO,CAAC;AAC5D,eAAO,MAAM,8BAA8B,OAAO,CAAC;AACnD,eAAO,MAAM,qCAAqC,OAAO,CAAC;AAC1D,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,eAAO,MAAM,4BAA4B,2DAA2D,CAAC;AAGrG,oBAAY,kBAAkB;IAC1B,KAAK,iEAAiE;IACtE,oBAAoB,+CAA+C;IACnE,WAAW,4DAA4D;IACvE,kBAAkB,2FAA2F;IAC7G,SAAS,iCAAiC;CAC7C;AAED,eAAO,MAAM,eAAe,sFAAsF,CAAC;AACnH,eAAO,MAAM,eAAe,8FACmE,CAAC;AAChG,eAAO,MAAM,eAAe,6FACkE,CAAC;AAE/F,0BAAkB,qBAAqB;IACnC,YAAY,gBAAgB;IAC5B,QAAQ,aAAa;IACrB,OAAO,YAAY;CACtB;AACD,0BAAkB,sBAAsB;IACpC,KAAK,eAAe;IACpB,KAAK,aAAa;IAClB,KAAK,eAAe;IACpB,KAAK,YAAY;CACpB;AAED,eAAO,MAAM,mBAAmB;;;;;;;;CAQ/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmB7B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;CAK/B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;CAStC,CAAC;AAEF,eAAO,MAAM,4BAA4B,yEAAyE,CAAC;AAEnH,oBAAY,oBAAoB;IAC5B,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,+BAA+B,oCAAoC;IACnE,cAAc,mBAAmB;IACjC,oBAAoB,yBAAyB;IAC7C,sBAAsB,2BAA2B;IACjD,uBAAuB,4BAA4B;IACnD,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;IAC3C,wBAAwB,6BAA6B;IACrD,eAAe,oBAAoB;IACnC,oBAAoB,yBAAyB;IAC7C,sBAAsB,2BAA2B;IACjD,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,iBAAiB,sBAAsB;IACvC,wBAAwB,6BAA6B;IACrD,mBAAmB,wBAAwB;IAC3C,kBAAkB,uBAAuB;IACzC,8BAA8B,mCAAmC;IACjE,kBAAkB,uBAAuB;IACzC,6BAA6B,kCAAkC;IAC/D,kCAAkC,uCAAuC;IACzE,gCAAgC,qCAAqC;IACrE,sBAAsB,2BAA2B;IACjD,yBAAyB,8BAA8B;IACvD,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IACvC,0BAA0B,+BAA+B;IACzD,wBAAwB,6BAA6B;IACrD,yCAAyC,8CAA8C;IACvF,8CAA8C,mDAAmD;CACpG;AAED,eAAO,MAAM,gBAAgB,EAAE,UAiG9B,CAAC;AAEF,MAAM,WAAW,UAAU;IACvB,iBAAiB,EAAE,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9D,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACnC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,4BAA4B,EAAE,QAAQ,EAAE,CAAC;IACzC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,wBAAwB,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC/C,qBAAqB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,yBAAyB,EAAE,OAAO,CAAC;IACnC,uBAAuB,EAAE,OAAO,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,wBAAwB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,sBAAsB,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,aAAa,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7C,gBAAgB,EAAE,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC;IACpD,sBAAsB,EAAE,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1D,gBAAgB,EAAE,mBAAmB,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;IAC7E,kBAAkB,EAAE,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC;IACxD,sBAAsB,EAAE,OAAO,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,SAAS,CAAC;IAC5B,0BAA0B,EAAE,OAAO,CAAC;IACpC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,oCAAoC,EAAE,OAAO,CAAC;IAC9C,sCAAsC,EAAE,OAAO,CAAC;IAChD,eAAe,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B,EAAE,OAAO,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sCAAsC,CAAC,EAAE,OAAO,CAAC;IACjD,kDAAkD,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mCAAmC,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IAChF,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,sBAAuB,SAAQ,UAAU;CAAG;AAC7D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AACpF,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;AAEhE,eAAO,MAAM,qCAAqC,+CAA+C,CAAC;AAClG,eAAO,MAAM,yCAAyC,+CAA+C,CAAC"}
|