@rh-support/troubleshoot 2.2.1851-beta.0 → 2.4.5-beta.1
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/CaseDetailsTabs.js +2 -2
- package/lib/esm/components/CaseEditView/CaseOverview/CaseType.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/CaseType.js +18 -4
- package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/index.js +2 -2
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.js +4 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.js +2 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.js +6 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.js +3 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +4 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +95 -21
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.js +269 -137
- package/lib/esm/components/CaseInformation/Fts.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/Fts.js +6 -5
- package/lib/esm/components/CaseManagement/Cep.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/Cep.js +3 -2
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.js +11 -5
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +11 -5
- package/lib/esm/components/Recommendations/AsideResults.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/AsideResults.js +3 -1
- package/lib/esm/components/Recommendations/EARules/EARule.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARule.js +0 -2
- package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.js +2 -2
- package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/Recommendations.js +16 -5
- package/lib/esm/components/SubmitCase/SubmitCase.js +3 -3
- package/lib/esm/components/Suggestions/TopContent.d.ts.map +1 -1
- package/lib/esm/components/Suggestions/TopContent.js +1 -4
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.d.ts +2 -2
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.js +10 -1
- package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardLayout.js +4 -1
- package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardMain.js +5 -0
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardNavigation.js +7 -3
- package/lib/esm/scss/_main.scss +2 -1
- package/lib/esm/scss/_pf-overrides.scss +6 -0
- package/package.json +11 -10
|
@@ -11,6 +11,7 @@ import { Button, Tooltip, TooltipPosition } from '@patternfly/react-core';
|
|
|
11
11
|
import { ToastNotification } from '@rh-support/components';
|
|
12
12
|
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
13
13
|
import { AbilityContext, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
14
|
+
import { dtmTrackEventCaseStepEncountered } from '@rh-support/utils';
|
|
14
15
|
import differenceBy from 'lodash/differenceBy';
|
|
15
16
|
import filter from 'lodash/filter';
|
|
16
17
|
import find from 'lodash/find';
|
|
@@ -31,11 +32,13 @@ function RHAssociatesSelector(props) {
|
|
|
31
32
|
const [isRHAssociatesUpdating, setIsRHAssociatesUpdating] = useState(false);
|
|
32
33
|
const ability = useContext(AbilityContext);
|
|
33
34
|
const { isExportingPDF } = useContext(PDFContext);
|
|
34
|
-
const { caseNumber, contactSsoUsername, selectedOwner, selectedNotificationContacts } = useCaseSelector((state) => ({
|
|
35
|
+
const { caseNumber, contactSsoUsername, product, selectedOwner, selectedNotificationContacts, version } = useCaseSelector((state) => ({
|
|
35
36
|
caseNumber: state.caseDetails.caseNumber,
|
|
36
37
|
contactSsoUsername: state.caseDetails.contactSSOName,
|
|
37
38
|
selectedOwner: state.selectedOwner,
|
|
38
39
|
selectedNotificationContacts: state.selectedNotificationContacts,
|
|
40
|
+
product: state.caseDetails.product,
|
|
41
|
+
version: state.caseDetails.version,
|
|
39
42
|
}), isEqual);
|
|
40
43
|
const caseDispatch = useCaseDispatch();
|
|
41
44
|
const onRhAssociateAdded = (addedUsers) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -64,7 +67,7 @@ function RHAssociatesSelector(props) {
|
|
|
64
67
|
ToastNotification.addDangerMessage(t(`Red Hat associate failed to get removed`));
|
|
65
68
|
}
|
|
66
69
|
});
|
|
67
|
-
const onNotifiedUserChange = (
|
|
70
|
+
const onNotifiedUserChange = (selectedContacts_1, ...args_1) => __awaiter(this, [selectedContacts_1, ...args_1], void 0, function* (selectedContacts, throwTrackEventOnAdd = false) {
|
|
68
71
|
const toAdd = filter(differenceBy(selectedContacts, selectedNotificationContacts, 'ssoUsername'), (item) => item.ssoUsername !== contactSsoUsername);
|
|
69
72
|
const toRemove = filter(differenceBy(selectedNotificationContacts, selectedContacts, 'ssoUsername'), (item) => item.isInternal && item.ssoUsername !== contactSsoUsername);
|
|
70
73
|
let newContacts = [];
|
|
@@ -72,6 +75,9 @@ function RHAssociatesSelector(props) {
|
|
|
72
75
|
newContacts = [...selectedNotificationContacts, ...toAdd];
|
|
73
76
|
if (!isEmpty(caseNumber)) {
|
|
74
77
|
yield onRhAssociateAdded(toAdd);
|
|
78
|
+
if (throwTrackEventOnAdd) {
|
|
79
|
+
dtmTrackEventCaseStepEncountered('follow', caseNumber, product, version);
|
|
80
|
+
}
|
|
75
81
|
}
|
|
76
82
|
}
|
|
77
83
|
else if ((toRemove || []).length > 0) {
|
|
@@ -90,9 +96,9 @@ function RHAssociatesSelector(props) {
|
|
|
90
96
|
!isCurrentUserSelectedInternalNotifiedUser();
|
|
91
97
|
const showRemoveWatchButton = () => (loggedInUserRights.data.isInternal() && isCurrentUserSelectedInternalNotifiedUser()) ||
|
|
92
98
|
contactSsoUsername === loggedInUser.data.ssoUsername;
|
|
93
|
-
const addCurrentUser = () => {
|
|
94
|
-
onNotifiedUserChange([Object.assign(Object.assign({}, loggedInUser.data), { accountNumber: loggedInUserRights.data.getAccountNumber() })]);
|
|
95
|
-
};
|
|
99
|
+
const addCurrentUser = () => __awaiter(this, void 0, void 0, function* () {
|
|
100
|
+
onNotifiedUserChange([Object.assign(Object.assign({}, loggedInUser.data), { accountNumber: loggedInUserRights.data.getAccountNumber() })], true);
|
|
101
|
+
});
|
|
96
102
|
const removeCurrentUser = () => {
|
|
97
103
|
if (isCurrentUserSelectedInternalNotifiedUser()) {
|
|
98
104
|
onNotifiedUserChange(filter(selectedNotificationContacts, (contact) => contact.ssoUsername !== loggedInUser.data.ssoUsername));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseContactSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseManagement/SendNotifications/CaseContactSelector.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CaseContactSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseManagement/SendNotifications/CaseContactSelector.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAgBvE,MAAM,WAAW,MAAM;CAAG;AAG1B,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBA8bzC;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -11,6 +11,7 @@ import { Button, Tooltip, TooltipPosition } from '@patternfly/react-core';
|
|
|
11
11
|
import { CaseContactsSelectorExternal, getHydraContactLabel, PromisifyModal, ToastNotification, usePrevious, } from '@rh-support/components';
|
|
12
12
|
import { GlobalMetadataStateContext, useCanEditCase } from '@rh-support/react-context';
|
|
13
13
|
import { AbilityContext, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
14
|
+
import { dtmTrackEventCaseStepEncountered } from '@rh-support/utils';
|
|
14
15
|
import differenceBy from 'lodash/differenceBy';
|
|
15
16
|
import filter from 'lodash/filter';
|
|
16
17
|
import find from 'lodash/find';
|
|
@@ -34,7 +35,7 @@ function CaseContactSelector(props) {
|
|
|
34
35
|
const canSeeEmailNotifications = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_SEND_NOTIFICATIONS);
|
|
35
36
|
const [isAssociatesUpdating, setIsAssociatesUpdating] = useState(false);
|
|
36
37
|
const { t } = useTranslation();
|
|
37
|
-
const { accountNumber, caseNumber, contactSsoUsername, selectedNotificationContacts, selectedOwner, customEmailsList, selectedCaseGroupUsers, ownersCaseGroups, groupNumber, createdById, } = useCaseSelector((state) => ({
|
|
38
|
+
const { accountNumber, caseNumber, contactSsoUsername, selectedNotificationContacts, selectedOwner, customEmailsList, product, selectedCaseGroupUsers, ownersCaseGroups, groupNumber, createdById, version, } = useCaseSelector((state) => ({
|
|
38
39
|
accountNumber: state.caseDetails.accountNumberRef,
|
|
39
40
|
caseNumber: state.caseDetails.caseNumber,
|
|
40
41
|
contactSsoUsername: state.caseDetails.contactSSOName,
|
|
@@ -45,6 +46,8 @@ function CaseContactSelector(props) {
|
|
|
45
46
|
groupNumber: state.caseDetails.groupNumber,
|
|
46
47
|
ownersCaseGroups: state.ownersCaseGroups,
|
|
47
48
|
createdById: state.caseDetails.createdById,
|
|
49
|
+
product: state.caseDetails.product,
|
|
50
|
+
version: state.caseDetails.version,
|
|
48
51
|
}), isEqual);
|
|
49
52
|
const caseDispatch = useCaseDispatch();
|
|
50
53
|
const { addCustomEmail, canAddCustomEmail, hideCustomEmails, deleteCustomEmail, isUpdatingCustomEmails, isEmailValid, showAddEmailToAccountModal, } = useCustomEmails({
|
|
@@ -185,7 +188,7 @@ function CaseContactSelector(props) {
|
|
|
185
188
|
}
|
|
186
189
|
return hasGroupAccess;
|
|
187
190
|
});
|
|
188
|
-
const onNotifiedUserChange = (...args_1) => __awaiter(this, [...args_1], void 0, function* (selectedContacts = []) {
|
|
191
|
+
const onNotifiedUserChange = (...args_1) => __awaiter(this, [...args_1], void 0, function* (selectedContacts = [], throwTrackEvent = false) {
|
|
189
192
|
// check if selection changed
|
|
190
193
|
const alreadySelected = [
|
|
191
194
|
...customEmailsList.data,
|
|
@@ -199,6 +202,9 @@ function CaseContactSelector(props) {
|
|
|
199
202
|
const selectedCustomEmails = remove(allSelectedContacts, (item) => item.customOption || item.emailAddress).map((item) => item.label || item.emailAddress || item.ssoUsername);
|
|
200
203
|
yield processCustomEmails(selectedCustomEmails);
|
|
201
204
|
yield processCaseContacts(allSelectedContacts);
|
|
205
|
+
if (throwTrackEvent) {
|
|
206
|
+
dtmTrackEventCaseStepEncountered('follow', caseNumber, product, version);
|
|
207
|
+
}
|
|
202
208
|
});
|
|
203
209
|
/** Reset all non-internal selectedNotificationContacts when selected account number changes */
|
|
204
210
|
useEffect(() => {
|
|
@@ -214,9 +220,9 @@ function CaseContactSelector(props) {
|
|
|
214
220
|
!isCurrentUserSelectedExternalNotifiedUser();
|
|
215
221
|
const showRemoveWatchButton = () => loggedInUserRights.data.isExternal() &&
|
|
216
222
|
(isCurrentUserSelectedExternalNotifiedUser() || isCurrentUserCaseContact);
|
|
217
|
-
const addCurrentUser = () => {
|
|
218
|
-
onNotifiedUserChange([...selectedNotificationContacts, ...customEmailsList.data, loggedInUser.data]);
|
|
219
|
-
};
|
|
223
|
+
const addCurrentUser = () => __awaiter(this, void 0, void 0, function* () {
|
|
224
|
+
onNotifiedUserChange([...selectedNotificationContacts, ...customEmailsList.data, loggedInUser.data], true);
|
|
225
|
+
});
|
|
220
226
|
const removeCurrentUser = () => {
|
|
221
227
|
if (isCurrentUserSelectedExternalNotifiedUser()) {
|
|
222
228
|
onNotifiedUserChange([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsideResults.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/AsideResults.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AsideResults.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/AsideResults.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AASvD,OAAO,EAAE,eAAe,EAAsC,MAAM,iCAAiC,CAAC;AAUtG,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,qBA0MzC"}
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { pcm, search } from '@cee-eng/hydrajs';
|
|
11
11
|
import { useDebounce } from '@rh-support/components';
|
|
12
|
-
import { computeRecommendationAbstract, computeRecommendationTitle, convertObjToEncodedQueryParams, getSolrParams, getTrimmedCharacters, PreviousCaseTypes, replaceHighlightingData, } from '@rh-support/utils';
|
|
12
|
+
import { computeRecommendationAbstract, computeRecommendationTitle, convertObjToEncodedQueryParams, dtmTrackEventRecommendationListingItemClicked, getSolrParams, getTrimmedCharacters, PreviousCaseTypes, replaceHighlightingData, } from '@rh-support/utils';
|
|
13
13
|
import isEmpty from 'lodash/isEmpty';
|
|
14
14
|
import isEqual from 'lodash/isEqual';
|
|
15
15
|
import React, { useContext, useEffect, useRef } from 'react';
|
|
@@ -117,7 +117,9 @@ export function AsideResults(props) {
|
|
|
117
117
|
const onResourceClick = (doc, index) => (event) => {
|
|
118
118
|
if (isSelectedAccounntSecureSupport)
|
|
119
119
|
return;
|
|
120
|
+
const rank = index + 1 + PAGE_SIZE * ((recommendationState.currentPage || 1) - 1);
|
|
120
121
|
createOrUpdateSessionResources(sessionRestoreDispatch, activeSessionId, sessionResourceTracking, SessionResourceSource.RECOMMENDATIONS_ASIDE, [getSessResFromRec(doc, SessionResourceVisibility.VISITED, index + 1)], payload);
|
|
122
|
+
dtmTrackEventRecommendationListingItemClicked(window.location.href, activeSection, 'middle', doc.id, rank, doc.allTitle, doc.view_uri, 'Recommendation Aside', 'Live troubleshooting powered by OpenShift AI');
|
|
121
123
|
};
|
|
122
124
|
useEffect(() => {
|
|
123
125
|
if (isSelectedAccounntSecureSupport)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EARule.d.ts","sourceRoot":"","sources":["../../../../../src/components/Recommendations/EARules/EARule.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EARule.d.ts","sourceRoot":"","sources":["../../../../../src/components/Recommendations/EARules/EARule.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAM1C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,UAAU,cAAc;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;CAClH;AAGD,eAAO,MAAM,aAAa,+BAGxB,CAAC;AAEH,wBAAgB,gBAAgB,mBAM/B;AACD,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;;;;CAAA,qBAoClD;AAED,iBAAS,WAAW,sBAGnB;AAED,iBAAS,iBAAiB,sBA0BzB;AAED,iBAAS,aAAa,CAAC,EAAE,SAA6B,EAAE,SAAc,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,qBA2BnH;AAED,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
2
|
import { pcm } from '@cee-eng/hydrajs';
|
|
3
|
-
import { dtmTrackEventCaseStartStopped } from '@rh-support/utils';
|
|
4
3
|
import DOMPurify from 'dompurify';
|
|
5
4
|
import isEqual from 'lodash/isEqual';
|
|
6
5
|
import React, { useContext } from 'react';
|
|
@@ -31,7 +30,6 @@ export function EARule({ children, rule, ruleRank }) {
|
|
|
31
30
|
const sessionRestoreDispatch = useContext(SessionRestoreDispatchContext);
|
|
32
31
|
const onCtaClick = (link, title) => () => {
|
|
33
32
|
createOrUpdateSessionResources(sessionRestoreDispatch, activeSessionId, sessionResourceTracking, SessionResourceSource.EDMOUND_ABOTT, [getSessResFromEA(link, SessionResourceVisibility.VISITED, ruleRank, rule.rule_id)], JSON.stringify({ product, version, summary }));
|
|
34
|
-
dtmTrackEventCaseStartStopped(`insight rule button click: ${title}`, undefined, `${product}|${version}`);
|
|
35
33
|
};
|
|
36
34
|
return (React.createElement(EARuleContext.Provider, { value: {
|
|
37
35
|
rule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EARuleInfoInline.d.ts","sourceRoot":"","sources":["../../../../../src/components/Recommendations/EARules/EARuleInfoInline.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EARuleInfoInline.d.ts","sourceRoot":"","sources":["../../../../../src/components/Recommendations/EARules/EARuleInfoInline.tsx"],"names":[],"mappings":"AAUA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAM/D,OAAO,EAAE,aAAa,EAAkD,MAAM,gCAAgC,CAAC;AAO/G,UAAU,MAAM;IACZ,OAAO,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAAE,OAAY,EAAE,EAAE,MAAM,qBAwJxD"}
|
|
@@ -14,7 +14,7 @@ import CloseIcon from '@patternfly/react-icons/dist/js/icons/close-icon';
|
|
|
14
14
|
import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
|
|
15
15
|
import { PaginationCompact, useFetch } from '@rh-support/components';
|
|
16
16
|
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
17
|
-
import {
|
|
17
|
+
import { getResTypeFromUrl, getStyleVariantColor, StyleVariants } from '@rh-support/utils';
|
|
18
18
|
import isEqual from 'lodash/isEqual';
|
|
19
19
|
import some from 'lodash/some';
|
|
20
20
|
import React, { useContext, useEffect, useState } from 'react';
|
|
@@ -102,7 +102,7 @@ export function EARuleInfoInline({ eaRules = [] }) {
|
|
|
102
102
|
React.createElement(EARuleTitle, null))),
|
|
103
103
|
React.createElement("div", { className: "pf-v5-c-alert__action" },
|
|
104
104
|
React.createElement(Button, { style: { fontSize: 15 }, variant: ButtonVariant.link, "data-tracking-id": "se-recommended-asa-ignore", type: "button", onClick: onIgnoreBtnClick }, validEARulesLength > 1 ? React.createElement(Trans, null, "Skip") : React.createElement(CloseIcon, null))),
|
|
105
|
-
React.createElement("div", { className: "pf-v5-c-alert__description"
|
|
105
|
+
React.createElement("div", { className: "pf-v5-c-alert__description" },
|
|
106
106
|
React.createElement(EARuleDescription, null)),
|
|
107
107
|
React.createElement("div", { className: "pf-v5-c-alert__action-group pf-v5-u-display-flex" },
|
|
108
108
|
React.createElement(EARuleArticle, { className: "pf-v5-u-align-self-center pf-v5-u-mr-sm", linkTitle: "View details" }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Recommendations.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/Recommendations.tsx"],"names":[],"mappings":"
|
|
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;IACzE,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAChD,aAAa,EAAE,GAAG,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBA+SpD"}
|
|
@@ -2,7 +2,7 @@ import { pcm } from '@cee-eng/hydrajs';
|
|
|
2
2
|
import { Label, Pagination, PaginationVariant } from '@patternfly/react-core';
|
|
3
3
|
import { LoadingDots, useDebounce, usePrevious } from '@rh-support/components';
|
|
4
4
|
import { useGlobalStateContext } from '@rh-support/react-context';
|
|
5
|
-
import { computeRecommendationAbstract, computeRecommendationTitle,
|
|
5
|
+
import { computeRecommendationAbstract, computeRecommendationTitle, dtmTrackEventRecommendationListingDisplayed, dtmTrackEventRecommendationListingItemClicked, formatDate, } from '@rh-support/utils';
|
|
6
6
|
import differenceBy from 'lodash/differenceBy';
|
|
7
7
|
import isEmpty from 'lodash/isEmpty';
|
|
8
8
|
import isEqual from 'lodash/isEqual';
|
|
@@ -121,6 +121,18 @@ export default function Recommendations(props) {
|
|
|
121
121
|
setCaseRecommendations(caseDispatch, recommendationState.visibleDocs, caseResourceLinks);
|
|
122
122
|
}
|
|
123
123
|
createOrUpdateSessionResources(sessionRestoreDispatch, activeSessionId, sessionResourceTracking, SessionResourceSource.RECOMMENDATIONS, getSessResFromRecs(recommendationState.visibleDocs, SessionResourceVisibility.PRESENTED, pageSize || DEFAULTPAGESIZE, recommendationState.currentPage || 1), JSON.stringify(payload));
|
|
124
|
+
const listing = recommendationState.visibleDocs.map((doc, i) => ({
|
|
125
|
+
content: {
|
|
126
|
+
contentID: doc.id,
|
|
127
|
+
contentPosition: i + 1,
|
|
128
|
+
contentTitle: doc.publishedTitle,
|
|
129
|
+
contentUrl: doc.view_uri,
|
|
130
|
+
displayFeature: 'Troubleshooting',
|
|
131
|
+
displayFeatureTitle: '',
|
|
132
|
+
},
|
|
133
|
+
isDisplayed: true,
|
|
134
|
+
}));
|
|
135
|
+
dtmTrackEventRecommendationListingDisplayed('middle', activeSection, listing, recommendationState.numFound);
|
|
124
136
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
125
137
|
}, [caseDispatch, recommendationState.visibleDocs, activeSessionId]);
|
|
126
138
|
useEffect(() => {
|
|
@@ -145,10 +157,9 @@ export default function Recommendations(props) {
|
|
|
145
157
|
setCurrentPage(recommendationDispatch, 1);
|
|
146
158
|
};
|
|
147
159
|
const onResourceClick = (doc, index) => (event) => {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
dtmTrackEventCaseStartStopped('recommendation click', caseNumber, `${product}|${version}`);
|
|
160
|
+
const rank = index + 1 + (pageSize || DEFAULTPAGESIZE) * ((recommendationState.currentPage || 1) - 1);
|
|
161
|
+
createOrUpdateSessionResources(sessionRestoreDispatch, activeSessionId, sessionResourceTracking, SessionResourceSource.RECOMMENDATIONS, [getSessResFromRec(doc, SessionResourceVisibility.VISITED, rank)], JSON.stringify(payload));
|
|
162
|
+
dtmTrackEventRecommendationListingItemClicked(window.location.href, activeSection, 'middle', doc.id, rank, doc.allTitle, doc.view_uri, 'Main Recommendation', 'Live search results powered by OpenShift AI');
|
|
152
163
|
};
|
|
153
164
|
return (React.createElement(React.Fragment, null,
|
|
154
165
|
React.createElement(LoadingDots, { className: "recommendation-loading-dots", show: recommendationState.isLoadingRecommendations && !isEmpty(summary) && !isEmpty(issue) }),
|
|
@@ -168,11 +168,11 @@ export default function SubmitCase(props) {
|
|
|
168
168
|
React.createElement("div", { className: "submit-case-header-container" },
|
|
169
169
|
React.createElement("p", { className: "kicker kicker-sm pf-v5-u-mb-sm" }, !isEmpty(RouteUtils.seBasePath) &&
|
|
170
170
|
!isUploadingAttachment(attachmentState.caseFiles.selectedLocalFiles) ? (React.createElement(React.Fragment, null,
|
|
171
|
-
React.createElement("div", {
|
|
171
|
+
React.createElement("div", { className: "submit-page-title pf-v5-u-mb-lg" },
|
|
172
172
|
React.createElement(Icon, { className: "submit-case-check-icon pf-v5-u-mt-sm", size: "lg" },
|
|
173
173
|
React.createElement(CheckCircleIcon, null)),
|
|
174
174
|
' ',
|
|
175
|
-
React.createElement(Text, { className: "pf-v5-u-mb-0", component: TextVariants.h1 },
|
|
175
|
+
React.createElement(Text, { role: "alert", className: "pf-v5-u-mb-0", component: TextVariants.h1 },
|
|
176
176
|
React.createElement(Trans, null, "We've added your case to our queue"))),
|
|
177
177
|
React.createElement("div", { className: "pf-v5-u-mt-sm" },
|
|
178
178
|
React.createElement(Trans, null, "Case number:"),
|
|
@@ -184,7 +184,7 @@ export default function SubmitCase(props) {
|
|
|
184
184
|
React.createElement(Icon, { size: "lg", className: "submit-case-check-icon" },
|
|
185
185
|
React.createElement(CheckCircleIcon, null)),
|
|
186
186
|
' ',
|
|
187
|
-
React.createElement(Text, { component: TextVariants.h1 },
|
|
187
|
+
React.createElement(Text, { role: "alert", component: TextVariants.h1 },
|
|
188
188
|
React.createElement(Trans, null, "We\u2019ve added your case to our queue"))),
|
|
189
189
|
React.createElement(React.Fragment, null,
|
|
190
190
|
React.createElement(Trans, null, "Case number: "),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopContent.d.ts","sourceRoot":"","sources":["../../../../src/components/Suggestions/TopContent.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAC;
|
|
1
|
+
{"version":3,"file":"TopContent.d.ts","sourceRoot":"","sources":["../../../../src/components/Suggestions/TopContent.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAC;AAIxF,OAAO,KAAmB,MAAM,OAAO,CAAC;AASxC,UAAU,MAAM;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,MAAM,qBA8I/C"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { pcm } from '@cee-eng/hydrajs';
|
|
2
2
|
import { Accordion, AccordionContent, AccordionItem, AccordionToggle, Tooltip } from '@patternfly/react-core';
|
|
3
|
-
import { dtmTrackEventCaseStartStopped } from '@rh-support/utils';
|
|
4
3
|
import isEqual from 'lodash/isEqual';
|
|
5
4
|
import map from 'lodash/map';
|
|
6
5
|
import React, { useState } from 'react';
|
|
@@ -14,7 +13,7 @@ export default function TopContent(props) {
|
|
|
14
13
|
const sessionRestoreDispatch = React.useContext(SessionRestoreDispatchContext);
|
|
15
14
|
const { sessionRestore: { activeSessionId, sessionResourceTracking }, } = React.useContext(SessionRestoreStateContext);
|
|
16
15
|
const [expanded, setExpanded] = useState('');
|
|
17
|
-
const { product, version, summary, issue, environment, periodicityOfIssue, timeFramesAndUrgency
|
|
16
|
+
const { product, version, summary, issue, environment, periodicityOfIssue, timeFramesAndUrgency } = useCaseSelector((state) => ({
|
|
18
17
|
product: state.caseDetails.product,
|
|
19
18
|
version: state.caseDetails.version,
|
|
20
19
|
summary: state.caseDetails.summary,
|
|
@@ -22,11 +21,9 @@ export default function TopContent(props) {
|
|
|
22
21
|
environment: state.caseDetails.environment,
|
|
23
22
|
periodicityOfIssue: state.caseDetails.periodicityOfIssue,
|
|
24
23
|
timeFramesAndUrgency: state.caseDetails.timeFramesAndUrgency,
|
|
25
|
-
caseNumber: state.caseDetails.caseNumber,
|
|
26
24
|
}), isEqual);
|
|
27
25
|
const onLinkClick = (item) => (event) => {
|
|
28
26
|
props.onResourceClick && props.onResourceClick(item);
|
|
29
|
-
dtmTrackEventCaseStartStopped('top content click', caseNumber, `${product}|${version}`);
|
|
30
27
|
};
|
|
31
28
|
const onToggle = (id) => {
|
|
32
29
|
if (id === expanded) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IDClassNameProps } from '@rh-support/types/shared';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
interface
|
|
3
|
+
export interface IWidgetFileSelectorProps extends IDClassNameProps {
|
|
4
4
|
isSessionId: boolean;
|
|
5
5
|
isPrivate: boolean;
|
|
6
6
|
isIdea?: boolean;
|
|
@@ -9,6 +9,6 @@ interface IProps extends IDClassNameProps {
|
|
|
9
9
|
fileName: string[];
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
-
declare function WidgetFileSelector({ id, className, isSessionId, isPrivate, isIdea, showFileExceed, }:
|
|
12
|
+
declare function WidgetFileSelector({ id, className, isSessionId, isPrivate, isIdea, showFileExceed, }: IWidgetFileSelectorProps): React.JSX.Element;
|
|
13
13
|
export default WidgetFileSelector;
|
|
14
14
|
//# sourceMappingURL=WidgetFileSelector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetFileSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/fileSelectors/WidgetFileSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetFileSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/fileSelectors/WidgetFileSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,KAAqB,MAAM,OAAO,CAAC;AAS1C,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAC9D,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE;QACb,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACL;AAED,iBAAS,kBAAkB,CAAC,EACxB,EAAO,EACP,SAAc,EACd,WAAW,EACX,SAAiB,EACjB,MAAc,EACd,cAA8C,GACjD,EAAE,wBAAwB,qBAsF1B;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import { humanizeSize } from '@rh-support/utils';
|
|
1
|
+
import { dtmTrackEventUploadFileToAnalyze, humanizeSize } from '@rh-support/utils';
|
|
2
|
+
import isEqual from 'lodash/isEqual';
|
|
2
3
|
import React, { useContext } from 'react';
|
|
3
4
|
import { useDropzone } from 'react-dropzone';
|
|
4
5
|
import { Trans, useTranslation } from 'react-i18next';
|
|
6
|
+
import { useCaseSelector } from '../../../../context/CaseContext';
|
|
7
|
+
import { RouteContext } from '../../../../context/RouteContext';
|
|
5
8
|
import { onDrop } from '../reducer/AttachmentHelper';
|
|
6
9
|
import { AttachmentDispatchContext } from '../reducer/AttachmentReducerContext';
|
|
7
10
|
function WidgetFileSelector({ id = '', className = '', isSessionId, isPrivate = false, isIdea = false, showFileExceed = { show: false, fileName: [] }, }) {
|
|
8
11
|
const { t } = useTranslation();
|
|
12
|
+
const { caseDetails } = useCaseSelector((state) => ({
|
|
13
|
+
caseDetails: state.caseDetails,
|
|
14
|
+
}), isEqual);
|
|
15
|
+
const { routeState: { activeSection, isCaseCreate }, } = useContext(RouteContext);
|
|
9
16
|
const MAX_SIZE = isIdea ? 5242880 : undefined;
|
|
10
17
|
// Attachment Reducer Related
|
|
11
18
|
const dispatchToAttachmentReducer = useContext(AttachmentDispatchContext);
|
|
@@ -23,6 +30,8 @@ function WidgetFileSelector({ id = '', className = '', isSessionId, isPrivate =
|
|
|
23
30
|
// react-dropzone doesn't get triggered. So we need to manually clear the input value
|
|
24
31
|
// so that user can attach the same file twice
|
|
25
32
|
inputRef.current.value = null;
|
|
33
|
+
// Call a dtm track even whenever the file uploader is clicked
|
|
34
|
+
dtmTrackEventUploadFileToAnalyze(isCaseCreate, activeSection, caseDetails.caseType, caseDetails.product, caseDetails.version);
|
|
26
35
|
};
|
|
27
36
|
return (React.createElement(React.Fragment, null,
|
|
28
37
|
React.createElement("label", Object.assign({ className: "file-diag-dragndrop", htmlFor: "file-diag-selector" }, getRootProps({ onClick: onLabelClick }), { "data-tracking-id": "file-selector-widget-main" }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardLayout.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardLayout.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WizardLayout.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardLayout.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAavG,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,qBA6KzC"}
|
|
@@ -11,7 +11,7 @@ import { Grid, GridItem } from '@patternfly/react-core';
|
|
|
11
11
|
import { SupportFeedbackForm } from '@rh-support/components';
|
|
12
12
|
import { fetchProducts, GlobalMetadataDispatchContext, GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
13
13
|
import { ability, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
14
|
-
import { getVersionIfOnlyVersion, pendoTrackEvent, PreviousCaseTypes } from '@rh-support/utils';
|
|
14
|
+
import { dtmTrackEventCaseCreationStepEncountered, getVersionIfOnlyVersion, pendoTrackEvent, PreviousCaseTypes, } from '@rh-support/utils';
|
|
15
15
|
import findIndex from 'lodash/findIndex';
|
|
16
16
|
import isEqual from 'lodash/isEqual';
|
|
17
17
|
import React, { useContext, useEffect, useRef, useState } from 'react';
|
|
@@ -80,6 +80,7 @@ export function WizardLayout(props) {
|
|
|
80
80
|
return isModalPresent;
|
|
81
81
|
};
|
|
82
82
|
const submitCaseAndNavigate = (isReSubmitting) => __awaiter(this, void 0, void 0, function* () {
|
|
83
|
+
var _a, _b;
|
|
83
84
|
confirmationModalType && setConfirmationModalType(null);
|
|
84
85
|
// if a confirmation modal exists, show it and don't submit the case as
|
|
85
86
|
// it will be handled by the confirmation modal itself
|
|
@@ -92,6 +93,8 @@ export function WizardLayout(props) {
|
|
|
92
93
|
React.createElement(SupportFeedbackForm, { isInline: true }),
|
|
93
94
|
" if you continue to see this message.")));
|
|
94
95
|
submitCase(caseDispatch, sessionRestoreDispatch, caseState, sessionItem, isCaseCreate, errorMessageCaseSubmit500, loggedInUser.data.ssoUsername, loggedInUsersAccount === null || loggedInUsersAccount === void 0 ? void 0 : loggedInUsersAccount.data.secureSupport, isReSubmitting || false);
|
|
96
|
+
const isCreatingCaseFlow = RouteUtils.getQueryParams(props.routeProps).caseCreate === 'true';
|
|
97
|
+
dtmTrackEventCaseCreationStepEncountered(isCreatingCaseFlow, 'submit', (_a = caseState.caseDetails) === null || _a === void 0 ? void 0 : _a.caseNumber, (_b = caseState.caseDetails) === null || _b === void 0 ? void 0 : _b.caseType, caseState.caseDetails.summary, caseState.caseDetails.product, caseState.caseDetails.version);
|
|
95
98
|
// reset viewedModals on case submit
|
|
96
99
|
viewedConfirmationModalsList.current = [];
|
|
97
100
|
!isReSubmitting &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardMain.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardMain.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WizardMain.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardMain.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,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,qBA2IhC;AACD,eAAe,UAAU,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Wizard, WizardContextConsumer, WizardFooter } from '@patternfly/react-core/deprecated';
|
|
2
2
|
import { LoadingIndicator } from '@rh-support/components';
|
|
3
|
+
import { dtmTrackEventCaseCreationStepEncountered } from '@rh-support/utils';
|
|
3
4
|
import isEqual from 'lodash/isEqual';
|
|
4
5
|
import React, { Suspense, useContext, useRef, useState } from 'react';
|
|
5
6
|
import { useTranslation } from 'react-i18next';
|
|
@@ -57,6 +58,10 @@ function WizardMain(props) {
|
|
|
57
58
|
return;
|
|
58
59
|
};
|
|
59
60
|
const onCurrentStepChanged = (step) => {
|
|
61
|
+
if (step.order === 0) {
|
|
62
|
+
const isCreatingCaseFlow = RouteUtils.getQueryParams(props.routeProps).caseCreate === 'true';
|
|
63
|
+
dtmTrackEventCaseCreationStepEncountered(isCreatingCaseFlow, 'start');
|
|
64
|
+
}
|
|
60
65
|
setActiveSectionChanged(dispatchToRouteReducer, step.id);
|
|
61
66
|
updateisNextBtnClickedToShowValidationError(dispatchToRouteReducer, false);
|
|
62
67
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,EAAoB,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,EAAoB,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAM3G,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mBAAmB,EAAE,CAAC,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC5E,kCAAkC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACpF,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAChD,gCAAgC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACxE;AAGD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBA6PtC;kBA7PQ,gBAAgB;;;AA+PzB,eAAe,gBAAgB,CAAC"}
|
|
@@ -11,7 +11,7 @@ import { pcm } from '@cee-eng/hydrajs';
|
|
|
11
11
|
import { Button, ButtonVariant } from '@patternfly/react-core';
|
|
12
12
|
import { useFetch } from '@rh-support/components';
|
|
13
13
|
import { GlobalMetadataStateContext, useCanCreateCase } from '@rh-support/react-context';
|
|
14
|
-
import {
|
|
14
|
+
import { dtmTrackEventCaseCreationStepEncountered, getResTypeFromUrl, scrollIntoView } from '@rh-support/utils';
|
|
15
15
|
import find from 'lodash/find';
|
|
16
16
|
import isEqual from 'lodash/isEqual';
|
|
17
17
|
import React, { useContext, useEffect, useState } from 'react';
|
|
@@ -23,6 +23,7 @@ import { SessionRestoreStateContext } from '../../context/SessionRestoreContext'
|
|
|
23
23
|
import { setCaseState } from '../../reducers/CaseReducer';
|
|
24
24
|
import { AppRouteSections } from '../../reducers/RouteConstNTypes';
|
|
25
25
|
import { updateisNextBtnClickedToShowValidationError } from '../../reducers/RouteReducer';
|
|
26
|
+
import RouteUtils from '../../utils/routeUtils';
|
|
26
27
|
import { RecommendationFeedbackModal } from '../Recommendations/RecommendationFeedbackModal';
|
|
27
28
|
import { useIsSectionValid } from '../shared/useIsSectionValid';
|
|
28
29
|
const defaultProps = {};
|
|
@@ -56,6 +57,11 @@ function WizardNavigation(props) {
|
|
|
56
57
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
57
58
|
}, []);
|
|
58
59
|
useEffect(() => {
|
|
60
|
+
var _a, _b;
|
|
61
|
+
const isCreatingCase = RouteUtils.getQueryParams(props.routeProps).caseCreate === 'true';
|
|
62
|
+
dtmTrackEventCaseCreationStepEncountered(isCreatingCase,
|
|
63
|
+
// @ts-ignore
|
|
64
|
+
props.activeStep.id, (_a = caseState.caseDetails) === null || _a === void 0 ? void 0 : _a.caseNumber, (_b = caseState.caseDetails) === null || _b === void 0 ? void 0 : _b.caseType, caseState.caseDetails.summary, caseState.caseDetails.product, caseState.caseDetails.version);
|
|
59
65
|
if (props.activeStep.id === AppRouteSections.TROUBLESHOOT) {
|
|
60
66
|
window.scrollTo({
|
|
61
67
|
top: 0,
|
|
@@ -146,13 +152,11 @@ function WizardNavigation(props) {
|
|
|
146
152
|
props.onNext && props.onNext();
|
|
147
153
|
}
|
|
148
154
|
}
|
|
149
|
-
dtmTrackEventCaseStartStopped(`${props.activeStep.nextButtonLabel} button clicked on ${props.activeStep.name} step`, `${caseState.caseDetails.caseNumber}`, `${caseState.caseDetails.product}|${caseState.caseDetails.version}`);
|
|
150
155
|
return;
|
|
151
156
|
};
|
|
152
157
|
const onBack = () => {
|
|
153
158
|
if (props.activeStep.hidRestOnBack)
|
|
154
159
|
props.onShowRestUpdate(false);
|
|
155
|
-
dtmTrackEventCaseStartStopped(`${props.activeStep.nextButtonLabel} button clicked on ${props.activeStep.name} step`, '', `${caseState.caseDetails.product}|${caseState.caseDetails.version}`);
|
|
156
160
|
props.onBack();
|
|
157
161
|
};
|
|
158
162
|
const onRecsFeedbackModalToggle = () => {
|
package/lib/esm/scss/_main.scss
CHANGED
|
@@ -1009,7 +1009,8 @@ svg.pf-v5-u-ml-xs.icon-size {
|
|
|
1009
1009
|
}
|
|
1010
1010
|
|
|
1011
1011
|
.case-internal-status-selector-text,
|
|
1012
|
-
.get-support-severity-modal-text
|
|
1012
|
+
.get-support-severity-modal-text,
|
|
1013
|
+
.case-type-selector-text {
|
|
1013
1014
|
.pf-v5-c-menu-toggle__text {
|
|
1014
1015
|
width: 100%;
|
|
1015
1016
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/troubleshoot",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.5-beta.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"lib/**/*"
|
|
26
26
|
],
|
|
27
27
|
"peerDependencies": {
|
|
28
|
-
"@cee-eng/hydrajs": "4.17.
|
|
28
|
+
"@cee-eng/hydrajs": "4.17.27",
|
|
29
29
|
"@cee-eng/ui-toolkit": "1.1.8",
|
|
30
30
|
"@patternfly/patternfly": "5.4.0",
|
|
31
31
|
"@patternfly/react-core": "5.4.0",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"react-virtualized": "^9.22.5"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@cee-eng/hydrajs": "4.17.
|
|
54
|
+
"@cee-eng/hydrajs": "4.17.27",
|
|
55
55
|
"@cee-eng/ui-toolkit": "1.1.8",
|
|
56
56
|
"@patternfly/patternfly": "5.4.0",
|
|
57
57
|
"@patternfly/react-core": "5.4.0",
|
|
@@ -60,13 +60,12 @@
|
|
|
60
60
|
"@progress/kendo-licensing": "1.3.5",
|
|
61
61
|
"@progress/kendo-react-pdf": "^5.16.0",
|
|
62
62
|
"@redux-devtools/extension": "^3.3.0",
|
|
63
|
-
"@rh-support/components": "2.1.
|
|
64
|
-
"@rh-support/react-context": "2.1.
|
|
63
|
+
"@rh-support/components": "2.1.93",
|
|
64
|
+
"@rh-support/react-context": "2.1.102",
|
|
65
65
|
"@rh-support/types": "2.0.5",
|
|
66
|
-
"@rh-support/user-permissions": "2.1.
|
|
67
|
-
"@rh-support/utils": "2.1.
|
|
68
|
-
"
|
|
69
|
-
"@types/redux": "^3.6.0",
|
|
66
|
+
"@rh-support/user-permissions": "2.1.57",
|
|
67
|
+
"@rh-support/utils": "2.1.46",
|
|
68
|
+
"date-fns": "^4.1.0",
|
|
70
69
|
"dompurify": "^2.2.6",
|
|
71
70
|
"dot": "^1.1.3",
|
|
72
71
|
"downshift": "^6.0.5",
|
|
@@ -104,7 +103,9 @@
|
|
|
104
103
|
"@types/react": "^18.2.20",
|
|
105
104
|
"@types/react-bootstrap-typeahead": "^5.1.3",
|
|
106
105
|
"@types/react-dom": "^18.2.18",
|
|
106
|
+
"@types/react-redux": "^7.1.33",
|
|
107
107
|
"@types/react-router-dom": "^5.1.2",
|
|
108
|
+
"@types/redux": "^3.6.0",
|
|
108
109
|
"faker": "^5.5.3",
|
|
109
110
|
"jest": "^29.7.0",
|
|
110
111
|
"jest-environment-jsdom": "^29.7.0"
|
|
@@ -133,5 +134,5 @@
|
|
|
133
134
|
"defaults and supports es6-module",
|
|
134
135
|
"maintained node versions"
|
|
135
136
|
],
|
|
136
|
-
"gitHead": "
|
|
137
|
+
"gitHead": "91b8d4959b93c0227d070e881682d84d6d4eeac1"
|
|
137
138
|
}
|