@rh-support/troubleshoot 2.6.119 → 2.6.120

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 (90) hide show
  1. package/lib/esm/components/AccountInfo/css/accountSelector.css +3 -2
  2. package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
  3. package/lib/esm/components/CaseEditView/Case.js +1 -1
  4. package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.d.ts.map +1 -1
  5. package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.js +1 -1
  6. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.d.ts.map +1 -1
  7. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.js +2 -4
  8. package/lib/esm/components/CaseEditView/CaseOverview/index.js +2 -2
  9. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenShiftPopover.js +1 -1
  10. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.d.ts.map +1 -1
  11. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.js +4 -2
  12. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
  13. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +2 -1
  14. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.d.ts.map +1 -1
  15. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.js +2 -3
  16. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +13 -33
  17. package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.js +3 -3
  18. package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummaryErrorMessage.js +1 -1
  19. package/lib/esm/components/CaseEditView/Tabs/RelatedTasks/RelatedTasks.js +1 -1
  20. package/lib/esm/components/CaseInformation/CaseGroup.d.ts.map +1 -1
  21. package/lib/esm/components/CaseInformation/CaseGroup.js +11 -1
  22. package/lib/esm/components/CaseInformation/CaseInformation.d.ts.map +1 -1
  23. package/lib/esm/components/CaseInformation/CaseInformation.js +4 -4
  24. package/lib/esm/components/CaseInformation/Description.d.ts.map +1 -1
  25. package/lib/esm/components/CaseInformation/Description.js +1 -3
  26. package/lib/esm/components/CaseInformation/Severity.d.ts.map +1 -1
  27. package/lib/esm/components/CaseInformation/Severity.js +1 -1
  28. package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
  29. package/lib/esm/components/CaseInformation/SupportLevel.js +1 -1
  30. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts.map +1 -1
  31. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.js +12 -6
  32. package/lib/esm/components/IdeaInformation/IdeaInformation.d.ts.map +1 -1
  33. package/lib/esm/components/IdeaInformation/IdeaInformation.js +4 -4
  34. package/lib/esm/components/OpenCase/OpenCase.d.ts.map +1 -1
  35. package/lib/esm/components/OpenCase/OpenCase.js +8 -2
  36. package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts.map +1 -1
  37. package/lib/esm/components/ProductSelector/AllProductsSelector.js +18 -6
  38. package/lib/esm/components/ProductSelector/ProductSelector.d.ts.map +1 -1
  39. package/lib/esm/components/ProductSelector/ProductSelector.js +12 -5
  40. package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts +2 -0
  41. package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts.map +1 -1
  42. package/lib/esm/components/Recommendations/ClusterRecommendationItems.js +16 -13
  43. package/lib/esm/components/Recommendations/ClusterRecommendations.d.ts.map +1 -1
  44. package/lib/esm/components/Recommendations/ClusterRecommendations.js +1 -4
  45. package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
  46. package/lib/esm/components/Recommendations/Recommendations.js +38 -38
  47. package/lib/esm/components/RemoteRider/RemoteRiderAcceptanceModal.d.ts.map +1 -1
  48. package/lib/esm/components/Review/Review.d.ts.map +1 -1
  49. package/lib/esm/components/Review/Review.js +5 -1
  50. package/lib/esm/components/TroubleshootSection/AskRedHat.js +1 -1
  51. package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts +0 -9
  52. package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts.map +1 -1
  53. package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +44 -150
  54. package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
  55. package/lib/esm/components/shared/useIsSectionValid.js +71 -32
  56. package/lib/esm/components/wizardLayout/WizardAside.d.ts.map +1 -1
  57. package/lib/esm/components/wizardLayout/WizardAside.js +9 -18
  58. package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
  59. package/lib/esm/components/wizardLayout/WizardMain.js +64 -110
  60. package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
  61. package/lib/esm/components/wizardLayout/WizardNavigation.js +53 -59
  62. package/lib/esm/css/AskRedHat.css +2 -9
  63. package/lib/esm/css/app.css +1 -1
  64. package/lib/esm/hooks/useWizard.d.ts +0 -4
  65. package/lib/esm/hooks/useWizard.d.ts.map +1 -1
  66. package/lib/esm/hooks/useWizard.js +6 -20
  67. package/lib/esm/reducers/AIResponseConstNTypes.d.ts +2 -17
  68. package/lib/esm/reducers/AIResponseConstNTypes.d.ts.map +1 -1
  69. package/lib/esm/reducers/AIResponseConstNTypes.js +0 -3
  70. package/lib/esm/reducers/AIResponseReducer.d.ts +0 -2
  71. package/lib/esm/reducers/AIResponseReducer.d.ts.map +1 -1
  72. package/lib/esm/reducers/AIResponseReducer.js +0 -17
  73. package/lib/esm/reducers/CaseConstNTypes.js +3 -3
  74. package/lib/esm/reducers/CaseDiscussionTabReducer.js +1 -1
  75. package/lib/esm/reducers/CaseHelpers.d.ts +8 -6
  76. package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
  77. package/lib/esm/reducers/CaseHelpers.js +20 -10
  78. package/lib/esm/reducers/CaseReducer.d.ts +1 -0
  79. package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
  80. package/lib/esm/reducers/CaseReducer.js +37 -2
  81. package/lib/esm/reducers/RouteConstNTypes.d.ts.map +1 -1
  82. package/lib/esm/reducers/RouteConstNTypes.js +1 -0
  83. package/lib/esm/scss/_pf-overrides.scss +23 -2
  84. package/package.json +7 -9
  85. package/lib/esm/components/Suggestions/TopContentSidebar.d.ts +0 -3
  86. package/lib/esm/components/Suggestions/TopContentSidebar.d.ts.map +0 -1
  87. package/lib/esm/components/Suggestions/TopContentSidebar.js +0 -26
  88. package/lib/esm/hooks/useAB.d.ts +0 -22
  89. package/lib/esm/hooks/useAB.d.ts.map +0 -1
  90. package/lib/esm/hooks/useAB.js +0 -37
@@ -2,11 +2,12 @@
2
2
  width: 100%;
3
3
  }
4
4
 
5
- .get-support-owner-wapper input {
5
+ .get-support-owner-wapper input,
6
+ .margin-top.managed-account-selector .pf-c-select {
6
7
  min-height: 36px;
7
8
  }
8
9
 
9
- .margin-top.managed-account-selector {
10
+ .margin-top.managed-account-selector .pf-c-select {
10
11
  .pf-m-disabled {
11
12
  background-color: var(--pf-v5-global--disabled-color--300) !important;
12
13
  }
@@ -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,qBAgPzC"}
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"}
@@ -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,qBAiElD"}
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"}
@@ -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, { className: "pf-v6-u-ml-xs icon-size", "aria-label": "Support Level Info" })))))));
49
+ React.createElement(QuestionCircleIcon, { color: "#5e40be", 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,qBAqF9B;kBArFQ,QAAQ;;;AAwFjB,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,qBAmF9B;kBAnFQ,QAAQ;;;AAsFjB,eAAe,QAAQ,CAAC"}
@@ -25,7 +25,6 @@ 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);
29
28
  const onToggleClick = () => {
30
29
  setIsOpen(!isOpen);
31
30
  };
@@ -33,7 +32,7 @@ function CaseType(props) {
33
32
  React.createElement(Flex, { justifyContent: { default: 'justifyContentSpaceBetween' } },
34
33
  React.createElement(FlexItem, null,
35
34
  " ",
36
- selected || t(`Select a category`)),
35
+ props.selectedType || t(`Select a category`)),
37
36
  React.createElement(FlexItem, null, props.isFetching ? React.createElement(Spinner, { size: "md" }) : ''))));
38
37
  const validateCaseType = (selectedItem) => {
39
38
  setIsCaseTypeInValid(isEmpty(selectedItem));
@@ -46,7 +45,6 @@ function CaseType(props) {
46
45
  setIsOpen(false);
47
46
  yield props.onTypeChange(switchedCaseType);
48
47
  setLocalTypeChange(true);
49
- setSelected(option);
50
48
  validateCaseType(option);
51
49
  });
52
50
  // value changed logic to show a non local type change
@@ -57,7 +55,7 @@ function CaseType(props) {
57
55
  React.createElement(Trans, null, "Support type"),
58
56
  React.createElement(ValueChangedIcon, { afterLocalChange: afterLocalChange, isLocalChange: localTypeChange, value: props.selectedType, getTooltipContent: getChangedValueTooltip(() => CaseValuesToWatch.type) }),
59
57
  React.createElement("span", { className: `form-required ${isExportingPDF ? 'hide-in-pdf' : ''}`, "aria-hidden": 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 },
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 },
61
59
  React.createElement(SelectList, null, (props.allTypes || []).map((option) => (React.createElement(SelectOption, { value: option, key: option }, option)))))));
62
60
  }
63
61
  CaseType.defaultProps = defaultProps;
@@ -39,7 +39,6 @@ export default function CaseOverview(props) {
39
39
  const ability = useContext(AbilityContext);
40
40
  const { t } = useTranslation();
41
41
  const caseUpdateError = useCaseUpdateErrorMessage();
42
- const canManageCase = ability.can(resourceActions.UPDATE, resources.CASE_DETAILS);
43
42
  const canSeeCaseOwnerInfo = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_OWNER);
44
43
  const canSeeInactivityWarning = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_ACTIVITY_WARNING);
45
44
  const caseOverviewState = useContext(CaseOverviewStateContext);
@@ -76,6 +75,7 @@ export default function CaseOverview(props) {
76
75
  const caseDispatch = useCaseDispatch();
77
76
  const globalMetadataDispatchContext = useContext(GlobalMetadataDispatchContext);
78
77
  const { globalMetadataState: { allCaseTypes, allCaseSeverities, viewAsCustomer, loggedInUsersAccount, loggedInUserRights, }, } = useContext(GlobalMetadataStateContext);
78
+ const canManageCase = loggedInUserRights.data.canManageCases();
79
79
  const switchedCaseType = toNewCaseTypeSwitcher(caseType);
80
80
  const updatingUser = loggedInUsersAccount.data.name;
81
81
  const canSeeManagedByPartnerFlag = contactIsPartner &&
@@ -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, allTypes: newCaseTypesArray, isFetching: caseOverviewState.caseTypeUpdating && isCaseUpdating, hasError: allCaseTypes.isError })),
300
+ React.createElement(CaseType, { selectedType: switchedCaseType, onTypeChange: onTypeChange, isDisabled: !canManageCase || allCaseTypes.isFetching || isCaseUpdating, 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, { className: "pf-v6-u-ml-xs" })));
7
+ React.createElement(QuestionCircleIcon, { color: "#5e40be", 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,qBA0WrC;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,qBA4WrC;AAED,eAAe,eAAe,CAAC"}
@@ -32,12 +32,13 @@ 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 } = useCaseSelector((state) => ({
35
+ const { product, version, caseNumber, contactSSOName, versionsDetails, isCaseUpdating } = 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,
41
42
  }), isEqual);
42
43
  const caseDispatch = useCaseDispatch();
43
44
  const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
@@ -251,6 +252,7 @@ function ProductNVersion(props) {
251
252
  React.createElement(Trans, null, "Version")),
252
253
  React.createElement(SingleSelectDropdown, { className: "open-case-version", id: "version-dropdown", placeholder: t(`Select a version`), selected: getVersionSelectedDropdownOption, options: getVersionDropdownOptions, isInvalid: checkIfVersionIsInvalid, isDisabled: isVersionUpdating ||
253
254
  (allProducts.isFetching && !allProducts.isError) ||
254
- isEmpty(selectedProductLocal), onSelect: onVersionChange, isLoading: isVersionUpdating || (isSEProductApiIsDown && versionsDetails.isFetching), dataTrackingId: "case-details-version-selector", isScrollable: true }))))));
255
+ isEmpty(selectedProductLocal) ||
256
+ isCaseUpdating, onSelect: onVersionChange, isLoading: isVersionUpdating || (isSEProductApiIsDown && versionsDetails.isFetching), dataTrackingId: "case-details-version-selector", isScrollable: true }))))));
255
257
  }
256
258
  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,qBA8iBxC"}
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"}
@@ -188,7 +188,8 @@ export function PostComment(props) {
188
188
  if (commentText) {
189
189
  try {
190
190
  setIsProcessing(true);
191
- yield request({ caseNumber, commentBody: commentText, isPublic, contentType: commentType });
191
+ const newCommentText = commentText.replace(/(^|\n)(-\s.+)(\n(?![-\s]))/g, '$1$2\n\n');
192
+ yield request({ caseNumber, commentBody: newCommentText, isPublic, contentType: commentType });
192
193
  checkForCaseStatusToggleOnAttachOrComment(caseDispatch, loggedInUserRights.data.isInternal(), status);
193
194
  !isPublic && setIsPublic(true);
194
195
  addUserToNotifyList();
@@ -1 +1 @@
1
- {"version":3,"file":"VerifyCaseStatusModal.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAa3E,UAAU,MAAM;IACZ,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBA2IlD"}
1
+ {"version":3,"file":"VerifyCaseStatusModal.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAa3E,UAAU,MAAM;IACZ,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBA6IlD"}
@@ -10,7 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import { Button, ButtonVariant, Modal, ModalBody, ModalFooter, ModalHeader, ModalVariant, } from '@patternfly/react-core';
11
11
  import { SingleSelectDropdown, ToastNotification } from '@rh-support/components';
12
12
  import { GlobalMetadataStateContext, useCanEditCase } from '@rh-support/react-context';
13
- import { ability, resourceActions, resources } from '@rh-support/user-permissions';
14
13
  import isEqual from 'lodash/isEqual';
15
14
  import React, { useContext, useEffect, useReducer, useState } from 'react';
16
15
  import { Trans, useTranslation } from 'react-i18next';
@@ -22,7 +21,6 @@ export function VerifyCaseStatusModal(props) {
22
21
  const { t } = useTranslation();
23
22
  const caseUpdateError = useCaseUpdateErrorMessage();
24
23
  const [caseOverviewState, caseOverviewDispatch] = useReducer(caseOverviewReducer, initialCaseViewState);
25
- const canManageCase = ability.can(resourceActions.UPDATE, resources.CASE_DETAILS);
26
24
  const caseState = useCaseSelector((state) => ({
27
25
  caseDetails: {
28
26
  product: state.caseDetails.product,
@@ -45,7 +43,8 @@ export function VerifyCaseStatusModal(props) {
45
43
  selectedAccountDetails: state.selectedAccountDetails,
46
44
  }), isEqual);
47
45
  const { status } = caseState.caseDetails;
48
- const { globalMetadataState: { loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
46
+ const { globalMetadataState: { loggedInUsersAccount, loggedInUserRights }, } = useContext(GlobalMetadataStateContext);
47
+ const canManageCase = loggedInUserRights.data.canManageCases();
49
48
  useEffect(() => {
50
49
  fetchAllStatuses(caseOverviewDispatch, loggedInUsersAccount.data.secureSupport);
51
50
  }, [caseOverviewDispatch, loggedInUsersAccount.data.secureSupport]);
@@ -17,13 +17,15 @@
17
17
  }
18
18
 
19
19
  .right-node {
20
- white-space: nowrap;
21
20
  overflow: hidden;
22
21
  text-overflow: ellipsis;
23
22
  width: 100%;
24
23
  }
24
+
25
25
  .content-date-right-history {
26
- white-space: nowrap;
26
+ display: -webkit-box;
27
+ -webkit-line-clamp: 2;
28
+ -webkit-box-orient: vertical;
27
29
  overflow: hidden;
28
30
  text-overflow: ellipsis;
29
31
  }
@@ -162,7 +164,6 @@
162
164
  text-align: right;
163
165
  line-height: 30px;
164
166
  white-space: nowrap;
165
- overflow: hidden;
166
167
  }
167
168
 
168
169
  .content-date-right-history {
@@ -319,41 +320,20 @@ ul#case-history-paginated-timeline {
319
320
  }
320
321
  }
321
322
 
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;
336
- }
337
-
338
- .left-node,
339
- .right-node {
340
- max-width: 100%;
341
- padding: 0;
323
+ @media screen and (max-width: 850px) {
324
+ .contentTimeline {
325
+ padding: 16px 8px;
342
326
  }
343
327
 
344
- .timeline-avatar,
345
- .timeline-marker {
346
- left: 0%;
347
- transform: translateX(-50%);
328
+ .content-date-left-history {
329
+ font-size: 15px;
348
330
  }
349
331
 
350
- .right-node::before {
351
- left: 20px;
352
- border-width: 10px 10px 10px 0;
353
- border-color: transparent white transparent transparent;
332
+ .content-time-left-history {
333
+ font-size: 13px;
354
334
  }
355
335
 
356
- .contentTimeline {
357
- margin-left: 40px;
336
+ .content-date-right-history {
337
+ font-size: 14px;
358
338
  }
359
339
  }
@@ -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 { caseLanguage, caseComments } = useCaseSelector((state) => ({
33
- caseLanguage: state.caseDetails.caseLanguage,
32
+ const { caseComments, caseLanguage } = useCaseSelector((state) => ({
34
33
  caseComments: state.caseDetails.comments,
34
+ caseLanguage: state.caseDetails.caseLanguage,
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 !== 'en') {
46
+ if (caseLanguage === 'ru') {
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 available in English. We're working on adding more languages soon.`;
28
+ message = `The AI case summary is not available in this language. 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.`;
@@ -112,6 +112,6 @@ const RelatedTasks = () => {
112
112
  React.createElement(Td, { dataLabel: columnNames.title }, item.title)))))),
113
113
  React.createElement("div", { className: "push-top" },
114
114
  React.createElement(Pagination, { itemCount: filteredData.length, perPage: itemsPerPage, page: currentPage, onSetPage: (_, page) => setCurrentPage(page), onPerPageSelect: (_, perPage) => setItemsPerPage(perPage) })))) : (React.createElement("div", null,
115
- React.createElement(EmptyState, { headingLevel: "h4", icon: CubesIcon, titleText: t("There aren't any related tasks."), variant: EmptyStateVariant.full })))));
115
+ React.createElement(EmptyState, { headingLevel: "h4", icon: CubesIcon, titleText: t("There aren't any related tasks"), variant: EmptyStateVariant.full })))));
116
116
  };
117
117
  export default RelatedTasks;
@@ -1 +1 @@
1
- {"version":3,"file":"CaseGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/CaseGroup.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAW5E,UAAU,MAAM;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAWD,iBAAS,SAAS,CAAC,KAAK,EAAE,MAAM,qBAwV/B;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"CaseGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/CaseGroup.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAiB5E,UAAU,MAAM;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAWD,iBAAS,SAAS,CAAC,KAAK,EAAE,MAAM,qBAkW/B;AAED,eAAe,SAAS,CAAC"}
@@ -20,7 +20,7 @@ import { Trans, useTranslation } from 'react-i18next';
20
20
  import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
21
21
  import { RouteContext } from '../../context/RouteContext';
22
22
  import { useCaseUpdateErrorMessage } from '../../hooks/useCaseUpdateErrorMessage';
23
- import { setCaseDetails, setSelectedCaseGroupUsers, updateCaseDetails } from '../../reducers/CaseReducer';
23
+ import { fetchCaseGroupsForAccount, fetchCaseGroupsForSSO, setCaseDetails, setSelectedCaseGroupUsers, updateCaseDetails, } from '../../reducers/CaseReducer';
24
24
  import { PDFContext } from '../CaseEditView/PDFContainer';
25
25
  import { CaseValuesToWatch } from '../shared/Constants';
26
26
  import { getChangedValueTooltip } from '../shared/utils';
@@ -168,6 +168,16 @@ function CaseGroup(props) {
168
168
  }
169
169
  // eslint-disable-next-line react-hooks/exhaustive-deps
170
170
  }, [ownersCaseGroups, caseNumber, isGroupMandatory]);
171
+ useEffect(() => {
172
+ if (loggedInUserRights.data.isInternal() && accountNumber) {
173
+ // For internal users, use account number
174
+ fetchCaseGroupsForAccount(caseDispatch, accountNumber);
175
+ }
176
+ else if (contactSSOName) {
177
+ // For external users, use SSO username
178
+ fetchCaseGroupsForSSO(caseDispatch, contactSSOName);
179
+ }
180
+ }, [accountNumber, caseDispatch, contactSSOName, loggedInUserRights.data]);
171
181
  const onCaseGroupClear = () => __awaiter(this, void 0, void 0, function* () {
172
182
  var _a;
173
183
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"CaseInformation.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/CaseInformation.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBAiHpD"}
1
+ {"version":3,"file":"CaseInformation.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/CaseInformation.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBAkHpD"}
@@ -1,6 +1,6 @@
1
1
  import { AlertMessage, AlertType, LoadingIndicator } from '@rh-support/components';
2
2
  import { fetchCaseSeverities, fetchCaseTypes, fetchLanguageMetadata, GlobalMetadataDispatchContext, GlobalMetadataStateContext, } from '@rh-support/react-context';
3
- import { canManageCase, haventLoadedMetadata } from '@rh-support/utils';
3
+ import { haventLoadedMetadata } from '@rh-support/utils';
4
4
  import isEmpty from 'lodash/isEmpty';
5
5
  import isEqual from 'lodash/isEqual';
6
6
  import React, { useContext, useEffect } from 'react';
@@ -12,7 +12,7 @@ import KtQuestions from '../ImproveCase/KtQuestions';
12
12
  import ClusterRecommendations from '../Recommendations/ClusterRecommendations';
13
13
  export default function CaseInformation(props) {
14
14
  const { t } = useTranslation();
15
- const { globalMetadataState: { allCaseTypes, allCaseSeverities, caseLanguages, loggedInUser, loggedInUserJwtToken, loggedInUsersAccount, }, } = useContext(GlobalMetadataStateContext);
15
+ const { globalMetadataState: { allCaseTypes, allCaseSeverities, caseLanguages, loggedInUser, loggedInUserJwtToken, loggedInUsersAccount, loggedInUserRights, }, } = useContext(GlobalMetadataStateContext);
16
16
  const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
17
17
  const { contactSSOName, selectedAccountDetails, ownersCaseGroups, hasInvalidEntitlements } = useCaseSelector((state) => ({
18
18
  contactSSOName: state.caseDetails.contactSSOName,
@@ -60,7 +60,7 @@ export default function CaseInformation(props) {
60
60
  return (React.createElement(React.Fragment, null,
61
61
  React.createElement(LoadingIndicator, { show: isMetadataLoading(), size: "lg" }),
62
62
  React.createElement(AlertMessage, { variant: AlertType.DANGER, className: "pf-v6-u-mt-lg", title: t("Sorry, we're having a problem gathering your information."), show: isMetadataLoadingError() }),
63
- React.createElement(AlertMessage, { show: !canManageCase(loggedInUserJwtToken), variant: AlertType.DANGER, className: "pf-v6-u-mt-lg" },
63
+ React.createElement(AlertMessage, { show: !loggedInUserRights.data.canManageCases(), variant: AlertType.DANGER, className: "pf-v6-u-mt-lg" },
64
64
  React.createElement(Trans, { i18nKey: "i18ManageCaseContactCustomerService" },
65
65
  "You need additional access to manage cases.\u00A0 Please contact",
66
66
  ' ',
@@ -75,7 +75,7 @@ export default function CaseInformation(props) {
75
75
  !hasInvalidEntitlements &&
76
76
  !isMetadataLoading() &&
77
77
  !isMetadataLoadingError() &&
78
- canManageCase(loggedInUserJwtToken) && (React.createElement(React.Fragment, null,
78
+ loggedInUserRights.data.canManageCases() && (React.createElement(React.Fragment, null,
79
79
  React.createElement("form", null,
80
80
  React.createElement(Hostname, null),
81
81
  React.createElement(OpenShiftClusterId, null),
@@ -1 +1 @@
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"}
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"}
@@ -7,13 +7,11 @@ 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';
11
10
  import { CASE_DETAILS_ISSUE_LIMIT } from '../../reducers/CaseConstNTypes';
12
11
  import { getUpdatedDescription } from '../../reducers/CaseHelpers';
13
12
  import { setCaseDetails } from '../../reducers/CaseReducer';
14
13
  export default function Description(props) {
15
14
  const { t } = useTranslation();
16
- const { isVariationA } = useAB();
17
15
  const { issue, environment, periodicityOfIssue, timeFramesAndUrgency, v3ClusterName, version, product, summary } = useCaseSelector((state) => ({
18
16
  description: state.caseDetails.description,
19
17
  issue: state.caseDetails.issue,
@@ -80,7 +78,7 @@ export default function Description(props) {
80
78
  isKT1Required && (React.createElement("span", { className: "form-required", "aria-hidden": true }, "*")),
81
79
  React.createElement(Popover, { isVisible: isOpen, shouldClose: handleClose, headerContent: headerPopoverContent, bodyContent: PopoverContent },
82
80
  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 },
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 }),
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 }),
84
82
  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
85
83
  ? `This description exceeds ${CASE_DETAILS_ISSUE_LIMIT} characters. Try shortening it.`
86
84
  : ''}`)));
@@ -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,qBAyQ9B;kBAzQQ,QAAQ;;;AA2QjB,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,qBA0Q9B;kBA1QQ,QAAQ;;;AA4QjB,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, { className: "pf-v6-u-ml-xs icon-size cursor-pointer pf-v6-u-text-color-status-custom", "aria-label": t(`Support Severity Level info`) }))),
163
+ React.createElement(QuestionCircleIcon, { color: "#5e40be", className: "pf-v6-u-ml-xs icon-size cursor-pointer", "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,qBAmJlC;kBAnJQ,YAAY;;;AAqJrB,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,qBAoJlC;kBApJQ,YAAY;;;AAsJrB,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, { className: "pf-v6-u-ml-xs icon-size cursor-pointer pf-v6-u-text-color-status-custom", "aria-label": "Support Level Info" })),
100
+ React.createElement(QuestionCircleIcon, { color: "#5e40be", className: "pf-v6-u-ml-xs icon-size cursor-pointer", "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,qBAudzC;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,qBA+dzC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -71,12 +71,18 @@ function OpenshiftDropdownV4(props) {
71
71
  });
72
72
  const onToggle = () => setIsOpen(!isOpen);
73
73
  const onViewMoreClick = () => __awaiter(this, void 0, void 0, function* () {
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));
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
+ });
80
86
  });
81
87
  const onSelect = (event, selectedCluster) => __awaiter(this, void 0, void 0, function* () {
82
88
  if (selectedCluster.type === 'checkbox') {
@@ -1 +1 @@
1
- {"version":3,"file":"IdeaInformation.d.ts","sourceRoot":"","sources":["../../../../src/components/IdeaInformation/IdeaInformation.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAiBrD,MAAM,CAAC,OAAO,UAAU,eAAe,sBA6ItC"}
1
+ {"version":3,"file":"IdeaInformation.d.ts","sourceRoot":"","sources":["../../../../src/components/IdeaInformation/IdeaInformation.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAiBrD,MAAM,CAAC,OAAO,UAAU,eAAe,sBA8ItC"}
@@ -1,7 +1,7 @@
1
1
  import { Grid, GridItem } from '@patternfly/react-core';
2
2
  import { AlertMessage, AlertType, LoadingIndicator } from '@rh-support/components';
3
3
  import { fetchCaseSeverities, fetchCaseTypes, fetchLanguageMetadata, GlobalMetadataDispatchContext, GlobalMetadataStateContext, } from '@rh-support/react-context';
4
- import { canManageCase, haventLoadedMetadata } from '@rh-support/utils';
4
+ import { haventLoadedMetadata } from '@rh-support/utils';
5
5
  import isEmpty from 'lodash/isEmpty';
6
6
  import isEqual from 'lodash/isEqual';
7
7
  import React, { useContext, useEffect } from 'react';
@@ -21,7 +21,7 @@ import CaseContactSelector from '../CaseManagement/SendNotifications/CaseContact
21
21
  import KtQuestions from '../ImproveCase/KtQuestions';
22
22
  export default function IdeaInformation() {
23
23
  const { t } = useTranslation();
24
- const { globalMetadataState: { allCaseTypes, allCaseSeverities, caseLanguages, loggedInUser, loggedInUserJwtToken, loggedInUsersAccount, }, } = useContext(GlobalMetadataStateContext);
24
+ const { globalMetadataState: { allCaseTypes, allCaseSeverities, caseLanguages, loggedInUser, loggedInUserJwtToken, loggedInUsersAccount, loggedInUserRights, }, } = useContext(GlobalMetadataStateContext);
25
25
  const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
26
26
  const { contactSSOName, selectedAccountDetails, ownersCaseGroups, hasInvalidEntitlements } = useCaseSelector((state) => ({
27
27
  contactSSOName: state.caseDetails.contactSSOName,
@@ -73,7 +73,7 @@ export default function IdeaInformation() {
73
73
  return (React.createElement(React.Fragment, null,
74
74
  React.createElement(LoadingIndicator, { show: isMetadataLoading(), size: "lg" }),
75
75
  React.createElement(AlertMessage, { variant: AlertType.DANGER, className: "pf-v6-u-mb-md", title: t("Sorry, we're having a problem gathering your information."), show: isMetadataLoadingError(), isInline: true }),
76
- React.createElement(AlertMessage, { show: !canManageCase(loggedInUserJwtToken), variant: AlertType.DANGER, className: "pf-v6-u-mb-md", isInline: true },
76
+ React.createElement(AlertMessage, { show: !loggedInUserRights.data.canManageCases(), variant: AlertType.DANGER, className: "pf-v6-u-mb-md", isInline: true },
77
77
  React.createElement(Trans, { i18nKey: "i18ManageCaseContactCustomerService" },
78
78
  "You need additional access to manage cases.\u00A0 Please contact",
79
79
  ' ',
@@ -88,7 +88,7 @@ export default function IdeaInformation() {
88
88
  !hasInvalidEntitlements &&
89
89
  !isMetadataLoading() &&
90
90
  !isMetadataLoadingError() &&
91
- canManageCase(loggedInUserJwtToken) && (React.createElement(React.Fragment, null,
91
+ loggedInUserRights.data.canManageCases() && (React.createElement(React.Fragment, null,
92
92
  React.createElement("form", null,
93
93
  React.createElement(KtQuestions, { onlyShowKT4: true }),
94
94
  React.createElement(SupportLevel, null),
@@ -1 +1 @@
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
+ {"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,16 +1,22 @@
1
1
  import { ability, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
2
+ import isEqual from 'lodash/isEqual';
2
3
  import React from 'react';
4
+ import { useCaseSelector } from '../../context/CaseContext';
3
5
  import { AccountSelector } from '../AccountInfo/AccountSelector';
4
6
  import { OwnerSelector } from '../AccountInfo/OwnerSelector';
5
7
  import ProductSelector from '../ProductSelector/ProductSelector';
6
8
  import SupportTypeSelectorPage from './SupportTypeSelectorPage';
7
9
  export default function OpenCase(props) {
8
10
  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';
9
15
  return (React.createElement("form", null,
10
16
  canChangeAccountInfo && (React.createElement(React.Fragment, null,
11
17
  React.createElement(AccountSelector, { "data-tracking-id": "get-support-account-selector" }),
12
18
  React.createElement(OwnerSelector, { "data-tracking-id": "get-support-owner-selector" }))),
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 })),
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 }))),
15
21
  React.createElement(SupportTypeSelectorPage, null)));
16
22
  }
@@ -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,4EAsKvB,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,4EAoLvB,CAAC;AAGH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}