@rh-support/troubleshoot 2.6.107 → 2.6.118

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 (79) hide show
  1. package/lib/esm/components/AccountInfo/AccountSelector.js +1 -1
  2. package/lib/esm/components/AccountInfo/css/accountSelector.css +2 -3
  3. package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
  4. package/lib/esm/components/CaseEditView/Case.js +1 -1
  5. package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.d.ts.map +1 -1
  6. package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.js +1 -1
  7. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.d.ts.map +1 -1
  8. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.js +4 -2
  9. package/lib/esm/components/CaseEditView/CaseOverview/index.js +1 -1
  10. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenShiftPopover.js +1 -1
  11. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.d.ts.map +1 -1
  12. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.js +2 -4
  13. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
  14. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +1 -2
  15. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +33 -13
  16. package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.js +3 -3
  17. package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummaryErrorMessage.js +1 -1
  18. package/lib/esm/components/CaseInformation/Description.d.ts.map +1 -1
  19. package/lib/esm/components/CaseInformation/Description.js +3 -1
  20. package/lib/esm/components/CaseInformation/Severity.d.ts.map +1 -1
  21. package/lib/esm/components/CaseInformation/Severity.js +1 -1
  22. package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
  23. package/lib/esm/components/CaseInformation/SupportLevel.js +1 -1
  24. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts.map +1 -1
  25. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.js +6 -12
  26. package/lib/esm/components/OpenCase/OpenCase.d.ts.map +1 -1
  27. package/lib/esm/components/OpenCase/OpenCase.js +2 -8
  28. package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts.map +1 -1
  29. package/lib/esm/components/ProductSelector/AllProductsSelector.js +6 -18
  30. package/lib/esm/components/ProductSelector/ProductSelector.d.ts.map +1 -1
  31. package/lib/esm/components/ProductSelector/ProductSelector.js +5 -12
  32. package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts +0 -2
  33. package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts.map +1 -1
  34. package/lib/esm/components/Recommendations/ClusterRecommendationItems.js +13 -16
  35. package/lib/esm/components/Recommendations/ClusterRecommendations.d.ts.map +1 -1
  36. package/lib/esm/components/Recommendations/ClusterRecommendations.js +4 -1
  37. package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
  38. package/lib/esm/components/Recommendations/Recommendations.js +38 -38
  39. package/lib/esm/components/RemoteRider/RemoteRiderAcceptanceModal.d.ts.map +1 -1
  40. package/lib/esm/components/Review/Review.d.ts.map +1 -1
  41. package/lib/esm/components/Review/Review.js +1 -5
  42. package/lib/esm/components/Suggestions/TopContentSidebar.d.ts +3 -0
  43. package/lib/esm/components/Suggestions/TopContentSidebar.d.ts.map +1 -0
  44. package/lib/esm/components/Suggestions/TopContentSidebar.js +26 -0
  45. package/lib/esm/components/TroubleshootSection/AskRedHat.js +1 -1
  46. package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts +9 -0
  47. package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts.map +1 -1
  48. package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +150 -44
  49. package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
  50. package/lib/esm/components/shared/useIsSectionValid.js +26 -65
  51. package/lib/esm/components/wizardLayout/WizardAside.d.ts.map +1 -1
  52. package/lib/esm/components/wizardLayout/WizardAside.js +18 -9
  53. package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
  54. package/lib/esm/components/wizardLayout/WizardMain.js +110 -64
  55. package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
  56. package/lib/esm/components/wizardLayout/WizardNavigation.js +59 -53
  57. package/lib/esm/css/AskRedHat.css +9 -2
  58. package/lib/esm/css/app.css +1 -1
  59. package/lib/esm/hooks/useAB.d.ts +22 -0
  60. package/lib/esm/hooks/useAB.d.ts.map +1 -0
  61. package/lib/esm/hooks/useAB.js +37 -0
  62. package/lib/esm/hooks/useWizard.d.ts +4 -0
  63. package/lib/esm/hooks/useWizard.d.ts.map +1 -1
  64. package/lib/esm/hooks/useWizard.js +20 -6
  65. package/lib/esm/reducers/AIResponseConstNTypes.d.ts +17 -2
  66. package/lib/esm/reducers/AIResponseConstNTypes.d.ts.map +1 -1
  67. package/lib/esm/reducers/AIResponseConstNTypes.js +3 -0
  68. package/lib/esm/reducers/AIResponseReducer.d.ts +2 -0
  69. package/lib/esm/reducers/AIResponseReducer.d.ts.map +1 -1
  70. package/lib/esm/reducers/AIResponseReducer.js +17 -0
  71. package/lib/esm/reducers/CaseConstNTypes.js +3 -3
  72. package/lib/esm/reducers/CaseDiscussionTabReducer.js +1 -1
  73. package/lib/esm/reducers/CaseHelpers.d.ts +1 -2
  74. package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
  75. package/lib/esm/reducers/CaseHelpers.js +1 -11
  76. package/lib/esm/reducers/RouteConstNTypes.d.ts.map +1 -1
  77. package/lib/esm/reducers/RouteConstNTypes.js +0 -1
  78. package/lib/esm/scss/_pf-overrides.scss +2 -23
  79. package/package.json +9 -7
@@ -79,7 +79,7 @@ function AccountSelector(props) {
79
79
  // When internal user wants to open a case for a customer but customer account doesn't have entitlement, we show an error
80
80
  useEffect(() => {
81
81
  const getAccountEntitlement = () => __awaiter(this, void 0, void 0, function* () {
82
- // internal user doesn't open case for customer. No need to check account entitlement
82
+ // internal user doesn't open case for customer. No need to check account entitlements
83
83
  if (selectedAccountDetails.data.accountNumber === loggedInUsersAccount.data.accountNumber) {
84
84
  setNoValidEntitlement(routeDispatch, false);
85
85
  setShowNotEntitledMessage(false);
@@ -2,12 +2,11 @@
2
2
  width: 100%;
3
3
  }
4
4
 
5
- .get-support-owner-wapper input,
6
- .margin-top.managed-account-selector .pf-c-select {
5
+ .get-support-owner-wapper input {
7
6
  min-height: 36px;
8
7
  }
9
8
 
10
- .margin-top.managed-account-selector .pf-c-select {
9
+ .margin-top.managed-account-selector {
11
10
  .pf-m-disabled {
12
11
  background-color: var(--pf-v5-global--disabled-color--300) !important;
13
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Case.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseEditView/Case.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAS,mBAAmB,EAAiD,MAAM,kBAAkB,CAAC;AAmB7G,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,KAAK,EAAE,MAAM,qBAiPzC"}
1
+ {"version":3,"file":"Case.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseEditView/Case.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAS,mBAAmB,EAAiD,MAAM,kBAAkB,CAAC;AAmB7G,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,KAAK,EAAE,MAAM,qBAgPzC"}
@@ -33,7 +33,7 @@ export default function Case(props) {
33
33
  const { t } = useTranslation();
34
34
  // The `path` lets us build <Route> paths that are
35
35
  // relative to the parent route, while the `url` lets
36
- //us build relative links.
36
+ // us build relative links.
37
37
  const { path, url } = useRouteMatch();
38
38
  const { caseNumber } = useParams();
39
39
  const queryParams = getUrlParsedParams(useLocation().search);
@@ -1 +1 @@
1
- {"version":3,"file":"CaseOwnerInfo.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseOverview/CaseOwnerInfo.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAI5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAqB,MAAM,OAAO,CAAC;AAK1C,UAAU,MAAM;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;CACzD;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAAK,EAAE,MAAM,qBAqElD"}
1
+ {"version":3,"file":"CaseOwnerInfo.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseOverview/CaseOwnerInfo.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAI5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAqB,MAAM,OAAO,CAAC;AAK1C,UAAU,MAAM;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;CACzD;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAAK,EAAE,MAAM,qBAiElD"}
@@ -46,5 +46,5 @@ export default function CaseOwnerInfo(props) {
46
46
  React.createElement(Trans, null, "Office location")),
47
47
  ": ",
48
48
  props.caseDetailsHydra.data.caseOwner.officeLocation)) },
49
- React.createElement(QuestionCircleIcon, { color: "#5e40be", className: "pf-v6-u-ml-xs icon-size", "aria-label": "Support Level Info" })))))));
49
+ React.createElement(QuestionCircleIcon, { className: "pf-v6-u-ml-xs icon-size", "aria-label": "Support Level Info" })))))));
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CaseType.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseOverview/CaseType.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,KAAoC,MAAM,OAAO,CAAC;AAOzD,UAAU,MAAO,SAAQ,gBAAgB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,GAAG,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAOD,iBAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,qBAmF9B;kBAnFQ,QAAQ;;;AAsFjB,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"CaseType.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseOverview/CaseType.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,KAAoC,MAAM,OAAO,CAAC;AAOzD,UAAU,MAAO,SAAQ,gBAAgB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,GAAG,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAOD,iBAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,qBAqF9B;kBArFQ,QAAQ;;;AAwFjB,eAAe,QAAQ,CAAC"}
@@ -25,6 +25,7 @@ function CaseType(props) {
25
25
  const [isCaseTypeInValid, setIsCaseTypeInValid] = useState(false);
26
26
  const { isExportingPDF } = useContext(PDFContext);
27
27
  const [isOpen, setIsOpen] = useState(false);
28
+ const [selected, setSelected] = useState(props.selectedType);
28
29
  const onToggleClick = () => {
29
30
  setIsOpen(!isOpen);
30
31
  };
@@ -32,7 +33,7 @@ function CaseType(props) {
32
33
  React.createElement(Flex, { justifyContent: { default: 'justifyContentSpaceBetween' } },
33
34
  React.createElement(FlexItem, null,
34
35
  " ",
35
- props.selectedType || t(`Select a category`)),
36
+ selected || t(`Select a category`)),
36
37
  React.createElement(FlexItem, null, props.isFetching ? React.createElement(Spinner, { size: "md" }) : ''))));
37
38
  const validateCaseType = (selectedItem) => {
38
39
  setIsCaseTypeInValid(isEmpty(selectedItem));
@@ -45,6 +46,7 @@ function CaseType(props) {
45
46
  setIsOpen(false);
46
47
  yield props.onTypeChange(switchedCaseType);
47
48
  setLocalTypeChange(true);
49
+ setSelected(option);
48
50
  validateCaseType(option);
49
51
  });
50
52
  // value changed logic to show a non local type change
@@ -55,7 +57,7 @@ function CaseType(props) {
55
57
  React.createElement(Trans, null, "Support type"),
56
58
  React.createElement(ValueChangedIcon, { afterLocalChange: afterLocalChange, isLocalChange: localTypeChange, value: props.selectedType, getTooltipContent: getChangedValueTooltip(() => CaseValuesToWatch.type) }),
57
59
  React.createElement("span", { className: `form-required ${isExportingPDF ? 'hide-in-pdf' : ''}`, "aria-hidden": true }, "*")),
58
- React.createElement(Select, { "data-tracking-id": "case-details-type-selector", isOpen: isOpen, selected: props.selectedType, onSelect: (event, val) => onCaseTypeChange(val), onOpenChange: (isOpen) => setIsOpen(isOpen), toggle: toggle, popperProps: { direction: 'down', enableFlip: false }, shouldFocusFirstItemOnOpen: false, shouldFocusToggleOnSelect: true },
60
+ React.createElement(Select, { "data-tracking-id": "case-details-type-selector", isOpen: isOpen, selected: selected, onSelect: (event, val) => onCaseTypeChange(val), onOpenChange: (isOpen) => setIsOpen(isOpen), toggle: toggle, popperProps: { direction: 'down', enableFlip: false }, shouldFocusFirstItemOnOpen: false, shouldFocusToggleOnSelect: true },
59
61
  React.createElement(SelectList, null, (props.allTypes || []).map((option) => (React.createElement(SelectOption, { value: option, key: option }, option)))))));
60
62
  }
61
63
  CaseType.defaultProps = defaultProps;
@@ -297,7 +297,7 @@ export default function CaseOverview(props) {
297
297
  React.createElement("div", { className: "form-wrapper" },
298
298
  React.createElement(CaseStatus, { selectedStatus: status, onStatusChange: onStatusChange, isDisabled: !canManageCase || caseOverviewState.allCaseStatuses.isFetching, allStatuses: caseOverviewState.allCaseStatuses.data, isFetching: caseOverviewState.caseStatusUpdating && isCaseUpdating, hasError: caseOverviewState.allCaseStatuses.isError })),
299
299
  React.createElement("div", { className: "form-wrapper" },
300
- React.createElement(CaseType, { selectedType: switchedCaseType, onTypeChange: onTypeChange, isDisabled: !canManageCase || allCaseTypes.isFetching || isCaseUpdating, allTypes: newCaseTypesArray, isFetching: caseOverviewState.caseTypeUpdating && isCaseUpdating, hasError: allCaseTypes.isError })),
300
+ React.createElement(CaseType, { selectedType: switchedCaseType, onTypeChange: onTypeChange, isDisabled: !canManageCase || allCaseTypes.isFetching, allTypes: newCaseTypesArray, isFetching: caseOverviewState.caseTypeUpdating && isCaseUpdating, hasError: allCaseTypes.isError })),
301
301
  React.createElement("div", { className: "form-wrapper" },
302
302
  React.createElement(Severity, { onSeverityChange: onSeverityChange, isDisabled: !canManageCase, isFetching: caseOverviewState.caseSeverityUpdating && isCaseUpdating })))),
303
303
  React.createElement(ExpandableSection, { className: "case-details-main", toggleText: t('Case information'), isExpanded: isDetailsExpanded, onToggle: onToggleDetails },
@@ -4,5 +4,5 @@ import React from 'react';
4
4
  import { Trans } from 'react-i18next';
5
5
  export default function CaseOpenShiftPopover() {
6
6
  return (React.createElement(Popover, { "aria-label": "Cluster Id Info", position: PopoverPosition.auto, bodyContent: React.createElement(Trans, null, "Cluster IDs give us the ability to use connected customer tools and services to debug your cluster in conjunction with this support case."), closeBtnAriaLabel: "Close" },
7
- React.createElement(QuestionCircleIcon, { color: "#5e40be", className: "pf-v6-u-ml-xs" })));
7
+ React.createElement(QuestionCircleIcon, { className: "pf-v6-u-ml-xs" })));
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProductVersion.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/ProductVersion.tsx"],"names":[],"mappings":"AAyCA,OAAO,KAAkD,MAAM,OAAO,CAAC;AASvE,UAAU,MAAM;IACZ,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,qBA4WrC;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"ProductVersion.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/ProductVersion.tsx"],"names":[],"mappings":"AAyCA,OAAO,KAAkD,MAAM,OAAO,CAAC;AASvE,UAAU,MAAM;IACZ,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,qBA0WrC;AAED,eAAe,eAAe,CAAC"}
@@ -32,13 +32,12 @@ function ProductNVersion(props) {
32
32
  const [isVersionUpdating, setIsVersionUpdating] = useState(false);
33
33
  const [isOpen, setIsOpen] = useState(false);
34
34
  const textInputRef = useRef();
35
- const { product, version, caseNumber, contactSSOName, versionsDetails, isCaseUpdating } = useCaseSelector((state) => ({
35
+ const { product, version, caseNumber, contactSSOName, versionsDetails } = useCaseSelector((state) => ({
36
36
  product: state.caseDetails.product,
37
37
  version: state.caseDetails.version,
38
38
  contactSSOName: state.caseDetails.contactSSOName,
39
39
  caseNumber: state.caseDetails.caseNumber,
40
40
  versionsDetails: state.versionsDetails,
41
- isCaseUpdating: state.isCaseUpdating,
42
41
  }), isEqual);
43
42
  const caseDispatch = useCaseDispatch();
44
43
  const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
@@ -252,7 +251,6 @@ function ProductNVersion(props) {
252
251
  React.createElement(Trans, null, "Version")),
253
252
  React.createElement(SingleSelectDropdown, { className: "open-case-version", id: "version-dropdown", placeholder: t(`Select a version`), selected: getVersionSelectedDropdownOption, options: getVersionDropdownOptions, isInvalid: checkIfVersionIsInvalid, isDisabled: isVersionUpdating ||
254
253
  (allProducts.isFetching && !allProducts.isError) ||
255
- isEmpty(selectedProductLocal) ||
256
- isCaseUpdating, onSelect: onVersionChange, isLoading: isVersionUpdating || (isSEProductApiIsDown && versionsDetails.isFetching), dataTrackingId: "case-details-version-selector", isScrollable: true }))))));
254
+ isEmpty(selectedProductLocal), onSelect: onVersionChange, isLoading: isVersionUpdating || (isSEProductApiIsDown && versionsDetails.isFetching), dataTrackingId: "case-details-version-selector", isScrollable: true }))))));
257
255
  }
258
256
  export default ProductNVersion;
@@ -1 +1 @@
1
- {"version":3,"file":"PostComment.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDiscussion/PostComment.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAwE,MAAM,OAAO,CAAC;AAQ7F,OAAO,EAAkB,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAsB5F,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,qBA+iBxC"}
1
+ {"version":3,"file":"PostComment.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDiscussion/PostComment.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAwE,MAAM,OAAO,CAAC;AAQ7F,OAAO,EAAkB,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAsB5F,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,qBA8iBxC"}
@@ -188,8 +188,7 @@ export function PostComment(props) {
188
188
  if (commentText) {
189
189
  try {
190
190
  setIsProcessing(true);
191
- const newCommentText = commentText.replace(/(^|\n)(-\s.+)(\n(?![-\s]))/g, '$1$2\n\n');
192
- yield request({ caseNumber, commentBody: newCommentText, isPublic, contentType: commentType });
191
+ yield request({ caseNumber, commentBody: commentText, isPublic, contentType: commentType });
193
192
  checkForCaseStatusToggleOnAttachOrComment(caseDispatch, loggedInUserRights.data.isInternal(), status);
194
193
  !isPublic && setIsPublic(true);
195
194
  addUserToNotifyList();
@@ -17,15 +17,13 @@
17
17
  }
18
18
 
19
19
  .right-node {
20
+ white-space: nowrap;
20
21
  overflow: hidden;
21
22
  text-overflow: ellipsis;
22
23
  width: 100%;
23
24
  }
24
-
25
25
  .content-date-right-history {
26
- display: -webkit-box;
27
- -webkit-line-clamp: 2;
28
- -webkit-box-orient: vertical;
26
+ white-space: nowrap;
29
27
  overflow: hidden;
30
28
  text-overflow: ellipsis;
31
29
  }
@@ -164,6 +162,7 @@
164
162
  text-align: right;
165
163
  line-height: 30px;
166
164
  white-space: nowrap;
165
+ overflow: hidden;
167
166
  }
168
167
 
169
168
  .content-date-right-history {
@@ -320,20 +319,41 @@ ul#case-history-paginated-timeline {
320
319
  }
321
320
  }
322
321
 
323
- @media screen and (max-width: 850px) {
324
- .contentTimeline {
325
- padding: 16px 8px;
322
+ .timeline-highlight {
323
+ background-color: #fff3cd;
324
+ padding: 0;
325
+ margin: 0;
326
+ border-radius: 2px;
327
+ }
328
+
329
+ @media screen and (max-width: 768px) {
330
+ .timeline::after {
331
+ left: 20px;
332
+ }
333
+
334
+ .timeline-node {
335
+ flex-direction: column;
326
336
  }
327
337
 
328
- .content-date-left-history {
329
- font-size: 15px;
338
+ .left-node,
339
+ .right-node {
340
+ max-width: 100%;
341
+ padding: 0;
330
342
  }
331
343
 
332
- .content-time-left-history {
333
- font-size: 13px;
344
+ .timeline-avatar,
345
+ .timeline-marker {
346
+ left: 0%;
347
+ transform: translateX(-50%);
334
348
  }
335
349
 
336
- .content-date-right-history {
337
- font-size: 14px;
350
+ .right-node::before {
351
+ left: 20px;
352
+ border-width: 10px 10px 10px 0;
353
+ border-color: transparent white transparent transparent;
354
+ }
355
+
356
+ .contentTimeline {
357
+ margin-left: 40px;
338
358
  }
339
359
  }
@@ -29,9 +29,9 @@ export const CaseSummary = (props) => {
29
29
  const [caseSummaryData, setCaseSummaryData] = useState(getApiResourceObject(null, true));
30
30
  const [caseSummaryState, setCaseSummaryState] = useState();
31
31
  const [errorMessage, setErrorMessage] = useState('');
32
- const { caseComments, caseLanguage } = useCaseSelector((state) => ({
33
- caseComments: state.caseDetails.comments,
32
+ const { caseLanguage, caseComments } = useCaseSelector((state) => ({
34
33
  caseLanguage: state.caseDetails.caseLanguage,
34
+ caseComments: state.caseDetails.comments,
35
35
  }), isEqual);
36
36
  const { globalMetadataState: { loggedInUserRights }, } = useContext(GlobalMetadataStateContext);
37
37
  const isInternal = (_b = (_a = loggedInUserRights === null || loggedInUserRights === void 0 ? void 0 : loggedInUserRights.data) === null || _a === void 0 ? void 0 : _a.isInternal) === null || _b === void 0 ? void 0 : _b.call(_a);
@@ -43,7 +43,7 @@ export const CaseSummary = (props) => {
43
43
  setIsFeedbackModalOpen(true);
44
44
  };
45
45
  useEffect(() => {
46
- if (caseLanguage === 'ru') {
46
+ if (caseLanguage !== 'en') {
47
47
  setCaseSummaryState(CaseSummaryStates.CASE_LANGUAGE_NOT_SUPPORTED);
48
48
  return;
49
49
  }
@@ -25,7 +25,7 @@ export function CaseSummaryErrorMessage(props) {
25
25
  'The AI is either currently unavailable or is processing case details or try reloading the page.';
26
26
  break;
27
27
  case 'case_language_not_supported':
28
- message = `The AI case summary is not available in this language. We're working on adding more languages soon.`;
28
+ message = `The AI case summary is available in English. We're working on adding more languages soon.`;
29
29
  break;
30
30
  case 'input_comments_too_large':
31
31
  message = `${shared} overall input comments text is too large.`;
@@ -1 +1 @@
1
- {"version":3,"file":"Description.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/Description.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAQ3D,UAAU,MAAM;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAK,EAAE,MAAM,qBAqKhD"}
1
+ {"version":3,"file":"Description.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/Description.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAS3D,UAAU,MAAM;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAK,EAAE,MAAM,qBAsKhD"}
@@ -7,11 +7,13 @@ import isEqual from 'lodash/isEqual';
7
7
  import React, { useEffect, useRef, useState } from 'react';
8
8
  import { Trans, useTranslation } from 'react-i18next';
9
9
  import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
10
+ import { useAB } from '../../hooks/useAB';
10
11
  import { CASE_DETAILS_ISSUE_LIMIT } from '../../reducers/CaseConstNTypes';
11
12
  import { getUpdatedDescription } from '../../reducers/CaseHelpers';
12
13
  import { setCaseDetails } from '../../reducers/CaseReducer';
13
14
  export default function Description(props) {
14
15
  const { t } = useTranslation();
16
+ const { isVariationA } = useAB();
15
17
  const { issue, environment, periodicityOfIssue, timeFramesAndUrgency, v3ClusterName, version, product, summary } = useCaseSelector((state) => ({
16
18
  description: state.caseDetails.description,
17
19
  issue: state.caseDetails.issue,
@@ -78,7 +80,7 @@ export default function Description(props) {
78
80
  isKT1Required && (React.createElement("span", { className: "form-required", "aria-hidden": true }, "*")),
79
81
  React.createElement(Popover, { isVisible: isOpen, shouldClose: handleClose, headerContent: headerPopoverContent, bodyContent: PopoverContent },
80
82
  React.createElement(OutlinedQuestionCircleIcon, { className: "pf-v6-u-ml-xs icon-size", onClick: handleToggle }))))), labelProps: { htmlFor: 'get-support-ktQ1-issue' }, content: issue, allowInlineEdit: !!props.inlineEditable, hideSaveCancel: !!props.hideSaveCancel, initialIsEditing: isEmpty(issue), usePreformattedTag: true, saveOnBlur: true },
81
- React.createElement(TextArea, { id: "get-support-ktQ1-issue", name: "get-support-ktQ1-issue", className: `description-textarea ${isEmpty(version) || isEmpty(summary) || isEmpty(product) ? 'kt1-disabled' : ''}`, "aria-invalid": (issue === null || issue === void 0 ? void 0 : issue.length) > CASE_DETAILS_ISSUE_LIMIT ? 'true' : 'false', "aria-required": isKT1Required, isRequired: isKT1Required, value: issue, disabled: isEmpty(version) || isEmpty(summary) || isEmpty(product), onChange: (e, value) => onKTQ1IssueChange(value, e), "data-tracking-id": "get-support-ktQ1-issue", placeholder: t('i18nKeyPlaceHolderDetail', `The more detail that you include, the easier it is for us to help you. \nExample: \nI'm unable to start the SSHD service and am receiving the error message "Bad yes/no \nargument for ShowPatchLevel parameter"`), resizeOrientation: "vertical", validated: props.isSummarizeInvalid ? 'error' : 'default', rows: isLgScreenHeight ? 10 : 4, ref: textAreaRef, onClick: handleTextAreaClick }),
83
+ React.createElement(TextArea, { id: "get-support-ktQ1-issue", name: "get-support-ktQ1-issue", className: `description-textarea ${isEmpty(version) || isEmpty(summary) || isEmpty(product) ? 'kt1-disabled' : ''}`, "aria-invalid": (issue === null || issue === void 0 ? void 0 : issue.length) > CASE_DETAILS_ISSUE_LIMIT ? 'true' : 'false', "aria-required": isKT1Required, isRequired: isKT1Required, value: issue, disabled: isEmpty(version) || isEmpty(summary) || isEmpty(product), onChange: (e, value) => onKTQ1IssueChange(value, e), "data-tracking-id": "get-support-ktQ1-issue", placeholder: t('i18nKeyPlaceHolderDetail', `The more detail that you include, the easier it is for us to help you. \nExample: \nI'm unable to start the SSHD service and am receiving the error message "Bad yes/no \nargument for ShowPatchLevel parameter"`), resizeOrientation: "vertical", validated: props.isSummarizeInvalid ? 'error' : 'default', rows: isVariationA ? (isLgScreenHeight ? 20 : 12) : isLgScreenHeight ? 15 : 10, ref: textAreaRef, onClick: handleTextAreaClick }),
82
84
  React.createElement("p", { className: "form-instructions pf-v6-u-danger-color-100", "data-tracking-id": "large-20k-warning-ktQ1-environment" }, `${(issue === null || issue === void 0 ? void 0 : issue.length) > CASE_DETAILS_ISSUE_LIMIT
83
85
  ? `This description exceeds ${CASE_DETAILS_ISSUE_LIMIT} characters. Try shortening it.`
84
86
  : ''}`)));
@@ -1 +1 @@
1
- {"version":3,"file":"Severity.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/Severity.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAMvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAa5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AAW/D,UAAU,MAAO,SAAQ,gBAAgB;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IAChE,oBAAoB,EAAE,OAAO,CAAC;CACjC;AASD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;CACxD;AAED,iBAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,qBA0Q9B;kBA1QQ,QAAQ;;;AA4QjB,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Severity.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/Severity.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAMvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAa5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AAW/D,UAAU,MAAO,SAAQ,gBAAgB;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IAChE,oBAAoB,EAAE,OAAO,CAAC;CACjC;AASD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;CACxD;AAED,iBAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,qBAyQ9B;kBAzQQ,QAAQ;;;AA2QjB,eAAe,QAAQ,CAAC"}
@@ -160,7 +160,7 @@ function Severity(props) {
160
160
  ' ',
161
161
  React.createElement("a", { href: "/support/policy/severity", target: "_blank" },
162
162
  React.createElement(Trans, null, "Red Hat Support Severity Level Definitions"))), closeBtnAriaLabel: "Close" },
163
- React.createElement(QuestionCircleIcon, { color: "#5e40be", className: "pf-v6-u-ml-xs icon-size cursor-pointer", "aria-label": t(`Support Severity Level info`) }))),
163
+ React.createElement(QuestionCircleIcon, { className: "pf-v6-u-ml-xs icon-size cursor-pointer pf-v6-u-text-color-status-custom", "aria-label": t(`Support Severity Level info`) }))),
164
164
  "\u00A0",
165
165
  filteredSeverities.filter((s) => s.disabled).length !== 0 && (React.createElement(Tooltip, { position: TooltipPosition.top, content: React.createElement(Trans, null, "Only the enabled severity levels are supported for selected product and version.") },
166
166
  React.createElement(Icon, { size: "sm" },
@@ -1 +1 @@
1
- {"version":3,"file":"SupportLevel.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/SupportLevel.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AAM/D,UAAU,MAAO,SAAQ,gBAAgB;CAAG;AAO5C,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM,qBAoJlC;kBApJQ,YAAY;;;AAsJrB,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"SupportLevel.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/SupportLevel.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AAM/D,UAAU,MAAO,SAAQ,gBAAgB;CAAG;AAO5C,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM,qBAmJlC;kBAnJQ,YAAY;;;AAqJrB,eAAe,YAAY,CAAC"}
@@ -97,7 +97,7 @@ function SupportLevel(props) {
97
97
  "Learn more about our",
98
98
  ' ',
99
99
  React.createElement("a", { href: "/support/offerings/production/sla", target: "_blank" }, "production support service level agreement"))), closeBtnAriaLabel: "Close" },
100
- React.createElement(QuestionCircleIcon, { color: "#5e40be", className: "pf-v6-u-ml-xs icon-size cursor-pointer", "aria-label": "Support Level Info" })),
100
+ React.createElement(QuestionCircleIcon, { className: "pf-v6-u-ml-xs icon-size cursor-pointer pf-v6-u-text-color-status-custom", "aria-label": "Support Level Info" })),
101
101
  React.createElement(SingleSelectDropdown, { ariaLabel: t('Select Support Level'), onSelect: onEntitlementChange, selected: getSelectedOption(), options: getDropdownOptions(), isDisabled: ownersEntitlements.isError || isEmpty(ownersEntitlements.data), isInvalid: isSupportLevelInValid, dataTrackingId: "get-support-supportLevel", placeholder: t('Select Support Level') }),
102
102
  isEmpty(ownersEntitlements.data) && (React.createElement("p", { className: "form-instructions" }, ownersEntitlements.isError ? t('Error loading support levels') : t('No active subscriptions')))));
103
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OpenshiftDropdownV4.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/OpenshiftDropdownV4.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAgB5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAA2D,MAAM,OAAO,CAAC;AAOhF,UAAU,MAAO,SAAQ,gBAAgB;IACrC,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iCAAiC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB,CAAC,EAAE,CAAC,GAAG,KAAA,KAAK,IAAI,CAAC;CAC3C;AAsBD,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBA+dzC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"OpenshiftDropdownV4.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/OpenshiftDropdownV4.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAgB5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAA2D,MAAM,OAAO,CAAC;AAOhF,UAAU,MAAO,SAAQ,gBAAgB;IACrC,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iCAAiC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB,CAAC,EAAE,CAAC,GAAG,KAAA,KAAK,IAAI,CAAC;CAC3C;AAsBD,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBAudzC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -71,18 +71,12 @@ function OpenshiftDropdownV4(props) {
71
71
  });
72
72
  const onToggle = () => setIsOpen(!isOpen);
73
73
  const onViewMoreClick = () => __awaiter(this, void 0, void 0, function* () {
74
- setClustersRawResponse((prev) => {
75
- const page = Math.floor(prev.length / PER_PAGE) + 1;
76
- fetchAccountClusters(inputVal, page).then((fetchedClusters) => {
77
- setClustersRawResponse((latest) => {
78
- const clusterResponse = [...latest, ...((fetchedClusters === null || fetchedClusters === void 0 ? void 0 : fetchedClusters.items) || [])];
79
- setTotalResultsNo(fetchedClusters.total);
80
- setClustersSelectOptions(getClusterOptions(clusterResponse));
81
- return clusterResponse;
82
- });
83
- });
84
- return prev;
85
- });
74
+ const page = Math.floor(clustersRawResponse.length / PER_PAGE) + 1;
75
+ const fetchedClusters = yield fetchAccountClusters(inputVal, page);
76
+ const clusterResponse = [...clustersRawResponse, ...((fetchedClusters === null || fetchedClusters === void 0 ? void 0 : fetchedClusters.items) || [])];
77
+ setClustersRawResponse(clusterResponse);
78
+ setTotalResultsNo(fetchedClusters.total);
79
+ setClustersSelectOptions(getClusterOptions(clusterResponse));
86
80
  });
87
81
  const onSelect = (event, selectedCluster) => __awaiter(this, void 0, void 0, function* () {
88
82
  if (selectedCluster.type === 'checkbox') {
@@ -1 +1 @@
1
- {"version":3,"file":"OpenCase.d.ts","sourceRoot":"","sources":["../../../../src/components/OpenCase/OpenCase.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMlE,MAAM,WAAW,MAAM;IACnB,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACzE,gCAAgC,EAAE,OAAO,CAAC;IAC1C,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CAChE;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,MAAM,qBAuC7C"}
1
+ {"version":3,"file":"OpenCase.d.ts","sourceRoot":"","sources":["../../../../src/components/OpenCase/OpenCase.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMlE,MAAM,WAAW,MAAM;IACnB,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACzE,gCAAgC,EAAE,OAAO,CAAC;IAC1C,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CAChE;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,MAAM,qBA4B7C"}
@@ -1,22 +1,16 @@
1
1
  import { ability, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
2
- import isEqual from 'lodash/isEqual';
3
2
  import React from 'react';
4
- import { useCaseSelector } from '../../context/CaseContext';
5
3
  import { AccountSelector } from '../AccountInfo/AccountSelector';
6
4
  import { OwnerSelector } from '../AccountInfo/OwnerSelector';
7
5
  import ProductSelector from '../ProductSelector/ProductSelector';
8
6
  import SupportTypeSelectorPage from './SupportTypeSelectorPage';
9
7
  export default function OpenCase(props) {
10
8
  const canChangeAccountInfo = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.ACCOUNT_AND_OWNER);
11
- const { ABTestVariation } = useCaseSelector((state) => ({
12
- ABTestVariation: state.ABTestVariation,
13
- }), isEqual);
14
- const isATestvariation = ABTestVariation === 'A';
15
9
  return (React.createElement("form", null,
16
10
  canChangeAccountInfo && (React.createElement(React.Fragment, null,
17
11
  React.createElement(AccountSelector, { "data-tracking-id": "get-support-account-selector" }),
18
12
  React.createElement(OwnerSelector, { "data-tracking-id": "get-support-owner-selector" }))),
19
- isATestvariation && (React.createElement("div", { className: "form-group" },
20
- React.createElement(ProductSelector, { routeProps: props.routeProps, userSeenRecommendations: props.userSeenRecommendations, userClickedNextonRecommendations: props.userClickedNextonRecommendations, resultsRowRef: props.resultsRowRef, isOnGetSupportPage: true }))),
13
+ React.createElement("div", { className: "form-group" },
14
+ React.createElement(ProductSelector, { routeProps: props.routeProps, userSeenRecommendations: props.userSeenRecommendations, userClickedNextonRecommendations: props.userClickedNextonRecommendations, resultsRowRef: props.resultsRowRef, isOnGetSupportPage: true })),
21
15
  React.createElement(SupportTypeSelectorPage, null)));
22
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AllProductsSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/AllProductsSelector.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMvG,UAAU,MAAM;IACZ,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAQD;;;;;;;GAOG;AACH,QAAA,MAAM,mBAAmB,4EAoLvB,CAAC;AAGH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"AllProductsSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/AllProductsSelector.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMvG,UAAU,MAAM;IACZ,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAQD;;;;;;;GAOG;AACH,QAAA,MAAM,mBAAmB,4EAsKvB,CAAC;AAGH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -33,11 +33,10 @@ const AllProductsSelector = forwardRef((props, ref) => {
33
33
  var _a, _b;
34
34
  const { globalMetadataState: { allProducts, loggedInUserRights }, } = useContext(GlobalMetadataStateContext);
35
35
  const caseDispatch = useCaseDispatch();
36
- const { product, version, contactSSOName, ABTestVariation } = useCaseSelector((state) => ({
36
+ const { product, version, contactSSOName } = useCaseSelector((state) => ({
37
37
  product: state.caseDetails.product,
38
38
  version: state.caseDetails.version,
39
39
  contactSSOName: state.caseDetails.contactSSOName,
40
- ABTestVariation: state.ABTestVariation,
41
40
  }), isEqual);
42
41
  const { topContentState: { topContent }, } = useContext(TCStateContext);
43
42
  const { routeState: { activeSection, isCaseCreate }, } = useContext(RouteContext);
@@ -80,25 +79,14 @@ const AllProductsSelector = forwardRef((props, ref) => {
80
79
  RouteUtils.updateQueryParams(props.routeProps, newParams);
81
80
  }
82
81
  const entitledProducts = filter(allProducts.data.productsResult, (p) => p.isEntitledProduct);
83
- const isATestvariation = ABTestVariation === 'A';
84
- const isBTestvariation = ABTestVariation === 'B' || isEmpty(ABTestVariation);
85
- // Determine whether to render the ProductVersionDropdownSelector
86
82
  const renderProductVersionDropdownSelector = (activeSection === (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) &&
87
83
  !props.caseCreateExperience) ||
88
84
  activeSection === AppRouteSections.GET_SUPPORT ||
89
- isBTestvariation ||
90
- (isATestvariation && (props.isOnGetSupportPage || props.isOnReviewPage));
91
- // Determine whether to render the OpenCaseIssue component
92
- const renderOpenCaseIssue = (isBTestvariation &&
93
- (activeSection === (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) ||
94
- activeSection === AppRouteSections.REVIEW ||
95
- activeSection === AppRouteSections.SUBMIT_CASE)) ||
96
- (isATestvariation &&
97
- (activeSection === (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) ||
98
- activeSection === AppRouteSections.REVIEW ||
99
- activeSection === AppRouteSections.SUBMIT_CASE)) ||
100
- (!props.caseCreateExperience &&
101
- activeSection === (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT));
85
+ props.isOnGetSupportPage ||
86
+ props.isOnReviewPage;
87
+ const renderOpenCaseIssue = activeSection === (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) ||
88
+ activeSection === AppRouteSections.REVIEW ||
89
+ activeSection === AppRouteSections.SUBMIT_CASE;
102
90
  return (React.createElement(React.Fragment, null,
103
91
  renderProductVersionDropdownSelector && (React.createElement("div", { className: "form-group product-selector-wrapper" },
104
92
  React.createElement("div", { className: "all-product-selector-dropdown" },
@@ -1 +1 @@
1
- {"version":3,"file":"ProductSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/ProductSelector.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAOlE,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,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBA0GpD"}
1
+ {"version":3,"file":"ProductSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/ProductSelector.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAKlE,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,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBAqGpD"}
@@ -8,13 +8,12 @@ import React, { useContext, useEffect, useRef } from 'react';
8
8
  import { Trans, useTranslation } from 'react-i18next';
9
9
  import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
10
10
  import { RouteContext } from '../../context/RouteContext';
11
+ import { useAB } from '../../hooks/useAB';
11
12
  import { useFetchCVEData } from '../../hooks/useFetchCVEData';
12
13
  import { setCaseState } from '../../reducers/CaseReducer';
13
14
  import { CveModal } from '../Cve/CveModal';
14
- import { EARuleWidget } from '../Recommendations/EARules/EARuleWidget';
15
15
  import Recommendations from '../Recommendations/Recommendations';
16
16
  import { AllProductsSelector } from './AllProductsSelector';
17
- import { ProductSelectorLoader } from './ProductSelectorLoader';
18
17
  /**
19
18
  * Responsible for:
20
19
  * # Setting case state with product version from url.
@@ -26,18 +25,16 @@ import { ProductSelectorLoader } from './ProductSelectorLoader';
26
25
  export default function ProductSelector(props) {
27
26
  const { cveRecommendation } = useFetchCVEData();
28
27
  const { t } = useTranslation();
28
+ const { isVariationA } = useAB();
29
29
  const { globalMetadataState: { allProducts, pcmConfig }, } = useContext(GlobalMetadataStateContext);
30
- const { product, version, ABTestVariation } = useCaseSelector((state) => ({
30
+ const { product, version } = useCaseSelector((state) => ({
31
31
  product: state.caseDetails.product,
32
32
  version: state.caseDetails.version,
33
- ABTestVariation: state.ABTestVariation,
34
33
  }), isEqual);
35
34
  const { routeState: { isCaseCreate }, } = useContext(RouteContext);
36
35
  const caseDispatch = useCaseDispatch();
37
36
  const cveModalEnabledConfig = getConfigField(pcmConfig.data, 'isCVEModalEnabled', PCM_CONFIG_FIELD_TYPE.STRING);
38
37
  const isCVEModalEnabled = cveModalEnabledConfig === '1';
39
- const isATestvariation = ABTestVariation === 'A';
40
- const isBTestvariation = ABTestVariation === 'B' || isEmpty(ABTestVariation);
41
38
  useEffect(() => {
42
39
  if (!isCVEModalEnabled) {
43
40
  setCaseState(caseDispatch, {
@@ -56,11 +53,8 @@ export default function ProductSelector(props) {
56
53
  (cveRecommendation === null || cveRecommendation === void 0 ? void 0 : cveRecommendation.length) !== 0 && isCVEModalEnabled && React.createElement(CveModal, null),
57
54
  React.createElement(AllProductsSelector, { routeProps: props.routeProps, checkEntitledProduct: isCaseCreate ? true : false, ref: productSelectorRef, isOnSummaryPage: true, isOnGetSupportPage: props === null || props === void 0 ? void 0 : props.isOnGetSupportPage, caseCreateExperience: props.caseCreateExperience })));
58
55
  return (React.createElement(React.Fragment, null,
59
- isBTestvariation && allProducts.isFetching && React.createElement(ProductSelectorLoader, null),
60
56
  React.createElement(AlertMessage, { variant: AlertType.DANGER, className: "pf-v6-u-mt-lg", title: t('There was an error loading products.'), show: allProducts.isError }),
61
- isBTestvariation
62
- ? !allProducts.isFetching && !allProducts.isError && rederProductSelect
63
- : isATestvariation && rederProductSelect,
57
+ rederProductSelect,
64
58
  product === 'Subscription Watch' && (React.createElement(Alert, { isInline: true, variant: AlertVariant.warning, title: React.createElement(Trans, null,
65
59
  ' ',
66
60
  "If you're having a subscription issue that doesn't relate to",
@@ -71,8 +65,7 @@ export default function ProductSelector(props) {
71
65
  React.createElement("a", { href: "/support/contact", "data-tracking-id": "contact-customer-service" }, "customer service"),
72
66
  ' ',
73
67
  "for help.") })),
74
- isBTestvariation && React.createElement(EARuleWidget, null),
75
- !(props === null || props === void 0 ? void 0 : props.isOnGetSupportPage) && (React.createElement("div", { className: "suggestions-result-section" },
68
+ !isVariationA && !(props === null || props === void 0 ? void 0 : props.isOnGetSupportPage) && (React.createElement("div", { className: "suggestions-result-section" },
76
69
  React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading recommendations') } }, !isEmpty(version) && (React.createElement("div", { className: "common-suggestions" },
77
70
  React.createElement(Recommendations, { routeProps: props.routeProps, userSeenRecommendations: props.userSeenRecommendations, userClickedNextonRecommendationsValue: props.userClickedNextonRecommendations, resultsRowRef: props.resultsRowRef }))))))));
78
71
  }
@@ -2,8 +2,6 @@ import { IClusterRecommendation } from '@cee-eng/hydrajs/@types/api/pcm/preCaseD
2
2
  import React from 'react';
3
3
  interface IProps {
4
4
  clusterRecommendations: IClusterRecommendation[];
5
- onViewMoreRecommendation?: () => void;
6
- displayVeiwMoreBtn?: boolean;
7
5
  }
8
6
  export declare function ClusterRecommendationItems(props: IProps): React.JSX.Element;
9
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ClusterRecommendationItems.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/ClusterRecommendationItems.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAI5F,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,UAAU,MAAM;IACZ,sBAAsB,EAAE,sBAAsB,EAAE,CAAC;IACjD,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,qBA4FvD"}
1
+ {"version":3,"file":"ClusterRecommendationItems.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/ClusterRecommendationItems.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAI5F,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,UAAU,MAAM;IACZ,sBAAsB,EAAE,sBAAsB,EAAE,CAAC;CACpD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,qBAkFvD"}
@@ -1,5 +1,5 @@
1
1
  import { pcm } from '@cee-eng/hydrajs';
2
- import { Button, Label } from '@patternfly/react-core';
2
+ import { Label } from '@patternfly/react-core';
3
3
  import ArrowRightIcon from '@patternfly/react-icons/dist/js/icons/arrow-right-icon';
4
4
  import isEqual from 'lodash/isEqual';
5
5
  import React, { useContext, useEffect } from 'react';
@@ -29,19 +29,16 @@ export function ClusterRecommendationItems(props) {
29
29
  createOrUpdateSessionResources(sessionRestoreDispatch, activeSessionId, sessionResourceTracking, SessionResourceSource.CLUSTER_RECOMMENDATION, getRulesToSave('', '', recsWithUrl), JSON.stringify({ product, version, openshiftClusterID }));
30
30
  // eslint-disable-next-line react-hooks/exhaustive-deps
31
31
  }, [props.clusterRecommendations, activeSessionId]);
32
- return (React.createElement("pfe-accordion", null,
33
- props.clusterRecommendations.map((rule, i) => (React.createElement(React.Fragment, null,
34
- React.createElement("pfe-accordion-header", null,
35
- React.createElement("p", null, rule.description)),
36
- React.createElement("pfe-accordion-panel", null,
37
- React.createElement("p", null,
38
- React.createElement(Label, { icon: riskLabels[rule.total_risk].icon, className: riskLabels[rule.total_risk].className },
39
- React.createElement(Trans, null, riskLabels[rule.total_risk].label))),
40
- React.createElement("p", null, rule.details || ''),
41
- React.createElement("a", { onClick: (e) => onResourceClick(e, rule, i), className: "pf-v6-u-font-weight-bold", "data-tracking-id": "cluster-recommendations", href: detailsUrl, target: "_blank", rel: "noopener noreferrer" },
42
- React.createElement(Trans, null,
43
- "View details and remediation steps ",
44
- React.createElement(ArrowRightIcon, { "aria-hidden": "true" }))))))),
45
- props.displayVeiwMoreBtn && (React.createElement(Button, { className: "pf-v6-u-p-md", variant: "link", onClick: props.onViewMoreRecommendation, "data-tracking-id": "cluster-recs-view-more" },
46
- React.createElement(Trans, null, "View more recommendations")))));
32
+ return (React.createElement("pfe-accordion", null, props.clusterRecommendations.map((rule, i) => (React.createElement(React.Fragment, null,
33
+ React.createElement("pfe-accordion-header", null,
34
+ React.createElement("h3", null, rule.description)),
35
+ React.createElement("pfe-accordion-panel", null,
36
+ React.createElement("p", null,
37
+ React.createElement(Label, { icon: riskLabels[rule.total_risk].icon, className: riskLabels[rule.total_risk].className },
38
+ React.createElement(Trans, null, riskLabels[rule.total_risk].label))),
39
+ React.createElement("p", null, rule.details || ''),
40
+ React.createElement("a", { onClick: (e) => onResourceClick(e, rule, i), className: "pf-v6-u-font-weight-bold", "data-tracking-id": "cluster-recommendations", href: detailsUrl, target: "_blank", rel: "noopener noreferrer" },
41
+ React.createElement(Trans, null,
42
+ "View details and remediation steps ",
43
+ React.createElement(ArrowRightIcon, { "aria-hidden": "true" })))))))));
47
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClusterRecommendations.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/ClusterRecommendations.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAa1C,UAAU,MAAM;IACZ,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,KAAK,EAAE,MAAM,qBAuD3D"}
1
+ {"version":3,"file":"ClusterRecommendations.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/ClusterRecommendations.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAa1C,UAAU,MAAM;IACZ,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,KAAK,EAAE,MAAM,qBAgE3D"}