@rh-support/troubleshoot 2.3.0-alpha.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 (58) hide show
  1. package/lib/esm/components/AccountInfo/OwnerSelector.d.ts.map +1 -1
  2. package/lib/esm/components/AccountInfo/OwnerSelector.js +1 -1
  3. package/lib/esm/components/CaseEditView/CaseDetailsTabs.js +2 -2
  4. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.d.ts.map +1 -1
  5. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.js +18 -4
  6. package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
  7. package/lib/esm/components/CaseEditView/CaseOverview/index.js +2 -2
  8. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.d.ts.map +1 -1
  9. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.js +4 -2
  10. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.d.ts.map +1 -1
  11. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.js +2 -1
  12. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts.map +1 -1
  13. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.js +6 -4
  14. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.d.ts.map +1 -1
  15. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.js +3 -2
  16. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
  17. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +4 -1
  18. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +95 -21
  19. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts.map +1 -1
  20. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.js +269 -137
  21. package/lib/esm/components/CaseInformation/Fts.d.ts.map +1 -1
  22. package/lib/esm/components/CaseInformation/Fts.js +6 -5
  23. package/lib/esm/components/CaseManagement/Cep.d.ts.map +1 -1
  24. package/lib/esm/components/CaseManagement/Cep.js +3 -2
  25. package/lib/esm/components/CaseManagement/RHAssociatesSelector.d.ts.map +1 -1
  26. package/lib/esm/components/CaseManagement/RHAssociatesSelector.js +11 -5
  27. package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.d.ts.map +1 -1
  28. package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +11 -5
  29. package/lib/esm/components/Recommendations/AsideResults.d.ts.map +1 -1
  30. package/lib/esm/components/Recommendations/AsideResults.js +3 -1
  31. package/lib/esm/components/Recommendations/EARules/EARule.d.ts.map +1 -1
  32. package/lib/esm/components/Recommendations/EARules/EARule.js +0 -2
  33. package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.d.ts.map +1 -1
  34. package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.js +2 -2
  35. package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
  36. package/lib/esm/components/Recommendations/Recommendations.js +19 -8
  37. package/lib/esm/components/SubmitCase/SubmitCase.js +3 -3
  38. package/lib/esm/components/Suggestions/TopContent.d.ts.map +1 -1
  39. package/lib/esm/components/Suggestions/TopContent.js +1 -4
  40. package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.d.ts +2 -2
  41. package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.d.ts.map +1 -1
  42. package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.js +10 -1
  43. package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
  44. package/lib/esm/components/wizardLayout/WizardLayout.js +4 -1
  45. package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
  46. package/lib/esm/components/wizardLayout/WizardMain.js +5 -0
  47. package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
  48. package/lib/esm/components/wizardLayout/WizardNavigation.js +35 -25
  49. package/lib/esm/hooks/useWizard.js +1 -1
  50. package/lib/esm/reducers/CaseReducer.d.ts +1 -1
  51. package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
  52. package/lib/esm/reducers/CaseReducer.js +13 -9
  53. package/lib/esm/reducers/SessionRestoreReducer.d.ts +1 -1
  54. package/lib/esm/reducers/SessionRestoreReducer.d.ts.map +1 -1
  55. package/lib/esm/reducers/SessionRestoreReducer.js +14 -121
  56. package/lib/esm/scss/_main.scss +2 -1
  57. package/lib/esm/scss/_pf-overrides.scss +6 -0
  58. package/package.json +11 -12
@@ -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';
@@ -85,7 +85,7 @@ export default function Recommendations(props) {
85
85
  // recreate a new AbortController for each call
86
86
  let controller = new AbortController();
87
87
  abortControllerRef.current = controller;
88
- if (!isEmpty(issue)) {
88
+ if (!isEmpty(issue) || !isEmpty(summary)) {
89
89
  !loggedInUsersAccount.data.secureSupport
90
90
  ? fetchWatsonXRecommendations(recommendationDispatch, payload, MAXROW, recPageSize, 0, true, queryFilters, controller.signal)
91
91
  : fetchRecommendations(recommendationDispatch, payload, MAXROW, recPageSize, 0, true, caseNumber, isSecureSupportAccount, queryFilters, controller.signal);
@@ -106,9 +106,9 @@ export default function Recommendations(props) {
106
106
  recommendationState.insightsKcsIds,
107
107
  ], 1000);
108
108
  useEffect(() => {
109
- props.userSeenRecommendations && props.userSeenRecommendations(!recommendationState.isLoadingRecommendations);
109
+ props.userSeenRecommendations && props.userSeenRecommendations(!recommendationState.isLoadingRecommendations); //reset userSeenRecommendations when recommendationState changes
110
110
  // eslint-disable-next-line react-hooks/exhaustive-deps
111
- }, [recommendationState]);
111
+ }, [recommendationState.numFound]);
112
112
  useEffect(() => {
113
113
  if (recommendationState.isLoadingRecommendations)
114
114
  return;
@@ -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,qBA4OtC;kBA5OQ,gBAAgB;;;AA8OzB,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,
@@ -70,16 +76,30 @@ function WizardNavigation(props) {
70
76
  return;
71
77
  }
72
78
  const observer = new IntersectionObserver(([entry]) => {
73
- if (entry.isIntersecting) {
74
- setHasUserScrolled(true);
79
+ // future debugging needs if resolution issue occurs
80
+ // console.log('Intersection status:', entry.isIntersecting);
81
+ // console.log('Intersection ratio:', entry.intersectionRatio);
82
+ // console.log({ hasUserScrolled });
83
+ const boundingRect = entry.boundingClientRect;
84
+ const isScrollingUp = boundingRect.top > 0;
85
+ const isAboveThreshold = entry.intersectionRatio >= 0.3;
86
+ isAboveThreshold && props.setUserCanNavigateToTroubleshoot(true);
87
+ isAboveThreshold && props.setUserSeenRecommendations(true);
88
+ // If scrolling up, always use the threshold check
89
+ if (isScrollingUp) {
90
+ setHasUserScrolled(isAboveThreshold);
91
+ props.setUserScrolledLabel(isAboveThreshold);
92
+ return;
93
+ }
94
+ // If scrolling down and we hit the threshold, set to true
95
+ if (isAboveThreshold) {
75
96
  props.setUserScrolledLabel(true);
76
- if (props.userClickedNextonRecommendationsFn) {
77
- props.userClickedNextonRecommendationsFn(true);
78
- }
97
+ props.userClickedNextonRecommendationsFn && props.userClickedNextonRecommendationsFn(true);
79
98
  }
80
99
  }, {
81
100
  root: null,
82
- threshold: 0.6, // trigger when 60% of element in view
101
+ threshold: [0, 0.3], // Changing threshold value to have its effect on pagination when page size is more than 10.
102
+ rootMargin: '0px',
83
103
  });
84
104
  const resultsRowElement = props.resultsRowRef.current;
85
105
  if (resultsRowElement) {
@@ -90,30 +110,22 @@ function WizardNavigation(props) {
90
110
  observer.unobserve(resultsRowElement);
91
111
  }
92
112
  };
93
- }, [recommendationState.numFound, setHasUserScrolled, props]);
113
+ }, [recommendationState.numFound, hasUserScrolled, props]);
94
114
  const onNext = () => {
95
115
  var _a;
96
116
  updateisNextBtnClickedToShowValidationError(dispatchToRouteReducer, true);
97
117
  //handle the new changes for 13406:
98
118
  if (props.activeStep.id === AppRouteSections.SUMMARIZE && recommendationState.numFound > 2) {
99
- if (!props.userClickedNextonRecommendationsValue) {
100
- if (!hasUserScrolled) {
101
- scrollIntoView(props.resultsRowRef, {
102
- navBarRef,
103
- timeout: 0,
104
- onlyIfNotInViewport: true,
105
- offset: 120,
106
- });
107
- }
119
+ if (!hasUserScrolled) {
120
+ scrollIntoView(props.resultsRowRef, {
121
+ navBarRef,
122
+ timeout: 0,
123
+ onlyIfNotInViewport: true,
124
+ offset: 120,
125
+ });
108
126
  props.userClickedNextonRecommendationsFn && props.userClickedNextonRecommendationsFn(true);
109
127
  return;
110
128
  }
111
- else {
112
- props.setUserCanNavigateToTroubleshoot(true);
113
- }
114
- }
115
- else {
116
- props.setUserCanNavigateToTroubleshoot(true);
117
129
  }
118
130
  const userCanNotOpenCase = props.activeStep.id === AppRouteSections.TROUBLESHOOT && canCreateCase.alert();
119
131
  if (userCanNotOpenCase || !isSectionValidFn(props.activeStep.id))
@@ -140,13 +152,11 @@ function WizardNavigation(props) {
140
152
  props.onNext && props.onNext();
141
153
  }
142
154
  }
143
- dtmTrackEventCaseStartStopped(`${props.activeStep.nextButtonLabel} button clicked on ${props.activeStep.name} step`, `${caseState.caseDetails.caseNumber}`, `${caseState.caseDetails.product}|${caseState.caseDetails.version}`);
144
155
  return;
145
156
  };
146
157
  const onBack = () => {
147
158
  if (props.activeStep.hidRestOnBack)
148
159
  props.onShowRestUpdate(false);
149
- dtmTrackEventCaseStartStopped(`${props.activeStep.nextButtonLabel} button clicked on ${props.activeStep.name} step`, '', `${caseState.caseDetails.product}|${caseState.caseDetails.version}`);
150
160
  props.onBack();
151
161
  };
152
162
  const onRecsFeedbackModalToggle = () => {
@@ -50,7 +50,7 @@ export function useWizard(routeProps, props) {
50
50
  : AlertType.DANGER, isInline: true, title: title, className: "pf-v5-u-mb-lg", "data-tracking-id": isLoading ? 'wait-recommendations-loading' : 'proceed-address-errors' }));
51
51
  };
52
52
  let summarizeNextButtonLabelLogic = () => {
53
- return props.userClickedNextonRecommendationsValue || props.userScrolledLabel;
53
+ return props.userScrolledLabel;
54
54
  };
55
55
  // components that are used in wizard steps
56
56
  const appRouteConfugurations = {
@@ -36,7 +36,7 @@ export declare const deleteNotifiedUsers: (dispatch: CaseReducerDispatchType, ca
36
36
  export declare const addingNotifiedUsers: (dispatch: CaseReducerDispatchType, caseNumber: string, addedUsers: IContact[]) => Promise<void>;
37
37
  export declare const clearSelectedAccount: (dispatch: CaseReducerDispatchType) => void;
38
38
  export declare const setCaseAccountNumber: (dispatch: CaseReducerDispatchType, accountNumber: string, isLoggedInUsersAccount?: boolean, loggedInUserAccount?: Partial<IAccount>) => Promise<void>;
39
- export declare const setCaseOwner: (dispatch: CaseReducerDispatchType, owner: IContact, product: string, abortSignalCaseGroup?: AbortSignal, abortSignalEntitlements?: AbortSignal, setCaseGroupToUngroupedOrDefault?: boolean, caseGroupNumberToRestore?: string | undefined, canChangeGroup?: boolean) => Promise<void>;
39
+ export declare const setCaseOwner: (dispatch: CaseReducerDispatchType, owner: IContact, product: string, abortSignalCaseGroup?: AbortSignal, abortSignalEntitlements?: AbortSignal, setCaseGroupToUngroupedOrDefault?: boolean, caseGroupNumberToRestore?: string | undefined, canChangeGroup?: boolean, isUserUpdate?: boolean, caseNumber?: string) => Promise<void>;
40
40
  export declare const fetchCaseGroupsForSSO: (dispatch: CaseReducerDispatchType, contactSsoUsername: string, setCaseGroupToUngroupedOrDefault?: boolean, abortSignal?: AbortSignal, caseGroupNumberToRestore?: string | undefined) => Promise<void>;
41
41
  export declare const updateCaseWithSession: (dispatch: CaseReducerDispatchType, sessionItem: ISessionItem, loggedInUserAccountNumber: string, loggedInUserContact: IContact, loggedInUserAccount?: Partial<IAccount>) => Promise<void>;
42
42
  export declare const fetchCaseDetails: (dispatch: CaseReducerDispatchType, caseNumber: string, loggedInUserRights: any, loggedInUser: any) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"CaseReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseReducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CaseReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseReducer.ts"],"names":[],"mappings":"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"}