@rh-support/troubleshoot 2.6.83 → 2.6.85
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.
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +7 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.js +31 -11
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.js +17 -8
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.js +5 -3
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardNavigation.js +7 -4
- package/lib/esm/css/AskRedHat.css +8 -0
- package/lib/esm/css/app.css +8 -0
- package/lib/esm/hooks/useWizard.js +1 -1
- package/lib/esm/reducers/RouteConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/RouteConstNTypes.js +2 -0
- package/package.json +4 -4
|
@@ -319,6 +319,13 @@ ul#case-history-paginated-timeline {
|
|
|
319
319
|
}
|
|
320
320
|
}
|
|
321
321
|
|
|
322
|
+
.timeline-highlight {
|
|
323
|
+
background-color: #fff3cd;
|
|
324
|
+
padding: 0;
|
|
325
|
+
margin: 0;
|
|
326
|
+
border-radius: 2px;
|
|
327
|
+
}
|
|
328
|
+
|
|
322
329
|
@media screen and (max-width: 768px) {
|
|
323
330
|
.timeline::after {
|
|
324
331
|
left: 20px;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseHistory/Timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAwBxB,OAAO,KAAsC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseHistory/Timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAwBxB,OAAO,KAAsC,MAAM,OAAO,CAAC;AA8W3D,QAAA,MAAM,QAAQ;;uBAyUb,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -18,13 +18,27 @@ import debounce from 'lodash/debounce';
|
|
|
18
18
|
import isEmpty from 'lodash/isEmpty';
|
|
19
19
|
import React, { useEffect, useRef, useState } from 'react';
|
|
20
20
|
import { Trans, useTranslation } from 'react-i18next';
|
|
21
|
-
const
|
|
21
|
+
const CustomHighlighter = ({ search, children, highlightDate, }) => {
|
|
22
|
+
const createHighlight = (text) => React.createElement("mark", { className: "timeline-highlight" }, text);
|
|
23
|
+
if (highlightDate) {
|
|
24
|
+
return createHighlight(children);
|
|
25
|
+
}
|
|
26
|
+
if (search) {
|
|
27
|
+
const escapedSearch = search.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
28
|
+
const regex = new RegExp(`(${escapedSearch})`, 'gi');
|
|
29
|
+
const parts = children.split(regex);
|
|
30
|
+
return React.createElement(React.Fragment, null, parts.map((part, index) => (regex.test(part) ? createHighlight(part) : part)));
|
|
31
|
+
}
|
|
32
|
+
return React.createElement(React.Fragment, null, children);
|
|
33
|
+
};
|
|
34
|
+
const TimelineEvent = ({ date, text, side, user, useAvatar, searchValue, highlightDate, }) => {
|
|
22
35
|
if (side === 'left') {
|
|
23
36
|
if (useAvatar) {
|
|
24
37
|
// we render the main date if the user changes or if the date changes
|
|
25
38
|
return (React.createElement("div", { className: `${side}-node ${user}`, role: "complementary", "aria-label": `${user}'s timeline Event Time` },
|
|
26
39
|
React.createElement("div", { className: `contentTimeline content-${side}-history content-${side}-${user}` },
|
|
27
|
-
React.createElement("h2", { className: `content-date-${side}-history` },
|
|
40
|
+
React.createElement("h2", { className: `content-date-${side}-history` },
|
|
41
|
+
React.createElement(CustomHighlighter, { highlightDate: highlightDate }, date)),
|
|
28
42
|
React.createElement("p", { className: `content-time-${side}-history` }, text))));
|
|
29
43
|
}
|
|
30
44
|
return (React.createElement("div", { className: `${side}-node ${user}`, role: "complementary", "aria-label": `${user}'s timeline Event Time` },
|
|
@@ -33,14 +47,16 @@ const TimelineEvent = ({ date, text, side, user, useAvatar }) => {
|
|
|
33
47
|
}
|
|
34
48
|
return (React.createElement("div", { className: `${side}-node ${user}`, role: "complementary", "aria-label": `${user}'s timeline event content` },
|
|
35
49
|
React.createElement("div", { className: `contentTimeline content-${side}-history content-${side}-${user}` },
|
|
36
|
-
React.createElement("h2", { className: `content-date-${side}-history` },
|
|
37
|
-
|
|
50
|
+
React.createElement("h2", { className: `content-date-${side}-history` },
|
|
51
|
+
React.createElement(CustomHighlighter, { search: searchValue || '' }, date)),
|
|
52
|
+
text && (React.createElement("p", { className: `content-time-${side}-history` },
|
|
53
|
+
React.createElement(CustomHighlighter, { search: searchValue || '' }, text))))));
|
|
38
54
|
};
|
|
39
|
-
const TimelineNode = React.forwardRef(({ leftEvent, rightEvent, user, useAvatar }, ref) => {
|
|
55
|
+
const TimelineNode = React.forwardRef(({ leftEvent, rightEvent, user, useAvatar, searchValue, highlightDate }, ref) => {
|
|
40
56
|
return (React.createElement("div", { className: "timeline-node", role: "region", "aria-label": "Timeline node" },
|
|
41
|
-
leftEvent && React.createElement(TimelineEvent, Object.assign({}, leftEvent, { side: "left", useAvatar: useAvatar })),
|
|
57
|
+
leftEvent && (React.createElement(TimelineEvent, Object.assign({}, leftEvent, { side: "left", useAvatar: useAvatar, searchValue: searchValue, highlightDate: highlightDate }))),
|
|
42
58
|
React.createElement("div", { ref: ref, "aria-label": `${useAvatar ? 'User profile picture' : 'Timeline marker'}`, tabIndex: -1 }, useAvatar ? (React.createElement(Avatar, { src: 'https://www.patternfly.org/images/668560cd.svg', className: `timeline-avatar timeline-avatar-${user}`, alt: `${user}'s avatar` })) : (React.createElement("div", { className: `timeline-marker timeline-${user}` }))),
|
|
43
|
-
rightEvent && React.createElement(TimelineEvent, Object.assign({}, rightEvent, { side: "right" }))));
|
|
59
|
+
rightEvent && React.createElement(TimelineEvent, Object.assign({}, rightEvent, { side: "right", searchValue: searchValue }))));
|
|
44
60
|
});
|
|
45
61
|
/**
|
|
46
62
|
*
|
|
@@ -80,8 +96,12 @@ const applyReplacements = (item) => {
|
|
|
80
96
|
it: 'Italian',
|
|
81
97
|
pt: 'Portuguese',
|
|
82
98
|
ko: 'Korean',
|
|
83
|
-
|
|
99
|
+
ja: 'Japanese',
|
|
84
100
|
zh: 'Chinese',
|
|
101
|
+
zh_CN: 'Chinese',
|
|
102
|
+
zh_HK: 'Chinese (Hong Kong)',
|
|
103
|
+
zh_TW: 'Chinese (Taiwan)',
|
|
104
|
+
ru: 'Russian',
|
|
85
105
|
};
|
|
86
106
|
// field display names to prefix keys used in item properties
|
|
87
107
|
const keyMap = {
|
|
@@ -376,8 +396,8 @@ const Timeline = ({ caseNumber }) => {
|
|
|
376
396
|
}
|
|
377
397
|
return () => window.removeEventListener('resize', debouncedUpdateLineStyle);
|
|
378
398
|
}, [isFetchingData, filteredEvents, page, perPage]);
|
|
379
|
-
const handleSearchChange = (value) => {
|
|
380
|
-
setSearchValue(value.
|
|
399
|
+
const handleSearchChange = (_, value) => {
|
|
400
|
+
setSearchValue(value.trim());
|
|
381
401
|
};
|
|
382
402
|
const handleClear = () => {
|
|
383
403
|
setSearchValue('');
|
|
@@ -432,7 +452,7 @@ const Timeline = ({ caseNumber }) => {
|
|
|
432
452
|
React.createElement(Trans, null, "Try modifying your search query or changing the date range and try again."))));
|
|
433
453
|
}
|
|
434
454
|
const paginatedEvents = filteredEvents.slice((page - 1) * perPage, page * perPage);
|
|
435
|
-
return (React.createElement(React.Fragment, null, paginatedEvents.map((node, index) => (React.createElement(TimelineNode, { key: index, leftEvent: node.left, rightEvent: node.right, user: node.right.user, useAvatar: node.right.useAvatar, ref: index === paginatedEvents.length - 1 ? lastNodeRef : null })))));
|
|
455
|
+
return (React.createElement(React.Fragment, null, paginatedEvents.map((node, index) => (React.createElement(TimelineNode, { key: index, leftEvent: node.left, rightEvent: node.right, user: node.right.user, useAvatar: node.right.useAvatar, searchValue: searchValue, highlightDate: !!dateValue, ref: index === paginatedEvents.length - 1 ? lastNodeRef : null })))));
|
|
436
456
|
};
|
|
437
457
|
return (React.createElement(React.Fragment, null,
|
|
438
458
|
React.createElement("div", { className: "timelineMenu" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseSummary.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseSummary/CaseSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"CaseSummary.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseSummary/CaseSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAuB3B,OAAO,KAA0C,MAAM,OAAO,CAAC;AAO/D,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,UAAW,MAAM,sBAwLxC,CAAC"}
|
|
@@ -13,17 +13,18 @@ import { parseCommentMarkdown } from '@cee-eng/ui-toolkit';
|
|
|
13
13
|
import { Alert, AlertActionLink, AlertVariant, Content, EmptyState, EmptyStateBody, EmptyStateVariant, Spinner, } from '@patternfly/react-core';
|
|
14
14
|
import CubesIcon from '@patternfly/react-icons/dist/js/icons/cubes-icon';
|
|
15
15
|
import { SupportFeedbackModal } from '@rh-support/components';
|
|
16
|
+
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
16
17
|
import { getApiResourceObject } from '@rh-support/utils';
|
|
17
18
|
import { formatDate } from '@rh-support/utils/lib/esm/dateUtils';
|
|
18
19
|
import DOMPurify from 'dompurify';
|
|
19
20
|
import isEqual from 'lodash/isEqual';
|
|
20
|
-
import React, { useEffect, useState } from 'react';
|
|
21
|
+
import React, { useContext, useEffect, useState } from 'react';
|
|
21
22
|
import { Trans } from 'react-i18next';
|
|
22
23
|
import { CaseSummaryStates } from '../../../../constants/caseDetailsConstants';
|
|
23
24
|
import { useCaseSelector } from '../../../../context/CaseContext';
|
|
24
25
|
import { CaseSummaryErrorMessage } from './CaseSummaryErrorMessage';
|
|
25
26
|
export const CaseSummary = (props) => {
|
|
26
|
-
var _a, _b, _c, _d;
|
|
27
|
+
var _a, _b, _c, _d, _e, _f;
|
|
27
28
|
const [isFeedbackModalOpen, setIsFeedbackModalOpen] = useState(false);
|
|
28
29
|
const [caseSummaryData, setCaseSummaryData] = useState(getApiResourceObject(null, true));
|
|
29
30
|
const [caseSummaryState, setCaseSummaryState] = useState();
|
|
@@ -32,6 +33,8 @@ export const CaseSummary = (props) => {
|
|
|
32
33
|
caseLanguage: state.caseDetails.caseLanguage,
|
|
33
34
|
caseComments: state.caseDetails.comments,
|
|
34
35
|
}), isEqual);
|
|
36
|
+
const { globalMetadataState: { loggedInUserRights }, } = useContext(GlobalMetadataStateContext);
|
|
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);
|
|
35
38
|
const onCloseFeedbackModal = () => {
|
|
36
39
|
setIsFeedbackModalOpen(false);
|
|
37
40
|
};
|
|
@@ -49,6 +52,12 @@ export const CaseSummary = (props) => {
|
|
|
49
52
|
setErrorMessage('Due to its recent creation and lack of comments, a case summary cannot be generated for this case.');
|
|
50
53
|
return;
|
|
51
54
|
}
|
|
55
|
+
const publicComments = (caseComments === null || caseComments === void 0 ? void 0 : caseComments.filter((comment) => comment.isPublic)) || [];
|
|
56
|
+
if (!publicComments.length && isInternal) {
|
|
57
|
+
setCaseSummaryState(CaseSummaryStates.NEW_CASE);
|
|
58
|
+
setErrorMessage('Due to its recent creation and lack of comments, a case summary cannot be generated for this case.');
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
52
61
|
else {
|
|
53
62
|
const fetchCaseSummary = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
54
63
|
try {
|
|
@@ -83,18 +92,18 @@ export const CaseSummary = (props) => {
|
|
|
83
92
|
React.createElement("div", { dangerouslySetInnerHTML: { __html: sanitizedHtml } })));
|
|
84
93
|
};
|
|
85
94
|
return (React.createElement("section", { className: "card card-white" },
|
|
86
|
-
React.createElement(Alert, { variant: AlertVariant.info, title: "
|
|
95
|
+
React.createElement(Alert, { variant: AlertVariant.info, title: "Careful! This case summary uses AI. Check for mistakes.", isInline: true, actionLinks: React.createElement(AlertActionLink, { onClick: (e) => triggerAppFeedbackItem(e), href: "#", "data-tracking-id": "send-feedback-button" },
|
|
87
96
|
React.createElement(Trans, null, "Send Feedback")) },
|
|
88
|
-
React.createElement("p", null, "
|
|
97
|
+
React.createElement("p", null, "This AI-generated summary recaps your support case information. It might not be up-to-date and might contain errors. We\u2019d love your feedback to help us improve this feature.")),
|
|
89
98
|
caseSummaryState === CaseSummaryStates.NEW_CASE ? (React.createElement(EmptyState, { headingLevel: "h2", icon: CubesIcon, titleText: React.createElement(Trans, null, "Unable to generate case summary"), variant: EmptyStateVariant.lg },
|
|
90
99
|
React.createElement(EmptyStateBody, null,
|
|
91
100
|
React.createElement("p", { className: "push-top-narrow" },
|
|
92
101
|
React.createElement(Trans, null, errorMessage))))) : caseSummaryState === CaseSummaryStates.FAILED ||
|
|
93
102
|
caseSummaryState === CaseSummaryStates.CASE_LANGUAGE_NOT_SUPPORTED ||
|
|
94
|
-
caseSummaryState === CaseSummaryStates.INPUT_COMMENTS_TOO_LARGE ? (React.createElement(CaseSummaryErrorMessage, { caseSummaryState: caseSummaryState, caseNumber: props.caseNumber, caseSummaryId: (
|
|
103
|
+
caseSummaryState === CaseSummaryStates.INPUT_COMMENTS_TOO_LARGE ? (React.createElement(CaseSummaryErrorMessage, { caseSummaryState: caseSummaryState, caseNumber: props.caseNumber, caseSummaryId: (_c = caseSummaryData.data) === null || _c === void 0 ? void 0 : _c.id, errorMessage: errorMessage, setErrorMessage: setErrorMessage })) : caseSummaryState === CaseSummaryStates.SUCCESS ? (React.createElement(React.Fragment, null,
|
|
95
104
|
React.createElement("div", { className: "ai-case-summary-container" },
|
|
96
105
|
React.createElement("h2", { className: "ai-summary-title" }, "AI Case summary"),
|
|
97
|
-
React.createElement("p", { className: "ai-summary-date" }, formatDate((
|
|
106
|
+
React.createElement("p", { className: "ai-summary-date" }, formatDate((_d = caseSummaryData.data) === null || _d === void 0 ? void 0 : _d.created_date, 'en-US', {
|
|
98
107
|
month: 'short',
|
|
99
108
|
day: 'numeric',
|
|
100
109
|
year: 'numeric',
|
|
@@ -103,9 +112,9 @@ export const CaseSummary = (props) => {
|
|
|
103
112
|
second: '2-digit',
|
|
104
113
|
hour12: true,
|
|
105
114
|
})),
|
|
106
|
-
React.createElement("div", { className: "case-summary-content" }, formatSummary((
|
|
115
|
+
React.createElement("div", { className: "case-summary-content" }, formatSummary((_e = caseSummaryData.data) === null || _e === void 0 ? void 0 : _e.generated_summary))))) : (React.createElement(EmptyState, { headingLevel: "h2", icon: Spinner, titleText: React.createElement(Trans, null, "Generating case summary using AI"), variant: EmptyStateVariant.lg },
|
|
107
116
|
React.createElement(EmptyStateBody, null,
|
|
108
117
|
React.createElement("p", { className: "push-top-narrow" },
|
|
109
118
|
React.createElement(Trans, null, "Almost there! case summary will be ready in approximately 30 seconds."))))),
|
|
110
|
-
React.createElement(SupportFeedbackModal, { isModalOpen: isFeedbackModalOpen, onClose: onCloseFeedbackModal, caseSummaryId: ((
|
|
119
|
+
React.createElement(SupportFeedbackModal, { isModalOpen: isFeedbackModalOpen, onClose: onCloseFeedbackModal, caseSummaryId: ((_f = caseSummaryData.data) === null || _f === void 0 ? void 0 : _f.id) || null, errorMessage: errorMessage, isCaseSummary: true })));
|
|
111
120
|
};
|
package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NonOrgCaseNotifyeesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAwB,oBAAoB,EAAY,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,UAAU,MAAO,SAAQ,gBAAgB;IACrC,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC;CAC9B;AA+BD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"NonOrgCaseNotifyeesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAwB,oBAAoB,EAAY,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,UAAU,MAAO,SAAQ,gBAAgB;IACrC,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC;CAC9B;AA+BD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,qBAyMxD"}
|
|
@@ -69,7 +69,7 @@ export function NonOrgCaseNotifyeesSelector(props) {
|
|
|
69
69
|
props.onChange && props.onChange([optionToRemove]);
|
|
70
70
|
};
|
|
71
71
|
const onAddClick = () => __awaiter(this, void 0, void 0, function* () {
|
|
72
|
-
var _a, _b, _c;
|
|
72
|
+
var _a, _b, _c, _d;
|
|
73
73
|
clearErrors();
|
|
74
74
|
const searchResults = yield request(props.accountNumber, inputVal,
|
|
75
75
|
// eslint-disable-next-line eqeqeq
|
|
@@ -82,11 +82,13 @@ export function NonOrgCaseNotifyeesSelector(props) {
|
|
|
82
82
|
const { ssoName } = c, rest = __rest(c, ["ssoName"]);
|
|
83
83
|
return Object.assign({ ssoUsername: ssoName }, rest);
|
|
84
84
|
});
|
|
85
|
+
(_b = props.onChange) === null || _b === void 0 ? void 0 : _b.call(props, [...mappedContacts]);
|
|
86
|
+
setInputVal('');
|
|
85
87
|
setNotifyeesList([...mappedContacts, { emailAddress: notificationAddress.email }]);
|
|
86
88
|
}
|
|
87
89
|
else {
|
|
88
90
|
if (notificationAddress === null || notificationAddress === void 0 ? void 0 : notificationAddress.email) {
|
|
89
|
-
(
|
|
91
|
+
(_c = props.onChange) === null || _c === void 0 ? void 0 : _c.call(props, [{ emailAddress: notificationAddress.email, caseNumber: '' }]);
|
|
90
92
|
setInputVal('');
|
|
91
93
|
}
|
|
92
94
|
else if (contacts === null || contacts === void 0 ? void 0 : contacts.length) {
|
|
@@ -96,7 +98,7 @@ export function NonOrgCaseNotifyeesSelector(props) {
|
|
|
96
98
|
const { ssoName } = c, rest = __rest(c, ["ssoName"]);
|
|
97
99
|
return Object.assign({ ssoUsername: ssoName }, rest);
|
|
98
100
|
});
|
|
99
|
-
(
|
|
101
|
+
(_d = props.onChange) === null || _d === void 0 ? void 0 : _d.call(props, [...mappedContacts]);
|
|
100
102
|
setInputVal('');
|
|
101
103
|
}
|
|
102
104
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,OAAO,EAAoB,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAM3G,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACzD,UAAU,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mBAAmB,EAAE,CAAC,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC5E,kCAAkC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACpF,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAChD,gCAAgC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACrE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAGD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBAyXtC;kBAzXQ,gBAAgB;;;AA2XzB,eAAe,gBAAgB,CAAC"}
|
|
@@ -21,6 +21,7 @@ import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
|
|
|
21
21
|
import { RecommendationStateContext } from '../../context/RecommendationContext';
|
|
22
22
|
import { RouteContext, RouteDispatchContext } from '../../context/RouteContext';
|
|
23
23
|
import { SessionRestoreStateContext } from '../../context/SessionRestoreContext';
|
|
24
|
+
import { excludedCaseTypesforARH } from '../../reducers/CaseConstNTypes';
|
|
24
25
|
import { setCaseState } from '../../reducers/CaseReducer';
|
|
25
26
|
import { AppRouteSections } from '../../reducers/RouteConstNTypes';
|
|
26
27
|
import { updateisNextBtnClickedToShowValidationError } from '../../reducers/RouteReducer';
|
|
@@ -35,13 +36,14 @@ function WizardNavigation(props) {
|
|
|
35
36
|
const { recommendationState } = useContext(RecommendationStateContext);
|
|
36
37
|
const { routeState: { activeSection, isNextBtnClickedToShowValidationError, noValidEntitlement, isSearchIntent, isCaseCreate, }, } = useContext(RouteContext);
|
|
37
38
|
const { globalMetadataState: { loggedInUsersAccount, allProducts, navBarRef }, } = useContext(GlobalMetadataStateContext);
|
|
38
|
-
const { caseState, ABTestVariation, issue, summary, product, version } = useCaseSelector((state) => ({
|
|
39
|
+
const { caseState, ABTestVariation, issue, summary, product, version, caseType } = useCaseSelector((state) => ({
|
|
39
40
|
caseState: state,
|
|
40
41
|
issue: state.caseDetails.issue,
|
|
41
42
|
summary: state.caseDetails.summary,
|
|
42
43
|
ABTestVariation: state.ABTestVariation,
|
|
43
44
|
product: state.caseDetails.product,
|
|
44
45
|
version: state.caseDetails.version,
|
|
46
|
+
caseType: state.caseDetails.caseType,
|
|
45
47
|
}), isEqual);
|
|
46
48
|
const isATestvariation = ABTestVariation === 'A';
|
|
47
49
|
const isBTestvariation = ABTestVariation === 'B' || isEmpty(ABTestVariation);
|
|
@@ -86,8 +88,7 @@ function WizardNavigation(props) {
|
|
|
86
88
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
87
89
|
}, [activeSection]);
|
|
88
90
|
useEffect(() => {
|
|
89
|
-
if (props.activeStep.id !== (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT)
|
|
90
|
-
recommendationState.numFound <= 2) {
|
|
91
|
+
if (props.activeStep.id !== (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT)) {
|
|
91
92
|
return;
|
|
92
93
|
}
|
|
93
94
|
const observer = new IntersectionObserver(([entry]) => {
|
|
@@ -218,7 +219,9 @@ function WizardNavigation(props) {
|
|
|
218
219
|
});
|
|
219
220
|
const isEntitledProductLocal = isSearchIntent ? true : isEntitledProduct;
|
|
220
221
|
const nextButtonDisabledLogic = () => {
|
|
221
|
-
const isLoadingARH = props.isLoadingARH &&
|
|
222
|
+
const isLoadingARH = props.isLoadingARH &&
|
|
223
|
+
props.activeStep.id === AppRouteSections.RESOURCES &&
|
|
224
|
+
!excludedCaseTypesforARH.includes(caseType || '');
|
|
222
225
|
if (isBTestvariation) {
|
|
223
226
|
let value = isLoadingARH ||
|
|
224
227
|
((isEmpty(summary) || isEmpty(issue) || isEmpty(product) || isEmpty(version)) &&
|
|
@@ -322,6 +322,14 @@
|
|
|
322
322
|
height: calc(100vh - 276px) !important;
|
|
323
323
|
}
|
|
324
324
|
|
|
325
|
+
.pf-chatbot-container--embedded .outage-error-wrapper {
|
|
326
|
+
overflow-y: auto !important;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.ask-redhat-core .error-state-svg {
|
|
330
|
+
margin: 48px auto auto !important;
|
|
331
|
+
}
|
|
332
|
+
|
|
325
333
|
.pf-chatbot--fullscreen .pf-chatbot-container {
|
|
326
334
|
height: calc(100vh - 255px) !important;
|
|
327
335
|
}
|
package/lib/esm/css/app.css
CHANGED
|
@@ -446,6 +446,14 @@ input[type='checkbox'] {
|
|
|
446
446
|
line-height: 2px;
|
|
447
447
|
}
|
|
448
448
|
|
|
449
|
+
.comment-plaintext.reset-pre-text {
|
|
450
|
+
font-family: 'Red Hat Display', 'RedHatDisplay', 'Helvetica Neue', 'Arial', 'sans-serif';
|
|
451
|
+
text-rendering: auto;
|
|
452
|
+
font-weight: 500;
|
|
453
|
+
font-size: 1.12rem;
|
|
454
|
+
line-height: 1.5em;
|
|
455
|
+
}
|
|
456
|
+
|
|
449
457
|
#additional-information-section textarea {
|
|
450
458
|
resize: none !important;
|
|
451
459
|
}
|
|
@@ -91,7 +91,7 @@ export function useWizard(routeProps, props) {
|
|
|
91
91
|
[AppRouteSections.DESCRIBE_IDEA]: Object.assign(Object.assign({}, defaultRouteConfiguration), { id: AppRouteSections.DESCRIBE_IDEA, name: t('Additional Information'), component: (React.createElement(MainSection, { stepNumber: 4, totalSteps: 6, section: AppRouteSections.DESCRIBE_IDEA, title: t('Idea information'), description: t("We'll be in contact with you shortly. Look for updates on this case.") },
|
|
92
92
|
React.createElement(Suspense, { fallback: React.createElement(LoadingIndicator, { size: "sm" }) },
|
|
93
93
|
alertMessage(),
|
|
94
|
-
React.createElement(IdeaInformation, null)))), canJumpTo: isSectionValidFn(AppRouteSections.DESCRIBE_IDEA) || activeSection === AppRouteSections.DESCRIBE_IDEA, nextButtonLabel: '
|
|
94
|
+
React.createElement(IdeaInformation, null)))), canJumpTo: isSectionValidFn(AppRouteSections.DESCRIBE_IDEA) || activeSection === AppRouteSections.DESCRIBE_IDEA, nextButtonLabel: 'Continue', disableOtherSections: false }),
|
|
95
95
|
[AppRouteSections.CONFIGURATION]: Object.assign(Object.assign({}, defaultRouteConfiguration), { id: AppRouteSections.CONFIGURATION, name: t('Configuration'), component: (React.createElement(MainSection, { stepNumber: 5, totalSteps: 6, section: AppRouteSections.CONFIGURATION, title: t('Case management'), descriptionClassName: "text-medium-grey" },
|
|
96
96
|
React.createElement(Suspense, { fallback: React.createElement(LoadingIndicator, { size: "sm" }) },
|
|
97
97
|
alertMessage(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/RouteConstNTypes.ts"],"names":[],"mappings":"AAAA,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;IAChB,qBAAqB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAIxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IAClC,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,SAAS,cAAc;IACvB,sBAAsB,2BAA2B;IACjD,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAClB;AAKD,eAAO,MAAM,4BAA4B,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"RouteConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/RouteConstNTypes.ts"],"names":[],"mappings":"AAAA,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;IAChB,qBAAqB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAIxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IAClC,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,SAAS,cAAc;IACvB,sBAAsB,2BAA2B;IACjD,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAClB;AAKD,eAAO,MAAM,4BAA4B,EAAE,gBAAgB,EAK1D,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,gBAAgB,EAM9D,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,oBAA+D,CAAC;AAEhH,eAAO,MAAM,kCAAkC,oBAO9C,CAAC;AAEF,eAAO,MAAM,+BAA+B,oBAO3C,CAAC;AAEF,eAAO,MAAM,0CAA0C,oBAStD,CAAC;AAEF,eAAO,MAAM,sCAAsC,oBAA4D,CAAC;AAEhH,eAAO,MAAM,qCAAqC,oBAGjD,CAAC;AAEF,eAAO,MAAM,6BAA6B,oBAAiC,CAAC;AAE5E,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,EAKtD,CAAC"}
|
|
@@ -18,12 +18,14 @@ export const openCaseNonTechnicalSequence = [
|
|
|
18
18
|
AppRouteSections.GET_SUPPORT,
|
|
19
19
|
AppRouteSections.SUMMARIZE,
|
|
20
20
|
AppRouteSections.DESCRIBE_IDEA,
|
|
21
|
+
AppRouteSections.REVIEW,
|
|
21
22
|
];
|
|
22
23
|
export const troubleshootNonTechnicalSequence = [
|
|
23
24
|
AppRouteSections.TROUBLESHOOT,
|
|
24
25
|
AppRouteSections.RESOURCES,
|
|
25
26
|
AppRouteSections.GET_SUPPORT,
|
|
26
27
|
AppRouteSections.DESCRIBE_IDEA,
|
|
28
|
+
AppRouteSections.REVIEW,
|
|
27
29
|
];
|
|
28
30
|
export const troubleshootRouteSectionsSequence = [
|
|
29
31
|
AppRouteSections.TROUBLESHOOT,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/troubleshoot",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.85",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
"@progress/kendo-licensing": "1.3.5",
|
|
60
60
|
"@progress/kendo-react-pdf": "^5.16.0",
|
|
61
61
|
"@redux-devtools/extension": "^3.3.0",
|
|
62
|
-
"@rh-support/components": "2.5.
|
|
63
|
-
"@rh-support/react-context": "2.5.
|
|
62
|
+
"@rh-support/components": "2.5.59",
|
|
63
|
+
"@rh-support/react-context": "2.5.74",
|
|
64
64
|
"@rh-support/types": "2.0.5",
|
|
65
65
|
"@rh-support/user-permissions": "2.5.29",
|
|
66
66
|
"@rh-support/utils": "2.5.26",
|
|
@@ -133,5 +133,5 @@
|
|
|
133
133
|
"defaults and supports es6-module",
|
|
134
134
|
"maintained node versions"
|
|
135
135
|
],
|
|
136
|
-
"gitHead": "
|
|
136
|
+
"gitHead": "b81e0a7e6b9eee98294710206413297e15668c42"
|
|
137
137
|
}
|