@rh-support/troubleshoot 2.6.84 → 2.6.86
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/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +32 -7
- package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.js +9 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.js +9 -1
- 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 +24 -8
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.js +15 -6
- package/lib/esm/components/CaseInformation/Fts.js +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.js +3 -3
- package/lib/esm/components/Review/Review.d.ts.map +1 -1
- package/lib/esm/components/Review/Review.js +6 -4
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardNavigation.js +1 -2
- package/lib/esm/css/app.css +8 -0
- package/package.json +4 -4
package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"AAuCA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAqBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAID,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,qBAk3BnD"}
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { escalations, publicApi } from '@cee-eng/hydrajs';
|
|
11
|
-
import { Button, Form, FormGroup, FormHelperText, Grid, GridItem, HelperText, HelperTextItem, Modal, ModalBody, ModalHeader, ModalVariant, Radio, TextArea, TextInput, TimePicker, Title, ValidatedOptions, Wizard, WizardStep, } from '@patternfly/react-core';
|
|
11
|
+
import { Button, Form, FormGroup, FormHelperText, Grid, GridItem, HelperText, HelperTextItem, Modal, ModalBody, ModalHeader, ModalVariant, Radio, TextArea, TextInput, TimePicker, Title, ValidatedOptions, Wizard, WizardNav, WizardNavItem, WizardStep, } from '@patternfly/react-core';
|
|
12
12
|
import { AlertMessage, AlertType, PhoneInput, SingleSelectDropdown, ToastNotification, useFetch, } from '@rh-support/components';
|
|
13
13
|
import { useGlobalStateContext } from '@rh-support/react-context';
|
|
14
14
|
import isEmpty from 'lodash/isEmpty';
|
|
@@ -47,6 +47,7 @@ export function RequestEscalationModal(props) {
|
|
|
47
47
|
const [formState, setFormState] = useState(initialState);
|
|
48
48
|
const [hasLargeSubject, setHasLargeSubject] = useState(false);
|
|
49
49
|
const [submitButtonIsClicked, setSubmitSaveButtonIsClicked] = useState(false);
|
|
50
|
+
const [isPhoneInvalid, setIsPhoneInvalid] = useState(false);
|
|
50
51
|
// Function to check if "to" time is after "from" time
|
|
51
52
|
const isValidTimeRange = (fromTime, toTime) => {
|
|
52
53
|
if (!fromTime || !toTime)
|
|
@@ -80,7 +81,9 @@ export function RequestEscalationModal(props) {
|
|
|
80
81
|
if ((formState.contactPreference === 'call-me' || formState.contactPreference === 'call-if-necessary') &&
|
|
81
82
|
formState.preferredTimeFrom &&
|
|
82
83
|
formState.preferredTimeTo) {
|
|
83
|
-
return hasAllFields &&
|
|
84
|
+
return (hasAllFields &&
|
|
85
|
+
isValidTimeRange(formState.preferredTimeFrom, formState.preferredTimeTo) &&
|
|
86
|
+
!isPhoneInvalid);
|
|
84
87
|
}
|
|
85
88
|
return hasAllFields;
|
|
86
89
|
};
|
|
@@ -126,6 +129,7 @@ export function RequestEscalationModal(props) {
|
|
|
126
129
|
setSubmitSaveButtonIsClicked(false);
|
|
127
130
|
setFormState(initialState);
|
|
128
131
|
setHasLargeSubject(false);
|
|
132
|
+
setIsPhoneInvalid(false);
|
|
129
133
|
props.onClose();
|
|
130
134
|
};
|
|
131
135
|
const onSubmit = () => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -210,6 +214,7 @@ export function RequestEscalationModal(props) {
|
|
|
210
214
|
setFormState(initialState);
|
|
211
215
|
setSubmitSaveButtonIsClicked(false);
|
|
212
216
|
setHasLargeSubject(false);
|
|
217
|
+
setIsPhoneInvalid(false);
|
|
213
218
|
setCreationError(false);
|
|
214
219
|
props.onClose();
|
|
215
220
|
}
|
|
@@ -280,6 +285,7 @@ export function RequestEscalationModal(props) {
|
|
|
280
285
|
if (formState.contactPreference === 'call-me' || formState.contactPreference === 'call-if-necessary') {
|
|
281
286
|
return (baseValidation &&
|
|
282
287
|
!isEmpty(formState.phoneNumber) &&
|
|
288
|
+
!isPhoneInvalid &&
|
|
283
289
|
!isEmpty(formState.preferredTimeFrom) &&
|
|
284
290
|
!isEmpty(formState.preferredTimeTo));
|
|
285
291
|
}
|
|
@@ -344,6 +350,21 @@ export function RequestEscalationModal(props) {
|
|
|
344
350
|
React.createElement(TextArea, { onChange: (e, value) => setFormStateValue('businessImpactDescription', value), isRequired: true, validated: submitButtonIsClicked && isEmpty(formState.businessImpactDescription)
|
|
345
351
|
? ValidatedOptions.error
|
|
346
352
|
: ValidatedOptions.default, placeholder: t('Does your business impact change with this escalation? Please describe how it changed.'), id: "business-impact-input", value: formState.businessImpactDescription, "aria-label": t('Business impact'), resizeOrientation: "vertical" }))))))));
|
|
353
|
+
// Check if first step is completed
|
|
354
|
+
const isFirstStepComplete = () => {
|
|
355
|
+
return (!isEmpty(formState.rmeCategory) &&
|
|
356
|
+
!isEmpty(formState.geo) &&
|
|
357
|
+
!isEmpty(formState.subject) &&
|
|
358
|
+
!hasLargeSubject &&
|
|
359
|
+
!isEmpty(formState.description) &&
|
|
360
|
+
!isEmpty(formState.expectations) &&
|
|
361
|
+
!isEmpty(formState.businessImpactDescription));
|
|
362
|
+
};
|
|
363
|
+
const customNav = (isExpanded, steps, activeStep, goToStepByIndex) => (React.createElement(WizardNav, { isExpanded: isExpanded }, steps.map((step, index) => {
|
|
364
|
+
// Disable the second step if first step is not complete
|
|
365
|
+
const isDisabled = step.id === 'contact-details' && !isFirstStepComplete();
|
|
366
|
+
return (React.createElement(WizardNavItem, { key: step.id, id: step.id, content: step.name, isCurrent: activeStep.id === step.id, isDisabled: isDisabled, stepIndex: step.index, onClick: () => !isDisabled && goToStepByIndex(step.index) }));
|
|
367
|
+
})));
|
|
347
368
|
const contactDetailsStep = (React.createElement(WizardStep, { id: "contact-details", name: t('Contact details') },
|
|
348
369
|
React.createElement("div", { className: "wizard-step-content" },
|
|
349
370
|
React.createElement(Title, { headingLevel: "h2", size: "2xl", className: "pf-v6-u-mb-lg" }, t('Contact details')),
|
|
@@ -386,15 +407,19 @@ export function RequestEscalationModal(props) {
|
|
|
386
407
|
React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
|
|
387
408
|
t("Case owner's phone number"),
|
|
388
409
|
" "), isRequired: true, fieldId: "phone-number" },
|
|
389
|
-
React.createElement(PhoneInput, { phoneValue: formState.phoneNumber || '', countryCode: ((_a = formState.countryCode) === null || _a === void 0 ? void 0 : _a.replace('+', '')) || '', onPhoneValueChange: (phone) => setFormState(Object.assign(Object.assign({}, formState), { phoneNumber: phone })), onCountryCodeChange: (code) => setFormState(Object.assign(Object.assign({}, formState), { countryCode: code })), validations: submitButtonIsClicked && isEmpty(formState.phoneNumber)
|
|
410
|
+
React.createElement(PhoneInput, { phoneValue: formState.phoneNumber || '', countryCode: ((_a = formState.countryCode) === null || _a === void 0 ? void 0 : _a.replace('+', '')) || '', onPhoneValueChange: (phone) => setFormState(Object.assign(Object.assign({}, formState), { phoneNumber: phone })), onCountryCodeChange: (code) => setFormState(Object.assign(Object.assign({}, formState), { countryCode: code })), validations: (submitButtonIsClicked && isEmpty(formState.phoneNumber)) ||
|
|
411
|
+
isPhoneInvalid
|
|
390
412
|
? 'error'
|
|
391
|
-
: 'default', isDisabled: false }),
|
|
413
|
+
: 'default', isDisabled: false, invalid: isPhoneInvalid, setInvalid: setIsPhoneInvalid }),
|
|
392
414
|
React.createElement(FormHelperText, null,
|
|
393
415
|
React.createElement(HelperText, null,
|
|
394
416
|
React.createElement(HelperTextItem, { variant: "default" }, t('Note: A current phone/mobile number with the country code helps us support you better. Phone number will be stored in case comments for escalation only – not used for marketing.')))),
|
|
395
|
-
submitButtonIsClicked && isEmpty(formState.phoneNumber) && (React.createElement(FormHelperText, null,
|
|
417
|
+
submitButtonIsClicked && isEmpty(formState.phoneNumber) && !isPhoneInvalid && (React.createElement(FormHelperText, null,
|
|
418
|
+
React.createElement(HelperText, null,
|
|
419
|
+
React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Phone number is required'))))),
|
|
420
|
+
isPhoneInvalid && (React.createElement(FormHelperText, null,
|
|
396
421
|
React.createElement(HelperText, null,
|
|
397
|
-
React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Phone number
|
|
422
|
+
React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Phone number can only have digits.'))))))),
|
|
398
423
|
React.createElement(GridItem, { span: 12 },
|
|
399
424
|
React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
|
|
400
425
|
t('Timezone'),
|
|
@@ -444,7 +469,7 @@ export function RequestEscalationModal(props) {
|
|
|
444
469
|
React.createElement(Trans, null, "Learn more about escalation cases."))),
|
|
445
470
|
React.createElement(ModalBody, null,
|
|
446
471
|
creationError && (React.createElement(AlertMessage, { variant: AlertType.DANGER, title: t('Could not create case escalation'), show: creationError, onClose: onErrorClose, isInline: true, className: "pf-v6-u-mb-md", "aria-label": t('Could not create case escalation') })),
|
|
447
|
-
React.createElement(Wizard, { navAriaLabel: t('Escalation request steps'), footer: CustomFooter },
|
|
472
|
+
React.createElement(Wizard, { navAriaLabel: t('Escalation request steps'), footer: CustomFooter, nav: customNav },
|
|
448
473
|
escalationDetailsStep,
|
|
449
474
|
contactDetailsStep))));
|
|
450
475
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewEssTermsModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAYnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,EAAE,OAAO,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"NewEssTermsModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAYnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,EAAE,OAAO,CAAC;CACrB;AA4BD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBAmY7C"}
|
|
@@ -35,6 +35,14 @@ const getLocaleNameFromLocalCode = (localeCode) => {
|
|
|
35
35
|
}
|
|
36
36
|
return localeCode;
|
|
37
37
|
};
|
|
38
|
+
const formatSessionLinks = (sessionLink) => {
|
|
39
|
+
const links = sessionLink
|
|
40
|
+
.split(/[;,| \n\r\t]+/)
|
|
41
|
+
.map((link) => link.trim())
|
|
42
|
+
.filter(Boolean);
|
|
43
|
+
const formattedLinks = links.map((link) => `[${link}](${link})`).join('\n');
|
|
44
|
+
return formattedLinks;
|
|
45
|
+
};
|
|
38
46
|
export function NewEssTermsModal(props) {
|
|
39
47
|
const { t } = useTranslation();
|
|
40
48
|
const { remoteSessionTermsAcked } = useCaseSelector((state) => ({
|
|
@@ -119,7 +127,7 @@ export function NewEssTermsModal(props) {
|
|
|
119
127
|
};
|
|
120
128
|
// Function to ack remote session terms and post comment
|
|
121
129
|
const submitRemoteSessionAgreement = (pdfId) => __awaiter(this, void 0, void 0, function* () {
|
|
122
|
-
const requestComment = t(`\n**Thank you for submitting the request for a remote session. A support manager will review the request, and updates will be provided in the support case. Please continue to provide any data requested by the support engineers in the case prior to the remote session (if applicable).**\n\nSubmitted a remote session request with following details:\n\n**Preferred Time and Expectations of remote session**\n${sessionExpectations}\n\n**Describe the impact to you or the business**\n${impact}\n\n${sessionLink ? `**Remote session link**\n${sessionLink}\n\n` : ''}This action does not initiate a remote session. A Red Hat Associate will get back to you soon.`);
|
|
130
|
+
const requestComment = t(`\n**Thank you for submitting the request for a remote session. A support manager will review the request, and updates will be provided in the support case. Please continue to provide any data requested by the support engineers in the case prior to the remote session (if applicable).**\n\nSubmitted a remote session request with following details:\n\n**Preferred Time and Expectations of remote session**\n${sessionExpectations}\n\n**Describe the impact to you or the business**\n${impact}\n\n${sessionLink ? `**Remote session link**\n${formatSessionLinks(sessionLink)}\n\n` : ''}This action does not initiate a remote session. A Red Hat Associate will get back to you soon.`);
|
|
123
131
|
try {
|
|
124
132
|
yield updateCaseDetails(caseDispatch, props.caseNumber, {
|
|
125
133
|
remoteSessionTermsAcked: true,
|
package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteSessionAgreementModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAgBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,EAAE,OAAO,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"RemoteSessionAgreementModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAgBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,EAAE,OAAO,CAAC;CACrB;AA4BD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,qBA0XxD"}
|
|
@@ -35,6 +35,14 @@ const getLocaleNameFromLocalCode = (localeCode) => {
|
|
|
35
35
|
}
|
|
36
36
|
return localeCode;
|
|
37
37
|
};
|
|
38
|
+
const formatSessionLinks = (sessionLink) => {
|
|
39
|
+
const links = sessionLink
|
|
40
|
+
.split(/[;,| \n\r\t]+/)
|
|
41
|
+
.map((link) => link.trim())
|
|
42
|
+
.filter(Boolean);
|
|
43
|
+
const formattedLinks = links.map((link) => `[${link}](${link})`).join('\n');
|
|
44
|
+
return formattedLinks;
|
|
45
|
+
};
|
|
38
46
|
export function RemoteSessionAgreementModal(props) {
|
|
39
47
|
const { t } = useTranslation();
|
|
40
48
|
const { remoteSessionTermsAcked } = useCaseSelector((state) => ({
|
|
@@ -109,7 +117,7 @@ export function RemoteSessionAgreementModal(props) {
|
|
|
109
117
|
const toggleRemoteSessionForm = () => setIsRemoteSessionForm(true);
|
|
110
118
|
// Function to ack remote session terms and post comment
|
|
111
119
|
const submitRemoteSessionAgreement = (pdfId) => __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
const requestComment = t(`\n**Thank you for submitting the request for a remote session. A support manager will review the request, and updates will be provided in the support case. Please continue to provide any data requested by the support engineers in the case prior to the remote session (if applicable).**\n\nSubmitted a remote session request with following details:\n\n**Preferred Time and Expectations of remote session**\n${sessionExpectations}\n\n**Describe the impact to you or the business**\n${impact}\n\n${sessionLink ? `**Remote session link**\n${sessionLink}\n\n` : ''}This action does not initiate a remote session. A Red Hat Associate will get back to you soon.`);
|
|
120
|
+
const requestComment = t(`\n**Thank you for submitting the request for a remote session. A support manager will review the request, and updates will be provided in the support case. Please continue to provide any data requested by the support engineers in the case prior to the remote session (if applicable).**\n\nSubmitted a remote session request with following details:\n\n**Preferred Time and Expectations of remote session**\n${sessionExpectations}\n\n**Describe the impact to you or the business**\n${impact}\n\n${sessionLink ? `**Remote session link**\n${formatSessionLinks(sessionLink)}\n\n` : ''}This action does not initiate a remote session. A Red Hat Associate will get back to you soon.`);
|
|
113
121
|
try {
|
|
114
122
|
yield updateCaseDetails(caseDispatch, props.caseNumber, {
|
|
115
123
|
remoteSessionTermsAcked: true,
|
|
@@ -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
|
*
|
|
@@ -436,7 +452,7 @@ const Timeline = ({ caseNumber }) => {
|
|
|
436
452
|
React.createElement(Trans, null, "Try modifying your search query or changing the date range and try again."))));
|
|
437
453
|
}
|
|
438
454
|
const paginatedEvents = filteredEvents.slice((page - 1) * perPage, page * perPage);
|
|
439
|
-
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 })))));
|
|
440
456
|
};
|
|
441
457
|
return (React.createElement(React.Fragment, null,
|
|
442
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 {
|
|
@@ -91,10 +100,10 @@ export const CaseSummary = (props) => {
|
|
|
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
|
};
|
|
@@ -154,7 +154,7 @@ function Fts(props) {
|
|
|
154
154
|
const maxLengthErrorMessage = t('Contact information cannot be more than {{limit}} characters.', {
|
|
155
155
|
limit: CONTACT_INFO_24X7_LIMIT,
|
|
156
156
|
});
|
|
157
|
-
if (isEmpty(caseNumber) && !showFtsOnCreateCasePage(entitlementSla, severity))
|
|
157
|
+
if (isEmpty(caseNumber) && (!showFtsOnCreateCasePage(entitlementSla, severity) || isIdea))
|
|
158
158
|
return React.createElement(React.Fragment, null);
|
|
159
159
|
if (!isEmpty(caseNumber) && (isIdea || !showFtsOnCaseViewEditPage(entitlementSla, severity)))
|
|
160
160
|
return React.createElement(React.Fragment, null);
|
|
@@ -203,7 +203,7 @@ function CaseContactSelector(props) {
|
|
|
203
203
|
if (canEditCase.alert())
|
|
204
204
|
return;
|
|
205
205
|
const allSelectedContacts = [...selectedContacts];
|
|
206
|
-
const selectedCustomEmails = remove(allSelectedContacts, (item) => item.customOption || item.
|
|
206
|
+
const selectedCustomEmails = remove(allSelectedContacts, (item) => item.customOption || item.emailAddress).map((item) => item.label || item.emailAddress || item.ssoUsername);
|
|
207
207
|
yield processCustomEmails(selectedCustomEmails);
|
|
208
208
|
yield processCaseContacts(allSelectedContacts);
|
|
209
209
|
if (throwTrackEvent) {
|
|
@@ -82,13 +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, [...
|
|
85
|
+
(_b = props.onChange) === null || _b === void 0 ? void 0 : _b.call(props, [...mappedContacts]);
|
|
86
86
|
setInputVal('');
|
|
87
87
|
setNotifyeesList([...mappedContacts, { emailAddress: notificationAddress.email }]);
|
|
88
88
|
}
|
|
89
89
|
else {
|
|
90
90
|
if (notificationAddress === null || notificationAddress === void 0 ? void 0 : notificationAddress.email) {
|
|
91
|
-
(_c = props.onChange) === null || _c === void 0 ? void 0 : _c.call(props, [
|
|
91
|
+
(_c = props.onChange) === null || _c === void 0 ? void 0 : _c.call(props, [{ emailAddress: notificationAddress.email, caseNumber: '' }]);
|
|
92
92
|
setInputVal('');
|
|
93
93
|
}
|
|
94
94
|
else if (contacts === null || contacts === void 0 ? void 0 : contacts.length) {
|
|
@@ -98,7 +98,7 @@ export function NonOrgCaseNotifyeesSelector(props) {
|
|
|
98
98
|
const { ssoName } = c, rest = __rest(c, ["ssoName"]);
|
|
99
99
|
return Object.assign({ ssoUsername: ssoName }, rest);
|
|
100
100
|
});
|
|
101
|
-
(_d = props.onChange) === null || _d === void 0 ? void 0 : _d.call(props, [...
|
|
101
|
+
(_d = props.onChange) === null || _d === void 0 ? void 0 : _d.call(props, [...mappedContacts]);
|
|
102
102
|
setInputVal('');
|
|
103
103
|
}
|
|
104
104
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Review.d.ts","sourceRoot":"","sources":["../../../../src/components/Review/Review.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Review.d.ts","sourceRoot":"","sources":["../../../../src/components/Review/Review.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAqBlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AACD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,MAAM,qBA2E3C"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Grid, GridItem } from '@patternfly/react-core';
|
|
2
2
|
import { AbilityContext, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
3
|
+
import { PreviousCaseTypes } from '@rh-support/utils';
|
|
3
4
|
import isEmpty from 'lodash/isEmpty';
|
|
4
5
|
import isEqual from 'lodash/isEqual';
|
|
5
6
|
import React, { useContext } from 'react';
|
|
@@ -26,9 +27,10 @@ import { AllProductsSelector } from '../ProductSelector/AllProductsSelector';
|
|
|
26
27
|
import { EARuleWidget } from '../Recommendations/EARules/EARuleWidget';
|
|
27
28
|
export default function Review(props) {
|
|
28
29
|
const caseDispatch = useCaseDispatch();
|
|
29
|
-
const { contactInfo24x7, ABTestVariation } = useCaseSelector((state) => ({
|
|
30
|
+
const { contactInfo24x7, ABTestVariation, caseType } = useCaseSelector((state) => ({
|
|
30
31
|
contactInfo24x7: state.caseDetails.contactInfo24x7,
|
|
31
32
|
ABTestVariation: state.ABTestVariation,
|
|
33
|
+
caseType: state.caseDetails.caseType,
|
|
32
34
|
}), isEqual);
|
|
33
35
|
const ability = useContext(AbilityContext);
|
|
34
36
|
const canSeeEmailNotifications = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_SEND_NOTIFICATIONS);
|
|
@@ -43,9 +45,9 @@ export default function Review(props) {
|
|
|
43
45
|
React.createElement(OwnerSelector, null),
|
|
44
46
|
React.createElement(AllProductsSelector, { routeProps: props.routeProps, loadTCOnChange: true, showTCAfterButtonClicked: true, checkEntitledProduct: true, isOnReviewPage: true }),
|
|
45
47
|
React.createElement(OpenShiftClusterId, null),
|
|
46
|
-
React.createElement(Hostname, null),
|
|
47
|
-
React.createElement(KtQuestions, { inlineEditable: true, hideSaveCancel: true }),
|
|
48
|
-
React.createElement(CaseType,
|
|
48
|
+
caseType !== PreviousCaseTypes.FEATURE_ENHANCEMENT && React.createElement(Hostname, null),
|
|
49
|
+
React.createElement(KtQuestions, { inlineEditable: true, hideSaveCancel: true, onlyShowKT4: caseType === PreviousCaseTypes.FEATURE_ENHANCEMENT }),
|
|
50
|
+
React.createElement(CaseType, null),
|
|
49
51
|
React.createElement(SupportLevel, null),
|
|
50
52
|
React.createElement(Grid, { hasGutter: true },
|
|
51
53
|
React.createElement(GridItem, { span: 12, xl2: 6, className: "pf-v6-u-mb-xl" },
|
|
@@ -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;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,
|
|
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"}
|
|
@@ -88,8 +88,7 @@ function WizardNavigation(props) {
|
|
|
88
88
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
89
89
|
}, [activeSection]);
|
|
90
90
|
useEffect(() => {
|
|
91
|
-
if (props.activeStep.id !== (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT)
|
|
92
|
-
recommendationState.numFound <= 2) {
|
|
91
|
+
if (props.activeStep.id !== (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT)) {
|
|
93
92
|
return;
|
|
94
93
|
}
|
|
95
94
|
const observer = new IntersectionObserver(([entry]) => {
|
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
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/troubleshoot",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.86",
|
|
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": "836dabccddb3dee8d78da2cb88f51f1120596bf6"
|
|
137
137
|
}
|