@rh-support/troubleshoot 2.2.47 → 2.2.49

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 (28) hide show
  1. package/lib/esm/components/CaseEditView/CaseDetailsTabs.d.ts.map +1 -1
  2. package/lib/esm/components/CaseEditView/CaseDetailsTabs.js +9 -8
  3. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.d.ts.map +1 -1
  4. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.js +66 -38
  5. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.d.ts +4 -1
  6. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.d.ts.map +1 -1
  7. package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.js +6 -4
  8. package/lib/esm/components/CaseEditView/CaseSolutions/HandpicketItem.d.ts +13 -0
  9. package/lib/esm/components/CaseEditView/CaseSolutions/HandpicketItem.d.ts.map +1 -0
  10. package/lib/esm/components/CaseEditView/CaseSolutions/HandpicketItem.js +76 -0
  11. package/lib/esm/components/CaseEditView/Tabs/RelatedTickets/RelatedTickets.d.ts.map +1 -1
  12. package/lib/esm/components/CaseEditView/Tabs/RelatedTickets/RelatedTickets.js +6 -9
  13. package/lib/esm/components/SessionRestore/SessionRestore.js +1 -1
  14. package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.js +1 -1
  15. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
  16. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +6 -0
  17. package/lib/esm/constants/caseDetailsConstants.d.ts +5 -0
  18. package/lib/esm/constants/caseDetailsConstants.d.ts.map +1 -1
  19. package/lib/esm/constants/caseDetailsConstants.js +6 -0
  20. package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
  21. package/lib/esm/reducers/CaseHelpers.js +2 -0
  22. package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
  23. package/lib/esm/reducers/CaseReducer.js +1 -0
  24. package/lib/esm/reducers/RouteConstNTypes.d.ts +1 -0
  25. package/lib/esm/reducers/RouteConstNTypes.d.ts.map +1 -1
  26. package/lib/esm/scss/_main.scss +74 -8
  27. package/lib/esm/scss/_pf-overrides.scss +2 -0
  28. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"CaseDetailsTabs.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseEditView/CaseDetailsTabs.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAa,MAAM,kBAAkB,CAAC;AAwBlE,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;CACnD;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,eA+M5C"}
1
+ {"version":3,"file":"CaseDetailsTabs.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseEditView/CaseDetailsTabs.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAa,MAAM,kBAAkB,CAAC;AAwBlE,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;CACnD;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,eAgN5C"}
@@ -66,14 +66,15 @@ export function CaseDetailsTabs(props) {
66
66
  ref: managementTabRef,
67
67
  component: (React.createElement(CaseDetailsManagement, { caseNumber: caseNumber, routeProps: props.routeProps, tabRef: managementTabRef })),
68
68
  });
69
- tabsToRender.push({
70
- 'data-tracking-id': 'case-details-related-ticket-tab',
71
- key: 'relatedTickets',
72
- ref: relatedTicketsRef,
73
- routePath: 'related-tickets',
74
- title: CaseDetailsTabsEnum.RELATED_TICKETS,
75
- component: React.createElement(RelatedTickets, null),
76
- });
69
+ loggedInUserRights.data.isInternal() &&
70
+ tabsToRender.push({
71
+ 'data-tracking-id': 'case-details-related-ticket-tab',
72
+ key: 'relatedTickets',
73
+ ref: relatedTicketsRef,
74
+ routePath: 'related-tickets',
75
+ title: CaseDetailsTabsEnum.RELATED_TICKETS,
76
+ component: React.createElement(RelatedTickets, null),
77
+ });
77
78
  tabsToRender.push({
78
79
  'data-tracking-id': 'case-details-actionplan-tab',
79
80
  key: 'action plan',
@@ -1 +1 @@
1
- {"version":3,"file":"CaseSolutions.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseSolutions/CaseSolutions.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAsD,MAAM,OAAO,CAAC;AA+D3E,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,OAAO,CAAC;CACnC;AAUD,eAAO,MAAM,aAAa,+EA2YxB,CAAC"}
1
+ {"version":3,"file":"CaseSolutions.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseSolutions/CaseSolutions.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAiE3E,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,OAAO,CAAC;CACnC;AAUD,eAAO,MAAM,aAAa,+EAgdxB,CAAC"}
@@ -19,7 +19,7 @@ var __rest = (this && this.__rest) || function (s, e) {
19
19
  return t;
20
20
  };
21
21
  import { search } from '@cee-eng/hydrajs';
22
- import { Accordion, AccordionContent, AccordionItem, AccordionToggle } from '@patternfly/react-core';
22
+ import { Accordion, AccordionContent, AccordionItem, AccordionToggle, Button, Modal, ModalVariant, } from '@patternfly/react-core';
23
23
  import { PaginatedList, ToastNotification } from '@rh-support/components';
24
24
  import { AbilityContext, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
25
25
  import { getSolrParams } from '@rh-support/utils';
@@ -28,12 +28,14 @@ import isEqual from 'lodash/isEqual';
28
28
  import some from 'lodash/some';
29
29
  import React, { forwardRef, useContext, useEffect, useState } from 'react';
30
30
  import { Trans, useTranslation } from 'react-i18next';
31
+ import { CaseStatusEnum } from '../../../constants/caseDetailsConstants';
31
32
  import { useCaseDispatch, useCaseSelector } from '../../../context/CaseContext';
32
33
  import { useRecommendationDispatchContext, useRecommendationStateContext, } from '../../../context/RecommendationContext';
33
34
  import { useCaseUpdateErrorMessage } from '../../../hooks/useCaseUpdateErrorMessage';
34
35
  import { updateCaseDetails } from '../../../reducers/CaseReducer';
35
36
  import { fetchRecommendations } from '../../../reducers/RecommendationsReducer';
36
37
  import { CaseSolutionsItem } from './CaseSolutionsItem';
38
+ import { HandpickedItem } from './HandpicketItem';
37
39
  // some of the pinned and hadpicked titles are set to 'Red Hat Knowledge Base'
38
40
  // this workaround is added till backend fix
39
41
  const titleFix = (recommendations, allDocs) => __awaiter(void 0, void 0, void 0, function* () {
@@ -81,26 +83,44 @@ const titleFix = (recommendations, allDocs) => __awaiter(void 0, void 0, void 0,
81
83
  // A recommendation can be both link and pin. We use pinnedBy and linkedBy fileds to identify them
82
84
  export const CaseSolutions = forwardRef((props, ref) => {
83
85
  const caseUpdateError = useCaseUpdateErrorMessage();
84
- const { product, version, summary, description, recomendationsObj, isFetchingCaseDetails } = useCaseSelector((state) => ({
86
+ const { product, version, summary, description, recomendationsObj, isFetchingCaseDetails, caseStatus } = useCaseSelector((state) => ({
85
87
  product: state.caseDetails.product,
86
88
  version: state.caseDetails.version,
87
89
  summary: state.caseDetails.summary,
88
90
  description: state.caseDetails.description,
89
91
  recomendationsObj: state.caseDetails.caseResourceLinks,
90
92
  isFetchingCaseDetails: state.isFetchingCaseDetails,
93
+ caseStatus: state.caseDetails.status,
91
94
  }), isEqual);
92
95
  const caseDispatch = useCaseDispatch();
93
96
  const { recommendationState: { isLoadingRecommendations, allDocs }, } = useRecommendationStateContext();
94
97
  const recommendationsDispatch = useRecommendationDispatchContext();
95
98
  const { caseNumber, isSecureSupportAccount } = props;
96
99
  const [isPinLoading, setIsPinLoading] = useState({});
97
- const [expanded, setExpanded] = useState('sol-handpicked');
100
+ const [isCaseCloseLoading, setIsCaseCloseLoading] = useState(false);
101
+ const [handPickedOpen, setHandPickedOpen] = useState(false);
102
+ const [pinnedOpen, setPinnedOpen] = useState(false);
98
103
  const [recommendations, setRecommendations] = useState([]);
99
104
  const [topRecommendations, setTopRecommendations] = useState([]);
105
+ const [isCloseCaseModalOpen, setIsCloseCaseModalOpen] = useState(false);
100
106
  const ability = useContext(AbilityContext);
101
107
  const { t } = useTranslation();
102
108
  const hasPin = some(recommendations, (p) => p.isPinned);
103
109
  const hasLink = some(recommendations, (p) => p.isLinked);
110
+ const handleCaseClose = () => __awaiter(void 0, void 0, void 0, function* () {
111
+ try {
112
+ setIsCaseCloseLoading(true);
113
+ yield updateCaseDetails(caseDispatch, props.caseNumber, { status: CaseStatusEnum.CLOSED });
114
+ ToastNotification.addSuccessMessage(t('Status has been successfully updated'));
115
+ setIsCloseCaseModalOpen(false);
116
+ }
117
+ catch (err) {
118
+ caseUpdateError.showError(err, t('Status failed to update'));
119
+ }
120
+ finally {
121
+ setIsCaseCloseLoading(false);
122
+ }
123
+ });
104
124
  const updateRecommendation = (recommendationToUpdate, linked) => __awaiter(void 0, void 0, void 0, function* () {
105
125
  const recommendation = {
106
126
  resourceId: recommendationToUpdate.resourceId,
@@ -210,49 +230,57 @@ export const CaseSolutions = forwardRef((props, ref) => {
210
230
  }
211
231
  }, [allDocs, isFetchingCaseDetails, isLoadingRecommendations, recomendationsObj]);
212
232
  const renderTopRecommendations = (recommendation, index, type) => (React.createElement(React.Fragment, null,
213
- canPinUnpin && (React.createElement(CaseSolutionsItem, { showPin: true, type: type, pinTitle: recommendation.isPinned ? 'Unpin' : 'Pin', isPinLoading: isPinLoading, index: index, recommendation: recommendation, onPinClicked: updateRecommendations(recommendation, recommendation.isPinned, undefined) })),
214
- canLinkUnlink && (React.createElement(CaseSolutionsItem, { showLink: true, type: type, pinTitle: recommendation.isLinked ? 'Unlink' : 'Link', isPinLoading: isPinLoading, index: index, recommendation: recommendation, onPinClicked: updateRecommendations(recommendation, undefined, recommendation.isLinked) }))));
233
+ canPinUnpin && (React.createElement(CaseSolutionsItem, { showPin: true, type: type, pinTitle: recommendation.isPinned ? t('Unpin') : t('Pin'), isPinLoading: isPinLoading, index: index, recommendation: recommendation, onPinClicked: updateRecommendations(recommendation, recommendation.isPinned, undefined) })),
234
+ canLinkUnlink && (React.createElement(CaseSolutionsItem, { showLink: true, type: type, pinTitle: recommendation.isLinked ? t('Unlink') : t('Link'), isPinLoading: isPinLoading, index: index, recommendation: recommendation, onPinClicked: updateRecommendations(recommendation, undefined, recommendation.isLinked) }))));
215
235
  // customer logged in: we show pins and perform pin/unpin
216
- const renderPinsByCustomer = (recommendation, index, type) => (React.createElement(CaseSolutionsItem, { showPin: true, type: type, pinTitle: recommendation.isPinned ? 'Unpin' : 'Pin', isPinLoading: isPinLoading, index: index, recommendation: recommendation, onPinClicked: updateRecommendations(recommendation, recommendation.isPinned, undefined) }));
236
+ const renderPinsByCustomer = (recommendation, index, type) => (React.createElement(CaseSolutionsItem, { showPin: true, isPinned: true, type: type, pinTitle: recommendation.isPinned ? t('Unpin') : t('Pin'), isPinLoading: isPinLoading, index: index, recommendation: recommendation, onPinClicked: updateRecommendations(recommendation, recommendation.isPinned, undefined) }));
217
237
  // customer logged in: we show links but perform pin/unpin
218
- const renderHandpickedCustomerView = (recommendation, index, type) => (React.createElement(CaseSolutionsItem, { showPin: true, type: type, pinTitle: recommendation.isPinnedAndLinked ? 'Unpin' : 'Pin', isPinLoading: isPinLoading, index: index, recommendation: recommendation, onPinClicked: updateRecommendations(recommendation, recommendation.isPinned, undefined) }));
238
+ const renderHandpickedCustomerView = (recommendation, index, type) => (React.createElement(HandpickedItem, { type: type, caseNumber: props.caseNumber, pinTitle: recommendation.isPinnedAndLinked ? t('Unpin') : t('Pin'), isPinLoading: isPinLoading, index: index, recommendation: recommendation, onRecommendationLike: () => setIsCloseCaseModalOpen(true) }));
219
239
  // redhatter logged in: we show pins but perform link/unlink
220
- const renderPinnedByCustomerRedhatterView = (recommendation, index, type) => (React.createElement(CaseSolutionsItem, { showLink: true, type: type, pinTitle: recommendation.isPinnedAndLinked ? 'Unpin' : 'Pin', isPinLoading: isPinLoading, index: index, recommendation: recommendation, onPinClicked: updateRecommendations(recommendation, undefined, recommendation.isLinked) }));
240
+ const renderPinnedByCustomerRedhatterView = (recommendation, index, type) => (React.createElement(CaseSolutionsItem, { showLink: true, type: type, pinTitle: recommendation.isPinnedAndLinked ? t('Unpin') : t('Pin'), isPinLoading: isPinLoading, index: index, recommendation: recommendation, onPinClicked: updateRecommendations(recommendation, undefined, recommendation.isLinked) }));
221
241
  // redhatter logged in: we show links and perform link/unlink
222
- const renderHandPickedByRedHatter = (recommendation, index, type) => (React.createElement(CaseSolutionsItem, { showLink: true, type: type, pinTitle: recommendation.isLinked ? 'Unlink' : 'Link', isPinLoading: isPinLoading, index: index, recommendation: recommendation, onPinClicked: updateRecommendations(recommendation, undefined, recommendation.isLinked) }));
223
- const setExpandedSection = (id) => {
224
- expanded === id ? setExpanded('') : setExpanded(id);
225
- };
242
+ const renderHandPickedByRedHatter = (recommendation, index, type) => (React.createElement("div", { className: "pf-v5-u-ml-lg" },
243
+ React.createElement(CaseSolutionsItem, { showLink: true, type: type, pinTitle: recommendation.isLinked ? t('Unlink') : t('Link'), isPinLoading: isPinLoading, index: index, recommendation: recommendation, onPinClicked: updateRecommendations(recommendation, undefined, recommendation.isLinked) })));
244
+ const linkedRecommendations = recommendations.filter((r) => r.isLinked);
245
+ const pinnedRecommendations = recommendations.filter((r) => r.isPinned);
246
+ const closeCaseModal = (React.createElement(Modal, { variant: ModalVariant.small, title: t('Did this solve your case?'), isOpen: isCloseCaseModalOpen && caseStatus !== CaseStatusEnum.CLOSED, onClose: () => setIsCloseCaseModalOpen(false), actions: [
247
+ React.createElement(Button, { variant: "primary", isDisabled: isCaseCloseLoading, onClick: () => setIsCloseCaseModalOpen(false), key: "keep-case-open-btn" },
248
+ React.createElement(Trans, null, "Keep it open")),
249
+ React.createElement(Button, { variant: "secondary", isDisabled: isCaseCloseLoading, isLoading: isCaseCloseLoading, key: "close-case-btn", onClick: handleCaseClose },
250
+ React.createElement(Trans, null, "Close case")),
251
+ ] },
252
+ React.createElement(Trans, null, "We're glad to hear this article was helpful. Would you like to close this case or keep it open? You can still view the case after it closes.")));
226
253
  return (React.createElement(React.Fragment, null,
254
+ closeCaseModal,
255
+ React.createElement(Accordion, { isBordered: true, asDefinitionList: false, className: "card card-white case-details-aside-solutions" },
256
+ React.createElement(AccordionItem, null,
257
+ React.createElement(AccordionToggle, { id: "sol-handpicked", isExpanded: handPickedOpen, onClick: () => setHandPickedOpen((pre) => !pre) },
258
+ React.createElement("span", null, canLinkUnlink ? React.createElement(Trans, null, "Handpicked by you") : React.createElement(Trans, null, "Handpicked for this case")),
259
+ React.createElement("span", { className: "badge-item pf-v5-u-font-size-sm pf-v5-u-mx-sm" }, linkedRecommendations.length)),
260
+ React.createElement(AccordionContent, { isHidden: !handPickedOpen }, !hasLink ? (React.createElement(Trans, null, "If a Red Hat engineer finds an article or solution that can help with your case, they'll pin it here.")) : (React.createElement(PaginatedList, { id: "case-details-handpicked-recommendations", listItems: linkedRecommendations.map((rec, index) => canLinkUnlink
261
+ ? renderHandPickedByRedHatter(rec, index, 'handpicked-recommendations')
262
+ : renderHandpickedCustomerView(rec, index, 'handpicked-recommendations')), perPage: 5, className: "list-icons list-icons-flush", isFetching: !!isLoadingRecommendations, perPageOptions: [
263
+ { title: '5', value: 5 },
264
+ { title: '10', value: 10 },
265
+ ] })))),
266
+ React.createElement(AccordionItem, null,
267
+ React.createElement(AccordionToggle, { id: "sol-pinned", isExpanded: pinnedOpen, onClick: () => setPinnedOpen((pre) => !pre) },
268
+ React.createElement("span", null, canLinkUnlink ? (React.createElement(Trans, null, "Pinned by customer")) : (React.createElement(Trans, null, "My pinned recommendations"))),
269
+ React.createElement("span", { className: "badge-item pf-v5-u-font-size-sm pf-v5-u-mx-sm" }, pinnedRecommendations.length)),
270
+ React.createElement(AccordionContent, { isHidden: !pinnedOpen }, !hasPin ? (React.createElement(Trans, null, "When you save a recommended article or solution, you'll see it here. Saved items display only in this case and are not saved for later.")) : (React.createElement(PaginatedList, { id: "case-details-pinned-recommendations", listItems: pinnedRecommendations.map((rec, index) => canLinkUnlink
271
+ ? renderPinnedByCustomerRedhatterView(rec, index, 'pinned-recommendations')
272
+ : renderPinsByCustomer(rec, index, 'pinned-recommendations')), perPage: 5, className: "list-icons list-icons-flush", isFetching: !!isLoadingRecommendations, perPageOptions: [
273
+ { title: '5', value: 5 },
274
+ { title: '10', value: 10 },
275
+ ] }))))),
227
276
  topRecommendations.length > 0 && (React.createElement("div", { className: "card card-white card-support recommendations", ref: ref },
228
277
  React.createElement("h3", { className: "card-heading" },
229
- React.createElement(Trans, null, "Top recommendations")),
278
+ React.createElement(Trans, null, "Knowledgebase recommendations")),
230
279
  React.createElement("div", { className: "card-body" },
231
- React.createElement(PaginatedList, { id: "case-details-top-recommendations", className: "list-icons list-icons-flush", listItems: topRecommendations.map((rec, index) => renderTopRecommendations(rec, index, 'top-recommendations')), perPage: 5, isFetching: !!isLoadingRecommendations, perPageOptions: [
280
+ React.createElement(PaginatedList, { id: "case-details-top-recommendations", className: "list-icons list-icons-flush", listItems: topRecommendations
281
+ .filter((r) => !pinnedRecommendations.some((pr) => pr.resourceId === r.resourceId))
282
+ .map((rec, index) => renderTopRecommendations(rec, index, 'top-recommendations')), perPage: 5, isFetching: !!isLoadingRecommendations, perPageOptions: [
232
283
  { title: '5', value: 5 },
233
284
  { title: '10', value: 10 },
234
- ] })))),
235
- (hasPin || hasLink) && (React.createElement(Accordion, { asDefinitionList: false, className: "card card-white case-details-aside-solutions" },
236
- hasLink && (React.createElement(AccordionItem, null,
237
- React.createElement(AccordionToggle, { id: "sol-handpicked", isExpanded: expanded === 'sol-handpicked', onClick: () => setExpandedSection('sol-handpicked') }, canLinkUnlink ? React.createElement(Trans, null, "Handpicked by you") : React.createElement(Trans, null, "Handpicked for you")),
238
- React.createElement(AccordionContent, { isHidden: expanded !== 'sol-handpicked' },
239
- React.createElement(PaginatedList, { id: "case-details-handpicked-recommendations", listItems: recommendations
240
- .filter((r) => r.isLinked)
241
- .map((rec, index) => canLinkUnlink
242
- ? renderHandPickedByRedHatter(rec, index, 'handpicked-recommendations')
243
- : renderHandpickedCustomerView(rec, index, 'handpicked-recommendations')), perPage: 5, className: "list-icons list-icons-flush", isFetching: !!isLoadingRecommendations, perPageOptions: [
244
- { title: '5', value: 5 },
245
- { title: '10', value: 10 },
246
- ] })))),
247
- hasPin && (React.createElement(AccordionItem, null,
248
- React.createElement(AccordionToggle, { id: "sol-pinned", isExpanded: expanded === 'sol-pinned', onClick: () => setExpandedSection('sol-pinned') }, canLinkUnlink ? React.createElement(Trans, null, "Pinned by customer") : React.createElement(Trans, null, "Your pins")),
249
- React.createElement(AccordionContent, { isHidden: expanded !== 'sol-pinned' },
250
- React.createElement(PaginatedList, { id: "case-details-pinned-recommendations", listItems: recommendations
251
- .filter((r) => r.isPinned)
252
- .map((rec, index) => canLinkUnlink
253
- ? renderPinnedByCustomerRedhatterView(rec, index, 'pinned-recommendations')
254
- : renderPinsByCustomer(rec, index, 'pinned-recommendations')), perPage: 5, className: "list-icons list-icons-flush", isFetching: !!isLoadingRecommendations, perPageOptions: [
255
- { title: '5', value: 5 },
256
- { title: '10', value: 10 },
257
- ] }))))))));
285
+ ] }))))));
258
286
  });
@@ -1,6 +1,8 @@
1
1
  import { ICaseResourceLink } from '@cee-eng/hydrajs/@types/api/public/case';
2
+ import { CaseRecommendationEvalEnum } from '../../../constants/caseDetailsConstants';
2
3
  interface IProps {
3
4
  showPin?: boolean;
5
+ isPinned?: boolean;
4
6
  showLink?: boolean;
5
7
  pinTitle: string;
6
8
  index: number;
@@ -9,10 +11,11 @@ interface IProps {
9
11
  onPinClicked: () => void;
10
12
  type: string;
11
13
  }
12
- interface ICaseDetailAsideRecommendation extends Partial<ICaseResourceLink> {
14
+ export interface ICaseDetailAsideRecommendation extends Partial<ICaseResourceLink> {
13
15
  isPinned?: boolean;
14
16
  isLinked?: boolean;
15
17
  solutionAbstract?: string;
18
+ customerEvaluation?: CaseRecommendationEvalEnum;
16
19
  }
17
20
  export declare function CaseSolutionsItem(props: IProps): JSX.Element;
18
21
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"CaseSolutionsItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseSolutions/CaseSolutionsItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAS5E,UAAU,MAAM;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,8BAA8B,CAAC;IAC/C,YAAY,EAAE,GAAG,CAAC;IAClB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,8BAA+B,SAAQ,OAAO,CAAC,iBAAiB,CAAC;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,eA4C9C"}
1
+ {"version":3,"file":"CaseSolutionsItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseSolutions/CaseSolutionsItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAU5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,UAAU,MAAM;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,8BAA8B,CAAC;IAC/C,YAAY,EAAE,GAAG,CAAC;IAClB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,8BAA+B,SAAQ,OAAO,CAAC,iBAAiB,CAAC;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,0BAA0B,CAAC;CACnD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,eAsD9C"}
@@ -1,6 +1,7 @@
1
- import { Button } from '@patternfly/react-core';
1
+ import { Button, Icon } from '@patternfly/react-core';
2
2
  import LinkIcon from '@patternfly/react-icons/dist/js/icons/link-icon';
3
- import ThumbTackIcon from '@patternfly/react-icons/dist/js/icons/thumb-tack-icon';
3
+ import OutlinedStarIcon from '@patternfly/react-icons/dist/js/icons/outlined-star-icon';
4
+ import StarIcon from '@patternfly/react-icons/dist/js/icons/star-icon';
4
5
  import { LoadingIndicator } from '@rh-support/components';
5
6
  import { cleanupMarkDown, decodeMarkTag, truncate } from '@rh-support/utils';
6
7
  import DOMPurify from 'dompurify';
@@ -9,11 +10,12 @@ export function CaseSolutionsItem(props) {
9
10
  const maxTitleLength = 150;
10
11
  const maxAbstractLength = 150;
11
12
  const isLoading = !!props.isPinLoading[props.recommendation.resourceId];
12
- return (React.createElement(React.Fragment, null,
13
+ return (React.createElement("div", null,
13
14
  React.createElement("div", { className: "recommendation-header" },
14
15
  React.createElement(Button, { title: props.pinTitle, onClick: props.onPinClicked, "data-tracking-id": `case-resource-${props.pinTitle}`, variant: "plain", className: "list-icon" },
15
16
  isLoading && React.createElement(LoadingIndicator, { show: isLoading, size: "xs" }),
16
- !isLoading && props.showPin && React.createElement(ThumbTackIcon, { className: "pinned-resource" }),
17
+ !isLoading && props.showPin && (React.createElement(React.Fragment, null,
18
+ React.createElement(Icon, { size: "md" }, props.isPinned ? (React.createElement(StarIcon, { className: "pinned-resource", color: "0066cc" })) : (React.createElement(OutlinedStarIcon, { className: "pinned-resource", color: "0066cc" }))))),
17
19
  !isLoading && props.showLink && React.createElement(LinkIcon, null)),
18
20
  React.createElement("a", { href: props.recommendation.resourceViewURI, "data-tracking-id": `case-resource-${props.type}-link-${props.index}`, target: "_blank", rel: "noopener noreferrer", dangerouslySetInnerHTML: {
19
21
  __html: DOMPurify.sanitize(truncate(decodeMarkTag(props.recommendation.title || ''), maxTitleLength)),
@@ -0,0 +1,13 @@
1
+ import { ICaseDetailAsideRecommendation } from './CaseSolutionsItem';
2
+ interface IProps {
3
+ pinTitle: string;
4
+ caseNumber: string;
5
+ index: number;
6
+ recommendation: ICaseDetailAsideRecommendation;
7
+ isPinLoading: any;
8
+ onRecommendationLike: () => void;
9
+ type: string;
10
+ }
11
+ export declare function HandpickedItem(props: IProps): JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=HandpicketItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandpicketItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseSolutions/HandpicketItem.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAErE,UAAU,MAAM;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,8BAA8B,CAAC;IAC/C,YAAY,EAAE,GAAG,CAAC;IAClB,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,eAwH3C"}
@@ -0,0 +1,76 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { kcs } from '@cee-eng/hydrajs';
11
+ import { ActionList, ActionListItem, Button, Icon } from '@patternfly/react-core';
12
+ import OutlinedThumbsDownIcon from '@patternfly/react-icons/dist/js/icons/outlined-thumbs-down-icon';
13
+ import OutlinedThumbsUpIcon from '@patternfly/react-icons/dist/js/icons/outlined-thumbs-up-icon';
14
+ import ThumbsDownIcon from '@patternfly/react-icons/dist/js/icons/thumbs-down-icon';
15
+ import ThumbsUpIcon from '@patternfly/react-icons/dist/js/icons/thumbs-up-icon';
16
+ import { LoadingIndicator } from '@rh-support/components';
17
+ import { cleanupMarkDown, decodeMarkTag, truncate } from '@rh-support/utils';
18
+ import DOMPurify from 'dompurify';
19
+ import React, { useState } from 'react';
20
+ import { Trans } from 'react-i18next';
21
+ import { CaseRecommendationEvalEnum } from '../../../constants/caseDetailsConstants';
22
+ export function HandpickedItem(props) {
23
+ const { recommendation } = props;
24
+ const [evaluation, setEvaluation] = useState((recommendation === null || recommendation === void 0 ? void 0 : recommendation.customerEvaluation) || CaseRecommendationEvalEnum.NEUTRAL);
25
+ const [helpfulBtnLoading, setHelpfulBtnLoading] = useState(false);
26
+ const [notHelpfulBtnLoading, setNotHelpfulBtnLoading] = useState(false);
27
+ const maxAbstractLength = 150;
28
+ const maxTitleLength = 150;
29
+ const updateEvaluation = (customerEvaluation) => __awaiter(this, void 0, void 0, function* () {
30
+ if (customerEvaluation === CaseRecommendationEvalEnum.HELPFUL) {
31
+ setHelpfulBtnLoading(true);
32
+ }
33
+ else {
34
+ setNotHelpfulBtnLoading(true);
35
+ }
36
+ if (evaluation === customerEvaluation)
37
+ customerEvaluation = CaseRecommendationEvalEnum.NEUTRAL;
38
+ setEvaluation(customerEvaluation);
39
+ const evalBody = {
40
+ caseNumber: props.caseNumber,
41
+ customerEvaluation: customerEvaluation,
42
+ resourceType: recommendation.resourceType,
43
+ resourceId: recommendation.resourceId,
44
+ };
45
+ //resourceURI is required for non Solution/Article KCS resources
46
+ if (recommendation.resourceType !== 'Solution') {
47
+ evalBody.resourceURI = recommendation.resourceURI;
48
+ }
49
+ try {
50
+ yield kcs.postResourceEvaluation(evalBody);
51
+ }
52
+ catch (e) {
53
+ //
54
+ }
55
+ setHelpfulBtnLoading(false);
56
+ setNotHelpfulBtnLoading(false);
57
+ if (customerEvaluation === CaseRecommendationEvalEnum.HELPFUL) {
58
+ props.onRecommendationLike();
59
+ }
60
+ });
61
+ return (React.createElement("div", { className: "handpicked-resource pf-v5-u-mx-sm" },
62
+ React.createElement("div", { className: "recommendation-header" },
63
+ React.createElement("a", { href: recommendation.resourceViewURI, "data-tracking-id": `case-resource-${props.type}-link-${props.index}`, target: "_blank", rel: "noopener noreferrer", dangerouslySetInnerHTML: {
64
+ __html: DOMPurify.sanitize(truncate(decodeMarkTag(recommendation.title || ''), maxTitleLength)),
65
+ } })),
66
+ React.createElement("div", { className: "result-body", dangerouslySetInnerHTML: {
67
+ __html: DOMPurify.sanitize(truncate(cleanupMarkDown(decodeMarkTag(props.recommendation.solutionAbstract || '')), maxAbstractLength)),
68
+ } }),
69
+ React.createElement(ActionList, { className: "pf-v5-u-my-xs" },
70
+ React.createElement(ActionListItem, null,
71
+ React.createElement(Button, { variant: "link", isDisabled: helpfulBtnLoading || notHelpfulBtnLoading, icon: helpfulBtnLoading ? (React.createElement(LoadingIndicator, { show: true, size: "xs" })) : (React.createElement(Icon, { size: "md", className: "eval-icons" }, evaluation === CaseRecommendationEvalEnum.HELPFUL ? (React.createElement(ThumbsUpIcon, null)) : (React.createElement(OutlinedThumbsUpIcon, null)))), onClick: () => updateEvaluation(CaseRecommendationEvalEnum.HELPFUL), "data-tracking-id": "recommendation-helpful" },
72
+ React.createElement(Trans, null, "This was helpful"))),
73
+ React.createElement(ActionListItem, { className: "pf-v5-u-ml-lg" },
74
+ React.createElement(Button, { variant: "link", isDisabled: helpfulBtnLoading || notHelpfulBtnLoading, icon: notHelpfulBtnLoading ? (React.createElement(LoadingIndicator, { show: true, size: "xs" })) : (React.createElement(Icon, { size: "md", className: "eval-icons" }, evaluation === CaseRecommendationEvalEnum.NOT_HELPFUL ? (React.createElement(ThumbsDownIcon, null)) : (React.createElement(OutlinedThumbsDownIcon, null)))), onClick: () => updateEvaluation(CaseRecommendationEvalEnum.NOT_HELPFUL), "data-tracking-id": "recommendation-not-helpful" },
75
+ React.createElement(Trans, null, "Not helpful"))))));
76
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"RelatedTickets.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/RelatedTickets/RelatedTickets.tsx"],"names":[],"mappings":"AAqCA,QAAA,MAAM,cAAc,mBA8KnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"RelatedTickets.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/RelatedTickets/RelatedTickets.tsx"],"names":[],"mappings":"AAmCA,QAAA,MAAM,cAAc,mBA0KnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -7,11 +7,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { kase } from '@cee-eng/hydrajs';
11
10
  import { Badge, EmptyState, EmptyStateHeader, EmptyStateIcon, EmptyStateVariant, Pagination, SearchInput, ToggleGroup, ToggleGroupItem, } from '@patternfly/react-core';
12
11
  import CubesIcon from '@patternfly/react-icons/dist/esm/icons/cubes-icon';
13
12
  import { Table, Tbody, Td, Th, Thead, Tr } from '@patternfly/react-table';
14
- import { useFetch } from '@rh-support/components';
15
13
  import isEqual from 'lodash/isEqual';
16
14
  import React, { useEffect, useState } from 'react';
17
15
  import { useTranslation } from 'react-i18next';
@@ -27,13 +25,11 @@ const RelatedTickets = () => {
27
25
  const [currentPage, setCurrentPage] = useState(1);
28
26
  const [itemsPerPage, setItemsPerPage] = useState(10);
29
27
  const [searchQuery, setSearchQuery] = useState('');
30
- const { caseNumber, bugzillaFetch } = useCaseSelector((state) => ({
28
+ const { caseNumber, bugzillaFetch, externalTrackers } = useCaseSelector((state) => ({
31
29
  caseNumber: state.caseDetails.caseNumber,
32
30
  bugzillaFetch: state.caseDetails.bugzillas,
31
+ externalTrackers: state.caseDetails.externalTrackers,
33
32
  }), isEqual);
34
- const { request: getCaseJiras } = useFetch(kase.fetchLinkedJiras, {
35
- propgateErrors: true,
36
- });
37
33
  const [bugzillaData, setBugzillaData] = useState([]);
38
34
  const [jiraData, setJiraData] = useState([]);
39
35
  const { t } = useTranslation();
@@ -53,14 +49,14 @@ const RelatedTickets = () => {
53
49
  date: new Date(bugzilla.linkedAt),
54
50
  }));
55
51
  setBugzillaData(bugzillaTransformed);
56
- const jiraResults = yield getCaseJiras(caseNumber);
52
+ const jiraResults = externalTrackers;
57
53
  const jiraTransformed = jiraResults.map((jira) => ({
58
54
  id: jira.resourceKey,
59
55
  type: 'Jira',
60
56
  link: jira.resourceURL || '',
61
57
  status: jira.status || 'N/A',
62
58
  title: jira.title || 'N/A',
63
- date: new Date(jira.createdDate),
59
+ date: new Date(jira.createdAt),
64
60
  }));
65
61
  setJiraData(jiraTransformed);
66
62
  }
@@ -70,7 +66,7 @@ const RelatedTickets = () => {
70
66
  });
71
67
  fetchData();
72
68
  // eslint-disable-next-line react-hooks/exhaustive-deps
73
- }, [bugzillaFetch, caseNumber]);
69
+ }, [bugzillaFetch, caseNumber, externalTrackers]);
74
70
  const combinedData = [...bugzillaData, ...jiraData].sort((a, b) => b.date.getTime() - a.date.getTime());
75
71
  const filteredData = combinedData.filter((item) => {
76
72
  const lowercasedQuery = searchQuery.toLowerCase();
@@ -87,6 +83,7 @@ const RelatedTickets = () => {
87
83
  return item.type === 'Jira';
88
84
  return true;
89
85
  });
86
+ //pagination
90
87
  const startIdx = (currentPage - 1) * itemsPerPage;
91
88
  const endIdx = startIdx + itemsPerPage;
92
89
  const displayData = filteredData.slice(startIdx, endIdx);
@@ -81,7 +81,7 @@ export function SessionRestore(props) {
81
81
  let session = {
82
82
  userAgent,
83
83
  originatingSystem: userAgent,
84
- referrerUrl: referrerUrl.substring(0, SESSION_REFERRER_URL_LIMIT),
84
+ referrerUrl: (caseDetails.referrer || referrerUrl).substring(0, SESSION_REFERRER_URL_LIMIT),
85
85
  };
86
86
  !sessionRestore.sessionCreationStatus.isCreating &&
87
87
  !sessionRestore.sessionCreationStatus.isError &&
@@ -209,6 +209,7 @@ export const uploadFile = ({ dispatch, idToUploadTo, localFile, originalFile, in
209
209
  size: localFile.size,
210
210
  }, putObjectRequest, listener, true, { partSize: 5 * 1024 * 1024, queueSize: 5 }, isSecureSupport, Object.assign(Object.assign({}, slowUploadConfig), { preferSlowS3Upload: Config.userConfig.preferSlowS3Upload }));
211
211
  }
212
+ attachmentId && updateAttachmentIdForFile(dispatch, attachmentId, index);
212
213
  const uploadPayload = {
213
214
  uploadStatus: isSessionId ? UploadStatusConstants.uploadedOnSession : UploadStatusConstants.uploadedOnCase,
214
215
  uploadErrorMessage: '',
@@ -216,7 +217,6 @@ export const uploadFile = ({ dispatch, idToUploadTo, localFile, originalFile, in
216
217
  onAbort: undefined,
217
218
  };
218
219
  updateUploadMetadata(dispatch, index, uploadPayload);
219
- attachmentId && updateAttachmentIdForFile(dispatch, attachmentId, index);
220
220
  if (isSessionId && needsAnalyzing) {
221
221
  doSosReportAnalysisForFile(dispatch, idToUploadTo, attachmentId, localFile, isSessionId, index);
222
222
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAUvD,OAAO,EAAqB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AASrF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,eA6VtD"}
1
+ {"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAUvD,OAAO,EAAqB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AASrF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,eAoWtD"}
@@ -74,6 +74,12 @@ export function GlobalTroubleshootEffects(props) {
74
74
  if (isFirstMountProduct.current) {
75
75
  const productFromUrl = urlQueryParams.product;
76
76
  const versionFromUrl = urlQueryParams.version;
77
+ const sourceFromUrl = urlQueryParams.source;
78
+ if (sourceFromUrl) {
79
+ setCaseDetails(caseDispatch, {
80
+ referrer: sourceFromUrl,
81
+ });
82
+ }
77
83
  if (!productFromUrl ||
78
84
  allProducts.isFetching ||
79
85
  allProducts.isError ||
@@ -13,6 +13,11 @@ export declare enum CaseStatusEnum {
13
13
  WAITING_ON_CUSTOMER = "Waiting on Customer",
14
14
  WAITING_ON_REDHAT = "Waiting on Red Hat"
15
15
  }
16
+ export declare enum CaseRecommendationEvalEnum {
17
+ HELPFUL = "1",
18
+ NOT_HELPFUL = "-1",
19
+ NEUTRAL = "0"
20
+ }
16
21
  export declare const PHONE_LINE_CANNOT_BE_EMPTY = "Phone number cannot be empty when country code is given.";
17
22
  export declare const PHONE_NO_CHAR_ERROR = "Phone number can only have digits.";
18
23
  export declare const PHONE_IS_NOT_VALID = "Phone number is invalid.";
@@ -1 +1 @@
1
- {"version":3,"file":"caseDetailsConstants.d.ts","sourceRoot":"","sources":["../../../src/constants/caseDetailsConstants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oCAAoC,yBAAyB,CAAC;AAE3E,oBAAY,mBAAmB;IAC3B,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,UAAU,gBAAgB;IAC1B,eAAe,oBAAoB;CACtC;AAED,oBAAY,cAAc;IACtB,MAAM,WAAW;IACjB,mBAAmB,wBAAwB;IAC3C,iBAAiB,uBAAuB;CAC3C;AAED,eAAO,MAAM,0BAA0B,6DAA6D,CAAC;AAErG,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AAExE,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAE7D,eAAO,MAAM,iBAAiB,8EAA8E,CAAC"}
1
+ {"version":3,"file":"caseDetailsConstants.d.ts","sourceRoot":"","sources":["../../../src/constants/caseDetailsConstants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oCAAoC,yBAAyB,CAAC;AAE3E,oBAAY,mBAAmB;IAC3B,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,UAAU,gBAAgB;IAC1B,eAAe,oBAAoB;CACtC;AAED,oBAAY,cAAc;IACtB,MAAM,WAAW;IACjB,mBAAmB,wBAAwB;IAC3C,iBAAiB,uBAAuB;CAC3C;AAED,oBAAY,0BAA0B;IAClC,OAAO,MAAM;IACb,WAAW,OAAO;IAClB,OAAO,MAAM;CAChB;AAED,eAAO,MAAM,0BAA0B,6DAA6D,CAAC;AAErG,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AAExE,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAE7D,eAAO,MAAM,iBAAiB,8EAA8E,CAAC"}
@@ -15,6 +15,12 @@ export var CaseStatusEnum;
15
15
  CaseStatusEnum["WAITING_ON_CUSTOMER"] = "Waiting on Customer";
16
16
  CaseStatusEnum["WAITING_ON_REDHAT"] = "Waiting on Red Hat";
17
17
  })(CaseStatusEnum || (CaseStatusEnum = {}));
18
+ export var CaseRecommendationEvalEnum;
19
+ (function (CaseRecommendationEvalEnum) {
20
+ CaseRecommendationEvalEnum["HELPFUL"] = "1";
21
+ CaseRecommendationEvalEnum["NOT_HELPFUL"] = "-1";
22
+ CaseRecommendationEvalEnum["NEUTRAL"] = "0";
23
+ })(CaseRecommendationEvalEnum || (CaseRecommendationEvalEnum = {}));
18
24
  export const PHONE_LINE_CANNOT_BE_EMPTY = 'Phone number cannot be empty when country code is given.';
19
25
  export const PHONE_NO_CHAR_ERROR = 'Phone number can only have digits.';
20
26
  export const PHONE_IS_NOT_VALID = 'Phone number is invalid.';
@@ -1 +1 @@
1
- {"version":3,"file":"CaseHelpers.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAmB3D,OAAO,EAUH,UAAU,EAeb,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,sBAAsB,SAAU,mBAAmB,EAAE,wBAMjE,CAAC;AAEF,eAAO,MAAM,2BAA2B,eAAgB,WAAW,KAAG,MAOrE,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAS,mBAAmB,SAAS,MAAM,sBAyB9E,CAAC;AAIF,eAAO,MAAM,qBAAqB,UACvB,MAAM,gBACC,MAAM,uBACC,MAAM,yBACJ,MAAM,kBACb,MAAM,YACZ,MAAM,YACN,MAAM,KACjB,MAyBF,CAAC;AAIF,eAAO,MAAM,oBAAoB,UACtB,MAAM,gBACC,MAAM,uBACC,MAAM,yBACJ,MAAM,KAC9B,MAQF,CAAC;AAEF,eAAO,MAAM,uBAAuB,iBAAkB,MAAM,YAAY,MAAM,KAAG,MAQhF,CAAC;AAEF,eAAO,MAAM,uBAAuB,iBAAkB,MAAM,YAAY,MAAM,KAAG,MAQhF,CAAC;AAEF,eAAO,MAAM,sBAAsB,aAAc,MAAM,KAAG,MAKzD,CAAC;AAEF,eAAO,MAAM,gBAAgB,+CAqC5B,CAAC;AAIF,eAAO,MAAM,gBAAgB,cAAe,UAAU,wBAAwB,QAAQ,eAAe,CAAC,KAAG,OA6BxG,CAAC;AAEF,eAAO,MAAM,oBAAoB,cAClB,UAAU,wBACC,QAAQ,eAAe,CAAC,KAC/C,OAyBF,CAAC;AAEF,eAAO,MAAM,0BAA0B,cACxB,UAAU,wBACC,QAAQ,eAAe,CAAC,KAC/C,OAmBF,CAAC;AAIF,eAAO,MAAM,6BAA6B,cAC3B,UAAU,wBACC,QAAQ,eAAe,CAAC,KAC/C,OAuBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,cACf,UAAU,gBACP,YAAY,iBACZ,OAAO,KACtB,QAAQ,YAAY,CA6EtB,CAAC;AAEF,eAAO,MAAM,wBAAwB,qBAAsB,YAAY,EAAE,KAAG,YAAY,EAEvF,CAAC;AACF,eAAO,MAAM,yBAAyB,qBAAsB,YAAY,EAAE,KAAG,OAE5E,CAAC;AAEF,eAAO,MAAM,yBAAyB,gBACrB,YAAY,6BACE,MAAM,mBAChB,MAAM,KACxB,QAAQ,YAAY,CAiCtB,CAAC;AACF,eAAO,MAAM,yBAAyB,gBACrB,QAAQ,YAAY,CAAC,gCACJ,QAAQ,EAAE,KACzC,eAiDF,CAAC"}
1
+ {"version":3,"file":"CaseHelpers.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAmB3D,OAAO,EAUH,UAAU,EAeb,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,sBAAsB,SAAU,mBAAmB,EAAE,wBAMjE,CAAC;AAEF,eAAO,MAAM,2BAA2B,eAAgB,WAAW,KAAG,MAOrE,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAS,mBAAmB,SAAS,MAAM,sBAyB9E,CAAC;AAIF,eAAO,MAAM,qBAAqB,UACvB,MAAM,gBACC,MAAM,uBACC,MAAM,yBACJ,MAAM,kBACb,MAAM,YACZ,MAAM,YACN,MAAM,KACjB,MAyBF,CAAC;AAIF,eAAO,MAAM,oBAAoB,UACtB,MAAM,gBACC,MAAM,uBACC,MAAM,yBACJ,MAAM,KAC9B,MAQF,CAAC;AAEF,eAAO,MAAM,uBAAuB,iBAAkB,MAAM,YAAY,MAAM,KAAG,MAQhF,CAAC;AAEF,eAAO,MAAM,uBAAuB,iBAAkB,MAAM,YAAY,MAAM,KAAG,MAQhF,CAAC;AAEF,eAAO,MAAM,sBAAsB,aAAc,MAAM,KAAG,MAKzD,CAAC;AAEF,eAAO,MAAM,gBAAgB,+CAqC5B,CAAC;AAIF,eAAO,MAAM,gBAAgB,cAAe,UAAU,wBAAwB,QAAQ,eAAe,CAAC,KAAG,OA6BxG,CAAC;AAEF,eAAO,MAAM,oBAAoB,cAClB,UAAU,wBACC,QAAQ,eAAe,CAAC,KAC/C,OAyBF,CAAC;AAEF,eAAO,MAAM,0BAA0B,cACxB,UAAU,wBACC,QAAQ,eAAe,CAAC,KAC/C,OAmBF,CAAC;AAIF,eAAO,MAAM,6BAA6B,cAC3B,UAAU,wBACC,QAAQ,eAAe,CAAC,KAC/C,OAuBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,cACf,UAAU,gBACP,YAAY,iBACZ,OAAO,KACtB,QAAQ,YAAY,CA6EtB,CAAC;AAEF,eAAO,MAAM,wBAAwB,qBAAsB,YAAY,EAAE,KAAG,YAAY,EAEvF,CAAC;AACF,eAAO,MAAM,yBAAyB,qBAAsB,YAAY,EAAE,KAAG,OAE5E,CAAC;AAEF,eAAO,MAAM,yBAAyB,gBACrB,YAAY,6BACE,MAAM,mBAChB,MAAM,KACxB,QAAQ,YAAY,CAkCtB,CAAC;AACF,eAAO,MAAM,yBAAyB,gBACrB,QAAQ,YAAY,CAAC,gCACJ,QAAQ,EAAE,KACzC,eAiDF,CAAC"}
@@ -236,6 +236,7 @@ export const createCasePayload = (caseState, sessionItem, isCaseCreate = false)
236
236
  !isEmpty(case_details.caseLanguage) && (casePayload.caseLanguage = case_details.caseLanguage);
237
237
  case_details.cep && (casePayload.cep = !!case_details.cep);
238
238
  !isEmpty(case_details.hostname) && (casePayload.hostname = case_details.hostname);
239
+ !isEmpty(case_details.referrer) && (casePayload.referrer = case_details.referrer);
239
240
  !isEmpty(case_details.caseResourceLinks) && (casePayload.caseResourceLinks = case_details.caseResourceLinks);
240
241
  !isEmpty(trimAndReplacePlus((case_details === null || case_details === void 0 ? void 0 : case_details.phoneCountryCode) || '')) &&
241
242
  (casePayload.phoneCountryCode = (_b = case_details.phoneCountryCode) === null || _b === void 0 ? void 0 : _b.trim());
@@ -326,6 +327,7 @@ export const getCaseFromSessionDetails = (sessionItem, loggedInUserAccountNumber
326
327
  userAgent: session.userAgent,
327
328
  originatingSystem: session.originatingSystem,
328
329
  screenSessionRequested: (_p = sessionDetails.screenSessionRequested) !== null && _p !== void 0 ? _p : false,
330
+ referrer: session.referrerUrl,
329
331
  };
330
332
  };
331
333
  export const getSessionDetailsFromCase = (caseDetails, selectedNotificationContacts) => {
@@ -1 +1 @@
1
- {"version":3,"file":"CaseReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseReducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CaseReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseReducer.ts"],"names":[],"mappings":"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"}
@@ -596,6 +596,7 @@ export const fetchCaseDetails = (dispatch, caseNumber, loggedInUserRights, refre
596
596
  phone: data.phone || '',
597
597
  suppliedPhoneNumberVerified: data.suppliedPhoneNumberVerified || undefined,
598
598
  screenSessionRequested: (_k = data.screenSessionRequested) !== null && _k !== void 0 ? _k : false,
599
+ externalTrackers: data.externalTrackers || [],
599
600
  };
600
601
  caseDetails.chats = data === null || data === void 0 ? void 0 : data.chats;
601
602
  caseDetails.comments = data === null || data === void 0 ? void 0 : data.comments;
@@ -5,6 +5,7 @@ export interface IRouteQueryParams {
5
5
  caseCreate?: string;
6
6
  clusterId?: string;
7
7
  seSessionId?: string;
8
+ source?: string;
8
9
  summary?: string;
9
10
  }
10
11
  export interface ISectionConfiguration extends WizardStep {
@@ -1 +1 @@
1
- {"version":3,"file":"RouteConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/RouteConstNTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACrD,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IAGjB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;CAAG;AACnC,oBAAY,gBAAgB;IACxB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAClB;AAKD,eAAO,MAAM,4BAA4B,EAAE,gBAAgB,EAI1D,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,gBAAgB,EAK9D,CAAC;AAEF,eAAO,MAAM,iCAAiC,oBAQ7C,CAAC;AAEF,eAAO,MAAM,gCAAgC,oBAQ5C,CAAC;AAEF,eAAO,MAAM,4BAA4B,oBAQxC,CAAC;AAGF,eAAO,MAAM,0BAA0B,oBAAiC,CAAC;AAEzE,eAAO,MAAM,mCAAmC,oBAI/C,CAAC;AAEF,eAAO,MAAM,kCAAkC,oBAO9C,CAAC;AAEF,eAAO,MAAM,+BAA+B,oBAM3C,CAAC;AAEF,eAAO,MAAM,sCAAsC,oBAAyD,CAAC;AAE7G,eAAO,MAAM,qCAAqC,oBAAgE,CAAC;AAEnH,eAAO,MAAM,6BAA6B,oBAAiC,CAAC;AAE5E,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,EAKtD,CAAC"}
1
+ {"version":3,"file":"RouteConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/RouteConstNTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAIhB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACrD,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IAGjB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;CAAG;AACnC,oBAAY,gBAAgB;IACxB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAClB;AAKD,eAAO,MAAM,4BAA4B,EAAE,gBAAgB,EAI1D,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,gBAAgB,EAK9D,CAAC;AAEF,eAAO,MAAM,iCAAiC,oBAQ7C,CAAC;AAEF,eAAO,MAAM,gCAAgC,oBAQ5C,CAAC;AAEF,eAAO,MAAM,4BAA4B,oBAQxC,CAAC;AAGF,eAAO,MAAM,0BAA0B,oBAAiC,CAAC;AAEzE,eAAO,MAAM,mCAAmC,oBAI/C,CAAC;AAEF,eAAO,MAAM,kCAAkC,oBAO9C,CAAC;AAEF,eAAO,MAAM,+BAA+B,oBAM3C,CAAC;AAEF,eAAO,MAAM,sCAAsC,oBAAyD,CAAC;AAE7G,eAAO,MAAM,qCAAqC,oBAAgE,CAAC;AAEnH,eAAO,MAAM,6BAA6B,oBAAiC,CAAC;AAE5E,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,EAKtD,CAAC"}
@@ -549,11 +549,6 @@ div.support-grid-case-details.support-case {
549
549
  font-weight: 600;
550
550
  }
551
551
 
552
- .result-body {
553
- font-size: 13px;
554
- word-break: break-word;
555
- }
556
-
557
552
  .card-body ul {
558
553
  list-style-type: none;
559
554
 
@@ -650,14 +645,17 @@ mark {
650
645
 
651
646
  // pinning feature - can't be overly specific here
652
647
  .recommendation-header {
653
- font-size: 15px;
648
+ font-size: 14px;
649
+ font-weight: 600;
650
+
651
+ .pinned-resource {
652
+ color: var(--pf-v5-global--primary-color--100);
653
+ }
654
654
 
655
- button:hover[title='Pin'],
656
655
  button:hover[title='Link'] {
657
656
  color: #6ca100;
658
657
  }
659
658
 
660
- button[title='Unpin'],
661
659
  button[title='Unlink'] {
662
660
  color: #6ca100;
663
661
 
@@ -667,6 +665,12 @@ mark {
667
665
  }
668
666
  }
669
667
 
668
+ .result-body {
669
+ font-size: 13px;
670
+ word-break: break-word;
671
+ color: black;
672
+ }
673
+
670
674
  .form-group:last-child {
671
675
  margin-bottom: 0;
672
676
  }
@@ -877,3 +881,65 @@ svg.pf-v5-u-ml-xs.icon-size {
877
881
  font-family: 'DejaVu Sans';
878
882
  src: url('https://access.redhat.com/chrome_themes/nimbus/fonts/unifont-15.0.06.ttf') format('truetype');
879
883
  }
884
+
885
+ .case-type-section {
886
+ .case-type-category {
887
+ height: 75px;
888
+ padding: 0.5rem 1rem;
889
+ border: 1px solid #d9d9d9;
890
+ font-weight: 600;
891
+ line-height: 1.6;
892
+ background-color: var(--pf-v5-global--palette--black-150);
893
+ color: var(--pf-v5-global--primary-color--100);
894
+ word-break: break-word;
895
+ &.selected-case-type {
896
+ border-color: var(--pf-v5-global--primary-color--100);
897
+ background-color: #e6e6e6;
898
+ }
899
+
900
+ &:hover,
901
+ &:focus {
902
+ border-color: var(--pf-v5-global--primary-color--100);
903
+ background-color: #e6e6e6;
904
+ }
905
+
906
+ &:active {
907
+ border-color: var(--pf-v5-global--primary-color--100);
908
+ }
909
+ }
910
+ }
911
+
912
+ .badge-item {
913
+ background-color: var(--pf-v5-global--BackgroundColor--200);
914
+ padding: 0 8px 0 8px;
915
+ border-radius: 10px;
916
+ color: black;
917
+ }
918
+
919
+ #case-details-handpicked-recommendations {
920
+ li {
921
+ padding: 0;
922
+ }
923
+ li:not(:first-child) {
924
+ .handpicked-resource {
925
+ margin-top: var(--pf-v5-global--spacer--lg);
926
+ }
927
+ }
928
+ }
929
+
930
+ .handpicked-resource {
931
+ button {
932
+ padding: 0;
933
+ display: flex;
934
+ }
935
+ .eval-icons span {
936
+ color: var(--pf-v5-global--primary-color--200);
937
+ }
938
+ }
939
+
940
+ #case-details-handpicked-recommendations-pagination-bottom-pagination,
941
+ #case-details-pinned-recommendations-pagination-bottom-pagination {
942
+ -ms-flex-pack: justify;
943
+ justify-content: space-between;
944
+ padding: 0.2rem;
945
+ }
@@ -200,6 +200,7 @@
200
200
 
201
201
  h3 {
202
202
  margin-bottom: 0;
203
+ margin-top: 0;
203
204
 
204
205
  .pf-v5-c-accordion__toggle {
205
206
  .pf-v5-c-accordion__toggle-text {
@@ -281,6 +282,7 @@
281
282
  background-color: #286869 !important;
282
283
  .card-title {
283
284
  color: #fff !important;
285
+ font-weight: 900;
284
286
  }
285
287
  div > button > span > svg {
286
288
  color: white !important;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/troubleshoot",
3
- "version": "2.2.47",
3
+ "version": "2.2.49",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -26,7 +26,7 @@
26
26
  "lib/**/*"
27
27
  ],
28
28
  "peerDependencies": {
29
- "@cee-eng/hydrajs": "4.16.33",
29
+ "@cee-eng/hydrajs": "4.16.39",
30
30
  "@cee-eng/ui-toolkit": "1.1.6",
31
31
  "@patternfly/patternfly": "5.1.0",
32
32
  "@patternfly/pfe-accordion": "1.12.3",
@@ -55,7 +55,7 @@
55
55
  "react-virtualized": "^9.21.2"
56
56
  },
57
57
  "dependencies": {
58
- "@cee-eng/hydrajs": "4.16.33",
58
+ "@cee-eng/hydrajs": "4.16.39",
59
59
  "@cee-eng/ui-toolkit": "1.1.6",
60
60
  "@patternfly/patternfly": "5.1.0",
61
61
  "@patternfly/pfe-accordion": "1.12.3",
@@ -66,11 +66,11 @@
66
66
  "@patternfly/react-table": "^5.1.1",
67
67
  "@progress/kendo-drawing": "^1.6.0",
68
68
  "@progress/kendo-react-pdf": "^3.12.0",
69
- "@rh-support/components": "2.1.27",
70
- "@rh-support/react-context": "2.1.30",
69
+ "@rh-support/components": "2.1.28",
70
+ "@rh-support/react-context": "2.1.31",
71
71
  "@rh-support/types": "2.0.2",
72
- "@rh-support/user-permissions": "2.1.19",
73
- "@rh-support/utils": "2.1.12",
72
+ "@rh-support/user-permissions": "2.1.20",
73
+ "@rh-support/utils": "2.1.13",
74
74
  "@types/react-redux": "^7.1.12",
75
75
  "@types/redux": "^3.6.0",
76
76
  "dompurify": "^2.4.1",
@@ -132,5 +132,5 @@
132
132
  "defaults and supports es6-module",
133
133
  "maintained node versions"
134
134
  ],
135
- "gitHead": "b0978cf9cff4fa1b1355983b294a010e92b45938"
135
+ "gitHead": "d17dacfd35aa08c446f37c8f0f92760346b8eb7a"
136
136
  }