@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.
Files changed (49) hide show
  1. package/lib/esm/components/CaseEditView/CaseDetailsTabs.js +2 -2
  2. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.d.ts.map +1 -1
  3. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.js +18 -4
  4. package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
  5. package/lib/esm/components/CaseEditView/CaseOverview/index.js +2 -2
  6. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.d.ts.map +1 -1
  7. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.js +4 -2
  8. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.d.ts.map +1 -1
  9. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.js +2 -1
  10. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts.map +1 -1
  11. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.js +6 -4
  12. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.d.ts.map +1 -1
  13. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.js +3 -2
  14. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
  15. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +4 -1
  16. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +95 -21
  17. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts.map +1 -1
  18. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.js +269 -137
  19. package/lib/esm/components/CaseInformation/Fts.d.ts.map +1 -1
  20. package/lib/esm/components/CaseInformation/Fts.js +6 -5
  21. package/lib/esm/components/CaseManagement/Cep.d.ts.map +1 -1
  22. package/lib/esm/components/CaseManagement/Cep.js +3 -2
  23. package/lib/esm/components/CaseManagement/RHAssociatesSelector.d.ts.map +1 -1
  24. package/lib/esm/components/CaseManagement/RHAssociatesSelector.js +11 -5
  25. package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.d.ts.map +1 -1
  26. package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +11 -5
  27. package/lib/esm/components/Recommendations/AsideResults.d.ts.map +1 -1
  28. package/lib/esm/components/Recommendations/AsideResults.js +3 -1
  29. package/lib/esm/components/Recommendations/EARules/EARule.d.ts.map +1 -1
  30. package/lib/esm/components/Recommendations/EARules/EARule.js +0 -2
  31. package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.d.ts.map +1 -1
  32. package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.js +2 -2
  33. package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
  34. package/lib/esm/components/Recommendations/Recommendations.js +16 -5
  35. package/lib/esm/components/SubmitCase/SubmitCase.js +3 -3
  36. package/lib/esm/components/Suggestions/TopContent.d.ts.map +1 -1
  37. package/lib/esm/components/Suggestions/TopContent.js +1 -4
  38. package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.d.ts +2 -2
  39. package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.d.ts.map +1 -1
  40. package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.js +10 -1
  41. package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
  42. package/lib/esm/components/wizardLayout/WizardLayout.js +4 -1
  43. package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
  44. package/lib/esm/components/wizardLayout/WizardMain.js +5 -0
  45. package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
  46. package/lib/esm/components/wizardLayout/WizardNavigation.js +7 -3
  47. package/lib/esm/scss/_main.scss +2 -1
  48. package/lib/esm/scss/_pf-overrides.scss +6 -0
  49. 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 = (selectedContacts) => __awaiter(this, void 0, void 0, function* () {
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":"AAuBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAgBvE,MAAM,WAAW,MAAM;CAAG;AAG1B,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBAmbzC;AAED,eAAe,mBAAmB,CAAC"}
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":"AAeA,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,qBA6LzC"}
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":"AAKA,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,qBAqClD;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
+ {"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":"AAeA,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,qBAiKxD"}
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 { dtmTrackEventCaseStartStopped, getResTypeFromUrl, getStyleVariantColor, StyleVariants, } from '@rh-support/utils';
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", onClick: () => dtmTrackEventCaseStartStopped('insight rule description click', undefined, `${product}|${version}`) },
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":"AAkBA,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,qBA0RpD"}
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, dtmTrackEventCaseStartStopped, formatDate, } from '@rh-support/utils';
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
- createOrUpdateSessionResources(sessionRestoreDispatch, activeSessionId, sessionResourceTracking, SessionResourceSource.RECOMMENDATIONS, [
149
- getSessResFromRec(doc, SessionResourceVisibility.VISITED, index + 1 + (pageSize || DEFAULTPAGESIZE) * ((recommendationState.currentPage || 1) - 1)),
150
- ], JSON.stringify(payload));
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", { role: "alert", className: "submit-page-title pf-v5-u-mb-lg" },
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;AAKxF,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,qBAiJ/C"}
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, caseNumber } = useCaseSelector((state) => ({
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 IProps extends IDClassNameProps {
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, }: IProps): React.JSX.Element;
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;AAE5D,OAAO,KAAqB,MAAM,OAAO,CAAC;AAO1C,UAAU,MAAO,SAAQ,gBAAgB;IACrC,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,MAAM,qBAmER;AAED,eAAe,kBAAkB,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":"AAOA,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,qBAkKzC"}
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":"AAGA,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,qBAsIhC;AACD,eAAe,UAAU,CAAC"}
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;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;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,qBA4PtC;kBA5PQ,gBAAgB;;;AA8PzB,eAAe,gBAAgB,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 { dtmTrackEventCaseStartStopped, getResTypeFromUrl, scrollIntoView } from '@rh-support/utils';
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 = () => {
@@ -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
  }
@@ -784,3 +784,9 @@ div.case-details-tabs pre {
784
784
  .get-support-summary-input {
785
785
  margin-bottom: 1rem;
786
786
  }
787
+
788
+ #external-ssousername-filter {
789
+ @media (min-width: 1300px) {
790
+ min-width: calc(100% + 269px) !important;
791
+ }
792
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/troubleshoot",
3
- "version": "2.2.1851-beta.0",
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.26",
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.26",
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.87",
64
- "@rh-support/react-context": "2.1.96",
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.52",
67
- "@rh-support/utils": "2.1.41",
68
- "@types/react-redux": "^7.1.33",
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": "e2ed8208ac54c78869cec471e83703bdc3bcf2ce"
137
+ "gitHead": "91b8d4959b93c0227d070e881682d84d6d4eeac1"
137
138
  }