@rh-support/troubleshoot 1.0.47-beta.42 → 1.0.47-beta.44

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 (32) hide show
  1. package/lib/esm/components/CaseInformation/Description.d.ts +1 -0
  2. package/lib/esm/components/CaseInformation/Description.d.ts.map +1 -1
  3. package/lib/esm/components/CaseInformation/Description.js +1 -2
  4. package/lib/esm/components/IdeaInformation/IdeaInformtion.d.ts.map +1 -1
  5. package/lib/esm/components/IdeaInformation/IdeaInformtion.js +25 -7
  6. package/lib/esm/components/ImproveCase/KtQuestions.d.ts +1 -0
  7. package/lib/esm/components/ImproveCase/KtQuestions.d.ts.map +1 -1
  8. package/lib/esm/components/ImproveCase/KtQuestions.js +22 -27
  9. package/lib/esm/components/Recommendations/InsightsResults.d.ts.map +1 -1
  10. package/lib/esm/components/Recommendations/InsightsResults.js +1 -2
  11. package/lib/esm/components/Recommendations/Recommendations.js +1 -1
  12. package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +2 -2
  13. package/lib/esm/components/shared/fileUpload/FileLister.js +46 -43
  14. package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
  15. package/lib/esm/components/shared/useIsSectionValid.js +8 -1
  16. package/lib/esm/components/wizardLayout/WizardAside.d.ts.map +1 -1
  17. package/lib/esm/components/wizardLayout/WizardAside.js +7 -4
  18. package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
  19. package/lib/esm/components/wizardLayout/WizardLayout.js +5 -3
  20. package/lib/esm/components/wizardLayout/index.d.ts +0 -1
  21. package/lib/esm/components/wizardLayout/index.d.ts.map +1 -1
  22. package/lib/esm/components/wizardLayout/index.js +0 -1
  23. package/lib/esm/css/results.css +22 -27
  24. package/lib/esm/reducers/CaseHelpers.d.ts +1 -0
  25. package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
  26. package/lib/esm/reducers/CaseHelpers.js +23 -0
  27. package/lib/esm/reducers/RouteConstNTypes.d.ts +2 -2
  28. package/lib/esm/reducers/RouteConstNTypes.d.ts.map +1 -1
  29. package/lib/esm/reducers/RouteConstNTypes.js +2 -2
  30. package/lib/esm/reducers/RouteReducer.js +3 -3
  31. package/package.json +4 -4
  32. package/lib/esm/css/feedbackForm.css +0 -92
@@ -1,6 +1,7 @@
1
1
  interface IProps {
2
2
  inlineEditable?: boolean;
3
3
  hideSaveCancel?: boolean;
4
+ customTitle?: string;
4
5
  }
5
6
  export default function Description(props: IProps): JSX.Element;
6
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"Description.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/Description.tsx"],"names":[],"mappings":"AAkBA,UAAU,MAAM;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAK,EAAE,MAAM,eAkGhD"}
1
+ {"version":3,"file":"Description.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/Description.tsx"],"names":[],"mappings":"AAkBA,UAAU,MAAM;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAK,EAAE,MAAM,eAsGhD"}
@@ -43,8 +43,7 @@ export default function Description(props) {
43
43
  return hasFocusedLostKT4 && isEmpty(issue);
44
44
  };
45
45
  return (React.createElement(InlineEdit, { labelContent: React.createElement(React.Fragment, null,
46
- React.createElement(Trans, null, "What are you experiencing? What are you expecting to happen?"),
47
- ' ',
46
+ props.customTitle ? (props.customTitle) : (React.createElement(Trans, null, "What are you experiencing? What are you expecting to happen?")),
48
47
  isKT1Required && (React.createElement("span", { className: "form-required", "aria-hidden": true }, "*"))), labelProps: { htmlFor: 'get-support-ktQ1-issue' }, content: issue, allowInlineEdit: !!props.inlineEditable, hideSaveCancel: !!props.hideSaveCancel, initialIsEditing: isEmpty(issue), usePreformattedTag: true, saveOnBlur: true },
49
48
  React.createElement(TextArea, { id: "get-support-ktQ1-issue", name: "get-support-ktQ1-issue", className: `form-control${isDescriptionInvalid(issue) || (showValidationErrorAlert && isEmpty(issue)) ? ' form-invalid' : ''}`, "aria-invalid": (issue === null || issue === void 0 ? void 0 : issue.length) > CASE_DEATILS_ISSUE_LIMIT ? 'true' : 'false', "aria-required": isKT1Required, isRequired: isKT1Required, value: issue, isDisabled: isEmpty(issue) && hasLargeCaseDescription && !setIssueTextAreaFocused, onChange: onKTQ1IssueChange, onFocus: onKTQ1IssueFocusChange, onBlur: onKTQ1IssueFocusChange, "data-tracking-id": "get-support-ktQ1-issue", placeholder: t('Please enter an elaborate description') }),
50
49
  React.createElement("p", { className: "form-instructions", "data-tracking-id": "large-20k-warning-ktQ1-environment" }, `${(issue === null || issue === void 0 ? void 0 : issue.length) > CASE_DEATILS_ISSUE_LIMIT
@@ -1 +1 @@
1
- {"version":3,"file":"IdeaInformtion.d.ts","sourceRoot":"","sources":["../../../../src/components/IdeaInformation/IdeaInformtion.tsx"],"names":[],"mappings":"AAwBA,MAAM,CAAC,OAAO,UAAU,eAAe,gBAsItC"}
1
+ {"version":3,"file":"IdeaInformtion.d.ts","sourceRoot":"","sources":["../../../../src/components/IdeaInformation/IdeaInformtion.tsx"],"names":[],"mappings":"AA+BA,MAAM,CAAC,OAAO,UAAU,eAAe,gBA0JtC"}
@@ -1,3 +1,4 @@
1
+ import { Flex, FlexItem } from '@patternfly/react-core';
1
2
  import { AlertMessage, AlertType, LoadingIndicator } from '@rh-support/components';
2
3
  import { fetchCaseSeverities, fetchCaseTypes, fetchLanguageMetadata, GlobalMetadataDispatchContext, GlobalMetadataStateContext, } from '@rh-support/react-context';
3
4
  import { canManageCase, haventLoadedMetadata } from '@rh-support/utils';
@@ -6,13 +7,19 @@ import isEqual from 'lodash/isEqual';
6
7
  import React, { useContext, useEffect } from 'react';
7
8
  import { Trans, useTranslation } from 'react-i18next';
8
9
  import { AppMetadataStateContext } from '../../context/AppMetadataContext';
9
- import { useCaseSelector } from '../../context/CaseContext';
10
+ import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
11
+ import { setCaseDetails } from '../../reducers/CaseReducer';
10
12
  import CaseGroup from '../CaseInformation/CaseGroup';
13
+ import { ContactPhoneNumber } from '../CaseInformation/ContactPhoneNumber';
14
+ import { ContactPhoneNumberAlert } from '../CaseInformation/ContactPhoneNumberAlert';
15
+ import Description from '../CaseInformation/Description';
11
16
  import Severity from '../CaseInformation/Severity';
12
17
  import SupportLevel from '../CaseInformation/SupportLevel';
13
18
  import CaseLanguageSelector from '../CaseManagement/CaseLanguageSelector';
19
+ import { Cep } from '../CaseManagement/Cep';
14
20
  import { RHAssociatesSelector } from '../CaseManagement/RHAssociatesSelector';
15
21
  import CaseContactSelector from '../CaseManagement/SendNotifications/CaseContactSelector';
22
+ import KtQuestions from '../ImproveCase/KtQuestions';
16
23
  import OpenshiftIdeaInfo from './OpenshiftIdeaInfo';
17
24
  export default function IdeaInformation() {
18
25
  const { t } = useTranslation();
@@ -26,6 +33,7 @@ export default function IdeaInformation() {
26
33
  hasInvalidEntitlements: state.hasInvalidEntitlements,
27
34
  product: state.caseDetails.product,
28
35
  }), isEqual);
36
+ const caseDispatch = useCaseDispatch();
29
37
  const isOpenshift = product === 'OpenShift Container Platform';
30
38
  const isMetadataLoading = () => {
31
39
  return !isMetadataLoadingError() && (loggedInUser.isFetching || selectedAccountDetails.isFetching);
@@ -69,16 +77,19 @@ export default function IdeaInformation() {
69
77
  selectedAccountDetails,
70
78
  loggedInUsersAccount.data.secureSupport,
71
79
  ]);
80
+ const onSeverityChange = (payload) => {
81
+ setCaseDetails(caseDispatch, payload);
82
+ };
72
83
  return (React.createElement(React.Fragment, null, isOpenshift ? (React.createElement(OpenshiftIdeaInfo, null)) : (React.createElement(React.Fragment, null,
73
84
  React.createElement(LoadingIndicator, { show: isMetadataLoading(), size: "lg" }),
74
- React.createElement(AlertMessage, { variant: AlertType.DANGER, className: "push-top", title: t("Sorry, we're having a problem gathering your information."), show: isMetadataLoadingError() }),
75
- React.createElement(AlertMessage, { show: !canManageCase(loggedInUserJwtToken), variant: AlertType.DANGER, className: "push-top" },
85
+ React.createElement(AlertMessage, { variant: AlertType.DANGER, className: "pf-u-mb-md", title: t("Sorry, we're having a problem gathering your information."), show: isMetadataLoadingError(), isInline: true }),
86
+ React.createElement(AlertMessage, { show: !canManageCase(loggedInUserJwtToken), variant: AlertType.DANGER, className: "pf-u-mb-md", isInline: true },
76
87
  React.createElement(Trans, { i18nKey: "i18ManageCaseContactCustomerService" },
77
88
  "You need additional access to manage cases.\u00A0 Please contact",
78
89
  ' ',
79
90
  React.createElement("a", { href: "/support/contact/customerService" }, "Customer Service"),
80
91
  " for assistance.")),
81
- React.createElement(AlertMessage, { show: hasInvalidEntitlements, variant: AlertType.DANGER, className: "push-top", isInline: true },
92
+ React.createElement(AlertMessage, { show: hasInvalidEntitlements, variant: AlertType.DANGER, className: "pf-u-mb-md", isInline: true },
82
93
  React.createElement(Trans, { i18nKey: "i18ValidEntitlementContactCustomerService" },
83
94
  "You need a valid entitlement to create a case.\u00A0 Please contact",
84
95
  ' ',
@@ -89,11 +100,18 @@ export default function IdeaInformation() {
89
100
  !isMetadataLoadingError() &&
90
101
  canManageCase(loggedInUserJwtToken) && (React.createElement(React.Fragment, null,
91
102
  React.createElement("form", { onSubmit: handleFormSubmit },
92
- React.createElement("div", null, "Kt questions to be added"),
103
+ React.createElement(Description, { inlineEditable: false, customTitle: t('Please describe your request') }),
104
+ React.createElement(KtQuestions, { onlyShowKT4: true }),
93
105
  React.createElement(SupportLevel, null),
94
- React.createElement(Severity, null),
106
+ React.createElement(Flex, { direction: { default: 'column', '2xl': 'row' } },
107
+ React.createElement(FlexItem, { flex: { default: 'flex_1' } },
108
+ React.createElement(Severity, { showSeverityInfoIcon: true, onSeverityChange: onSeverityChange })),
109
+ React.createElement(FlexItem, { flex: { default: 'flex_1' } },
110
+ React.createElement(ContactPhoneNumber, null))),
111
+ React.createElement(ContactPhoneNumberAlert, null),
95
112
  React.createElement(CaseLanguageSelector, { isManageStep: true }),
96
113
  React.createElement(CaseGroup, { init: true }),
97
114
  React.createElement(CaseContactSelector, null),
98
- React.createElement(RHAssociatesSelector, null))))))));
115
+ React.createElement(RHAssociatesSelector, null),
116
+ React.createElement(Cep, null))))))));
99
117
  }
@@ -1,6 +1,7 @@
1
1
  interface IProps {
2
2
  inlineEditable?: boolean;
3
3
  hideSaveCancel?: boolean;
4
+ onlyShowKT4?: boolean;
4
5
  }
5
6
  declare function KtQuestions(props: IProps): JSX.Element;
6
7
  declare namespace KtQuestions {
@@ -1 +1 @@
1
- {"version":3,"file":"KtQuestions.d.ts","sourceRoot":"","sources":["../../../../src/components/ImproveCase/KtQuestions.tsx"],"names":[],"mappings":"AAqBA,UAAU,MAAM;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAGD,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,eA0QjC;kBA1QQ,WAAW;;;AA4QpB,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"KtQuestions.d.ts","sourceRoot":"","sources":["../../../../src/components/ImproveCase/KtQuestions.tsx"],"names":[],"mappings":"AAqBA,UAAU,MAAM;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAGD,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,eAuQjC;kBAvQQ,WAAW;;;AAyQpB,eAAe,WAAW,CAAC"}
@@ -9,7 +9,7 @@ import { RouteContext } from '../../context/RouteContext';
9
9
  import { CASE_DEATILS_ENVIRONMENT_LIMIT, CASE_DEATILS_PERIODICITYOFISSUE_LIMIT, CASE_DETAILS_TIMEFRAMESANDURGENCY_LIMIT, KtQuestionConstant, LargeDescriptionErrorMessage, MODIFIED_DESCRIPTION_LENGTH_LIMIT, } from '../../reducers/CaseConstNTypes';
10
10
  import { getUpdatedDescription } from '../../reducers/CaseHelpers';
11
11
  import { setCaseDetails } from '../../reducers/CaseReducer';
12
- const defaultProps = { inlineEditable: false, hideSaveCancel: false };
12
+ const defaultProps = { inlineEditable: false, hideSaveCancel: false, onlyShowKT4: false };
13
13
  function KtQuestions(props) {
14
14
  var _a, _b, _c;
15
15
  const { t } = useTranslation();
@@ -25,19 +25,15 @@ function KtQuestions(props) {
25
25
  const caseDispatch = useCaseDispatch();
26
26
  const [isKTQ2TextAreaActive, setKTQ2TextAreaActive] = useState(false);
27
27
  const [hasFocusedLostKT2, setHasFocusedLostKT2] = useState(false);
28
- // const [isKTQ2InValid, setKTQ2InValid] = useState(false);
29
28
  const onKTQ2FocusChange = (e) => {
30
29
  setKTQ2TextAreaActive(e.type === 'focus');
31
30
  e.type === 'blur' && setHasFocusedLostKT2(true);
32
- // e.type !== 'focus' && setKTQ2InValid(isEmpty(description));
33
31
  };
34
32
  const [isKTQ3TextAreaActive, setKTQ3TextAreaActive] = useState(false);
35
- // const [isKTQ3InValid, setKTQ3InValid] = useState(false);
36
33
  const [hasFocusedLostKT3, setHasFocusedLostKT3] = useState(false);
37
34
  const onKTQ3FocusChange = (e) => {
38
35
  setKTQ3TextAreaActive(e.type === 'focus');
39
36
  e.type === 'blur' && setHasFocusedLostKT3(true);
40
- // e.type !== 'focus' && setKTQ3InValid(isEmpty(description));
41
37
  };
42
38
  const [isKTQ4TextAreaActive, setKTQ4TextAreaActive] = useState(false);
43
39
  const [isKTQ4InValid, setKTQ4InValid] = useState(false);
@@ -48,8 +44,6 @@ function KtQuestions(props) {
48
44
  e.type === 'blur' && setHasFocusedLostKT4(true);
49
45
  };
50
46
  useEffect(() => {
51
- // hasFocusedLostKT2 && setKTQ2InValid(isEmpty(description) && isEmpty(timeFramesAndUrgency));
52
- // hasFocusedLostKT3 && setKTQ3InValid(isEmpty(description) && isEmpty(timeFramesAndUrgency));
53
47
  hasFocusedLostKT4 && setKTQ4InValid(isEmpty(description) && isEmpty(timeFramesAndUrgency));
54
48
  }, [description, timeFramesAndUrgency, hasFocusedLostKT2, hasFocusedLostKT3, hasFocusedLostKT4]);
55
49
  const onCaseDetailsChange = (caseDetails) => {
@@ -101,26 +95,27 @@ function KtQuestions(props) {
101
95
  ? `Description cannot be more than ${CASE_DETAILS_TIMEFRAMESANDURGENCY_LIMIT} characters`
102
96
  : ''}`),
103
97
  React.createElement("p", { className: "form-instructions", "data-tracking-id": "large-warning-ktQ4-timeFramesAndUrgency" }, `${hasLargeCaseDescription && isKTQ4TextAreaActive ? descriptionErrorMessage : ''}`)),
104
- React.createElement(InlineEdit, { labelProps: { htmlFor: 'ktQ2-environment' }, labelContent: React.createElement(React.Fragment, null,
105
- t(KtQuestionConstant.environment),
106
- ' ',
107
- isKT2Required && (React.createElement("span", { className: "form-required", "aria-hidden": true }, "*"))), allowInlineEdit: props.inlineEditable, hideSaveCancel: props.hideSaveCancel, initialIsEditing: isEmpty(environment), usePreformattedTag: true, saveOnBlur: true, content: environment },
108
- React.createElement(TextArea, { className: `form-control`, id: "ktQ2-environment", value: environment, isDisabled: isEmpty(environment) && hasLargeCaseDescription && !isKTQ2TextAreaActive, onChange: onKtQ2Change, onFocus: onKTQ2FocusChange, onBlur: onKTQ2FocusChange, "aria-required": isKT2Required, isRequired: isKT2Required, "data-tracking-id": "get-support-ktQ2-environment", placeholder: t('User or financial impact, and whether there’s a legal, national, or medical urgency'), "aria-invalid": environment && (environment === null || environment === void 0 ? void 0 : environment.length) > CASE_DEATILS_ENVIRONMENT_LIMIT ? 'true' : 'false' }),
109
- React.createElement("p", { className: "form-instructions", "data-tracking-id": "large-4k-warning-ktQ2-environment" }, `${isKTQ2TextAreaActive && ((_b = environment) === null || _b === void 0 ? void 0 : _b.length) > CASE_DEATILS_ENVIRONMENT_LIMIT
110
- ? `Description cannot be more than ${CASE_DEATILS_ENVIRONMENT_LIMIT} characters`
111
- : ''}`),
112
- React.createElement("p", { className: "form-instructions", "data-tracking-id": "large-warning-ktQ2-environment" }, `${hasLargeCaseDescription && isKTQ2TextAreaActive ? descriptionErrorMessage : ''}`)),
113
- React.createElement(InlineEdit, { labelProps: { htmlFor: 'ktQ3-periodicityOfIssue' }, labelContent: React.createElement(React.Fragment, null,
114
- t(KtQuestionConstant.periodicityOfIssue),
115
- ' ',
116
- isKT3Required && (React.createElement("span", { className: "form-required", "aria-hidden": true }, "*"))), allowInlineEdit: props.inlineEditable, hideSaveCancel: props.hideSaveCancel, initialIsEditing: isEmpty(periodicityOfIssue), usePreformattedTag: true, saveOnBlur: true, content: periodicityOfIssue },
117
- React.createElement(TextArea, { className: `form-control`, id: "ktQ3-periodicityOfIssue", value: periodicityOfIssue, isDisabled: isEmpty(periodicityOfIssue) && hasLargeCaseDescription && !isKTQ3TextAreaActive, onChange: onKtQ3Change, onFocus: onKTQ3FocusChange, onBlur: onKTQ3FocusChange, "aria-required": isKT3Required, isRequired: isKT3Required, "data-tracking-id": "get-support-ktQ3-periodicityOfIssue", "aria-invalid": periodicityOfIssue && (periodicityOfIssue === null || periodicityOfIssue === void 0 ? void 0 : periodicityOfIssue.length) > CASE_DEATILS_PERIODICITYOFISSUE_LIMIT
118
- ? 'true'
119
- : 'false', placeholder: t('User or financial impact, and whether there’s a legal, national, or medical urgency') }),
120
- React.createElement("p", { className: "form-instructions", "data-tracking-id": "large-4k-warning-ktQ3-environment" }, `${isKTQ3TextAreaActive && ((_c = periodicityOfIssue) === null || _c === void 0 ? void 0 : _c.length) > CASE_DEATILS_PERIODICITYOFISSUE_LIMIT
121
- ? `Description cannot be more than ${CASE_DEATILS_PERIODICITYOFISSUE_LIMIT} characters`
122
- : ''}`),
123
- React.createElement("p", { className: "form-instructions", "data-tracking-id": "large-warning-ktQ3-periodicityOfIssue" }, `${hasLargeCaseDescription && isKTQ3TextAreaActive ? descriptionErrorMessage : ''}`))));
98
+ !props.onlyShowKT4 && (React.createElement(React.Fragment, null,
99
+ React.createElement(InlineEdit, { labelProps: { htmlFor: 'ktQ2-environment' }, labelContent: React.createElement(React.Fragment, null,
100
+ t(KtQuestionConstant.environment),
101
+ ' ',
102
+ isKT2Required && (React.createElement("span", { className: "form-required", "aria-hidden": true }, "*"))), allowInlineEdit: props.inlineEditable, hideSaveCancel: props.hideSaveCancel, initialIsEditing: isEmpty(environment), usePreformattedTag: true, saveOnBlur: true, content: environment },
103
+ React.createElement(TextArea, { className: `form-control`, id: "ktQ2-environment", value: environment, isDisabled: isEmpty(environment) && hasLargeCaseDescription && !isKTQ2TextAreaActive, onChange: onKtQ2Change, onFocus: onKTQ2FocusChange, onBlur: onKTQ2FocusChange, "aria-required": isKT2Required, isRequired: isKT2Required, "data-tracking-id": "get-support-ktQ2-environment", placeholder: t('User or financial impact, and whether there’s a legal, national, or medical urgency'), "aria-invalid": environment && (environment === null || environment === void 0 ? void 0 : environment.length) > CASE_DEATILS_ENVIRONMENT_LIMIT ? 'true' : 'false' }),
104
+ React.createElement("p", { className: "form-instructions", "data-tracking-id": "large-4k-warning-ktQ2-environment" }, `${isKTQ2TextAreaActive && ((_b = environment) === null || _b === void 0 ? void 0 : _b.length) > CASE_DEATILS_ENVIRONMENT_LIMIT
105
+ ? `Description cannot be more than ${CASE_DEATILS_ENVIRONMENT_LIMIT} characters`
106
+ : ''}`),
107
+ React.createElement("p", { className: "form-instructions", "data-tracking-id": "large-warning-ktQ2-environment" }, `${hasLargeCaseDescription && isKTQ2TextAreaActive ? descriptionErrorMessage : ''}`)),
108
+ React.createElement(InlineEdit, { labelProps: { htmlFor: 'ktQ3-periodicityOfIssue' }, labelContent: React.createElement(React.Fragment, null,
109
+ t(KtQuestionConstant.periodicityOfIssue),
110
+ ' ',
111
+ isKT3Required && (React.createElement("span", { className: "form-required", "aria-hidden": true }, "*"))), allowInlineEdit: props.inlineEditable, hideSaveCancel: props.hideSaveCancel, initialIsEditing: isEmpty(periodicityOfIssue), usePreformattedTag: true, saveOnBlur: true, content: periodicityOfIssue },
112
+ React.createElement(TextArea, { className: `form-control`, id: "ktQ3-periodicityOfIssue", value: periodicityOfIssue, isDisabled: isEmpty(periodicityOfIssue) && hasLargeCaseDescription && !isKTQ3TextAreaActive, onChange: onKtQ3Change, onFocus: onKTQ3FocusChange, onBlur: onKTQ3FocusChange, "aria-required": isKT3Required, isRequired: isKT3Required, "data-tracking-id": "get-support-ktQ3-periodicityOfIssue", "aria-invalid": periodicityOfIssue && (periodicityOfIssue === null || periodicityOfIssue === void 0 ? void 0 : periodicityOfIssue.length) > CASE_DEATILS_PERIODICITYOFISSUE_LIMIT
113
+ ? 'true'
114
+ : 'false', placeholder: t('User or financial impact, and whether there’s a legal, national, or medical urgency') }),
115
+ React.createElement("p", { className: "form-instructions", "data-tracking-id": "large-4k-warning-ktQ3-environment" }, `${isKTQ3TextAreaActive && ((_c = periodicityOfIssue) === null || _c === void 0 ? void 0 : _c.length) > CASE_DEATILS_PERIODICITYOFISSUE_LIMIT
116
+ ? `Description cannot be more than ${CASE_DEATILS_PERIODICITYOFISSUE_LIMIT} characters`
117
+ : ''}`),
118
+ React.createElement("p", { className: "form-instructions", "data-tracking-id": "large-warning-ktQ3-periodicityOfIssue" }, `${hasLargeCaseDescription && isKTQ3TextAreaActive ? descriptionErrorMessage : ''}`))))));
124
119
  }
125
120
  KtQuestions.defaultProps = defaultProps;
126
121
  export default KtQuestions;
@@ -1 +1 @@
1
- {"version":3,"file":"InsightsResults.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/InsightsResults.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAgC,MAAM,0CAA0C,CAAC;AAG7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAwB5D,UAAU,MAAO,SAAQ,gBAAgB;IACrC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AASD,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;CAClB;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,eAgQrC;kBAhQQ,eAAe;;;AAmQxB,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"InsightsResults.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/InsightsResults.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAgC,MAAM,0CAA0C,CAAC;AAG7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAwB5D,UAAU,MAAO,SAAQ,gBAAgB;IACrC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AASD,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;CAClB;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,eA8PrC;kBA9PQ,eAAe;;;AAiQxB,eAAe,eAAe,CAAC"}
@@ -235,8 +235,7 @@ function InsightsResults(props) {
235
235
  if (isEmpty(allResults))
236
236
  return React.createElement(React.Fragment, null);
237
237
  if (props.isDisplayOnMain) {
238
- return (React.createElement(React.Fragment, null,
239
- React.createElement(InsightResultModal, { EARule: validEARules, onModalToggle: insightsModalToggle, isOpen: isRuleModalVisible, insightResults: allResults, isRenderedMain: true })));
238
+ return (React.createElement(InsightResultModal, { EARule: validEARules, onModalToggle: insightsModalToggle, isOpen: isRuleModalVisible, insightResults: allResults, isRenderedMain: true }));
240
239
  }
241
240
  return (React.createElement(React.Fragment, null,
242
241
  !rulesState.triggerRuleNotification && (React.createElement(Alert, { isInline: true, title: t('Critical solutions have been triggered'), "data-tracking-id": "inline-view-crit-sol", actionLinks: React.createElement(Button, { isInline: true, className: "pf-c-alert__action", variant: "link", onClick: () => {
@@ -133,7 +133,7 @@ export default function Recommendations(props) {
133
133
  (!props.renderOnlyRecommendations || !props.renderOnlyRecommendations) && React.createElement(Issue, null),
134
134
  React.createElement(LoadingDots, { show: recommendationState.isLoadingRecommendations && !isEmpty(summary) }),
135
135
  (!props.renderOnlyRecommendations || !props.renderOnlyRecommendations) && React.createElement(EARuleWidget, null),
136
- React.createElement("div", { className: "recommendation-list", ref: resultRowRef },
136
+ React.createElement("div", { className: "recommendation-list pf-u-mt-lg", ref: resultRowRef },
137
137
  React.createElement("ul", { className: "list-flat" }, map(recommendationState.visibleDocs, (doc, i) => {
138
138
  var _a, _b;
139
139
  return (React.createElement("li", { className: "result", key: doc.id },
@@ -33,7 +33,7 @@ function TroubleshootSection(props) {
33
33
  React.createElement(OpenShiftClusterId, null))),
34
34
  React.createElement("section", null,
35
35
  React.createElement("header", null,
36
- React.createElement("h3", { className: "push-bottom" },
36
+ React.createElement("h3", null,
37
37
  React.createElement(Trans, null,
38
38
  "Because you selected",
39
39
  ' ',
@@ -41,7 +41,7 @@ function TroubleshootSection(props) {
41
41
  React.createElement(LoadingDots, { show: topContent.isFetching }),
42
42
  React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading suggestions') } }, canShowTopContent && !isEmpty(version) && React.createElement(Suggestions, null)),
43
43
  !isCreatingCase && React.createElement(ClusterRecommendations, { className: "push-top" }))),
44
- React.createElement("section", null,
44
+ React.createElement("section", { className: "pf-u-mt-lg" },
45
45
  React.createElement(InsightsResults, { isDisplayOnMain: true }),
46
46
  React.createElement("div", { className: "push-top" },
47
47
  React.createElement(FileDiag, null)))));
@@ -50,7 +50,7 @@ export default function FileLister(props) {
50
50
  const getAnalysisStepCount = (localFile) => {
51
51
  const diagStatus = getAnalysisStep(localFile);
52
52
  const stepIndex = analysisSteps.indexOf(diagStatus);
53
- return stepIndex > -1 ? stepIndex + 1 : analysisSteps.length + 1;
53
+ return stepIndex > -1 ? stepIndex + 1 : (analysisSteps === null || analysisSteps === void 0 ? void 0 : analysisSteps.length) + 1;
54
54
  };
55
55
  const getAnalysisStep = (localFile) => {
56
56
  return analysisStepMap[localFile.analysisMetadata.diagnosticsStatus];
@@ -85,48 +85,51 @@ export default function FileLister(props) {
85
85
  return (React.createElement(React.Fragment, null,
86
86
  React.createElement("div", { className: "file-diag-selected" },
87
87
  React.createElement("span", { className: "sr-only" }, "Selected files"),
88
- React.createElement("ul", { className: "file-diag-list" }, map(props.selectedLocalFiles, (localFile, index) => isFileDeleted(localFile.uploadProgress.uploadStatus) ? (React.createElement(React.Fragment, { key: index })) : (React.createElement("li", { key: index, className: `${localFile.uploadability.ableToUpload
89
- ? `file-${index + 1}`
90
- : `file-${index + 1} text-error`}` },
91
- React.createElement("div", { className: "file-name" },
92
- React.createElement("label", { htmlFor: `file-${index + 1}-description` },
93
- !isUploadOnTrack(localFile) && (React.createElement("i", { className: "icon-warning pf-u-mr-sm", title: getUploadErrorMessage(localFile, localFile.uploadability), "aria-label": getUploadErrorMessage(localFile, localFile.uploadability) })),
94
- isUploadedAndAnalysisFailed(localFile) && (React.createElement("i", { className: "icon-warning text-danger pf-u-mr-sm", title: getUploadErrorMessage(localFile, localFile.uploadability), "aria-label": getUploadErrorMessage(localFile, localFile.uploadability) })),
95
- isUploadedAndAnalyzed(localFile) && (React.createElement("i", { className: "icon-check-alt text-green pf-u-mr-sm", title: t('File uploaded and analyzed'), "aria-label": t('File uploaded and analyzed') })),
96
- isUploading(localFile.uploadProgress.uploadStatus) && (React.createElement("div", { className: "pf-u-mr-sm pf-u-display-inline-block", style: { height: '20px', width: '20px' } },
97
- React.createElement(CircularProgressbar, { title: getRadialProgressTitle(localFile), strokeWidth: 13, value: localFile.uploadProgress.percentUploaded }))),
98
- React.createElement("span", null, `${localFile.name} (${humanizeSize(localFile.size)})`),
99
- !localFile.uploadability.ableToUpload && (React.createElement("span", { className: "file-error" },
100
- React.createElement(Trans, null, "can't be selected."))),
101
- localFile.isPrivate && (React.createElement(Label, { color: "red", className: "pf-u-ml-sm" },
102
- React.createElement(Trans, null, "Private")))),
103
- !shouldHideDescription(localFile, props.isSessionId) &&
104
- localFile.description.length > 1 && (React.createElement("span", { className: "character-counter text-muted" }, 255 - localFile.description.length)),
105
- (isUploadFailed(localFile.uploadProgress.uploadStatus) ||
106
- isUploadAborted(localFile.uploadProgress.uploadStatus)) && (React.createElement("button", { type: "button", "aria-label": "Failed to upload, Retry", title: "Failed to upload, Retry", className: "btn btn-link btn-xs", "data-tracking-id": "file-lister-retry", onClick: onRetry(index) },
107
- React.createElement("i", { className: "nimbus-icon-backup" }))),
108
- !isVerifyingUpload(localFile.uploadProgress.uploadStatus) &&
109
- !isAnalysingFile(localFile.analysisMetadata.analysisStatus) && (React.createElement(React.Fragment, null,
110
- canShowAbortBtn(localFile.uploadProgress.uploadStatus) && (React.createElement(Button, { variant: ButtonVariant.link, isDanger: true, "aria-label": t('Cancel Upload'), title: t('Cancel Upload'), className: "btn btn-link btn-app remove-file", "data-tracking-id": "file-lister-abort", onClick: onAbortClick(localFile, index), hidden: !localFile.uploadability.ableToUpload, isDisabled: !(localFile.uploadProgress.percentUploaded > 0) },
111
- React.createElement(Trans, null, "Cancel"))),
112
- showDeleteBtn(localFile.uploadProgress.uploadStatus, localFile) && (React.createElement(Button, { variant: ButtonVariant.link, isDanger: true, "aria-label": t('Delete file'), title: t('Delete file'), className: "btn btn-link btn-app remove-file", "data-tracking-id": "file-lister-delete", onClick: onRemoveClick(localFile, index), hidden: !localFile.uploadability.ableToUpload },
113
- React.createElement(Trans, null, "Remove")))))),
114
- isAnalysingFile(localFile.analysisMetadata.analysisStatus) && (React.createElement(Progress, { measureLocation: ProgressMeasureLocation.top, value: getAnalysisStepCount(localFile), min: 0, max: analysisSteps.length + 1, label: getAnalysisProgressTitle(localFile), valueText: getAnalysisProgressTitle(localFile) })),
115
- React.createElement("input", { id: `file-${index + 1}-description`, "data-tracking-id": `case-${props.isSessionId ? 'create' : 'details'}-file-${index + 1}-description`, className: "file-description form-control pf-u-my-sm", type: "text", value: localFile.description, onChange: onDescriptionChange(localFile, index), maxLength: 255, placeholder: t(`${shouldHideDescription(localFile, props.isSessionId)
116
- ? ''
117
- : t('Enter a description')}`), hidden: shouldHideDescription(localFile, props.isSessionId) }),
118
- isUploadedAndAnalysisSkipped(localFile) && (React.createElement("span", { className: "text-muted" }, localFile.analysisMetadata.analysisErrorMesssage)),
119
- isUploadedAndAnalysisFailed(localFile) && (React.createElement("span", { className: "text-danger" },
120
- React.createElement(Trans, null, "Something went wrong during file analysis."),
121
- React.createElement(Button, { onClick: onRetryAnalysis(index), isInline: true, variant: ButtonVariant.link },
122
- React.createElement(Trans, null, "Try analyzing again.")))),
123
- isUploadFailed(localFile.uploadProgress.uploadStatus) && (React.createElement("span", { className: "text-danger" },
124
- React.createElement(Trans, null,
125
- "Upload Failed, ",
126
- localFile.uploadProgress.uploadErrorMessage,
127
- ". "),
128
- React.createElement(Button, { onClick: onRetry(index), isInline: true, variant: ButtonVariant.link },
129
- React.createElement(Trans, null, "Try again")))))))),
88
+ React.createElement("ul", { className: "file-diag-list" }, map(props.selectedLocalFiles, (localFile, index) => {
89
+ var _a;
90
+ return isFileDeleted(localFile.uploadProgress.uploadStatus) ? (React.createElement(React.Fragment, { key: index })) : (React.createElement("li", { key: index, className: `${localFile.uploadability.ableToUpload
91
+ ? `file-${index + 1}`
92
+ : `file-${index + 1} text-error`}` },
93
+ React.createElement("div", { className: "file-name" },
94
+ React.createElement("label", { htmlFor: `file-${index + 1}-description` },
95
+ !isUploadOnTrack(localFile) && (React.createElement("i", { className: "icon-warning pf-u-mr-sm", title: getUploadErrorMessage(localFile, localFile.uploadability), "aria-label": getUploadErrorMessage(localFile, localFile.uploadability) })),
96
+ isUploadedAndAnalysisFailed(localFile) && (React.createElement("i", { className: "icon-warning text-danger pf-u-mr-sm", title: getUploadErrorMessage(localFile, localFile.uploadability), "aria-label": getUploadErrorMessage(localFile, localFile.uploadability) })),
97
+ isUploadedAndAnalyzed(localFile) && (React.createElement("i", { className: "icon-check-alt text-green pf-u-mr-sm", title: t('File uploaded and analyzed'), "aria-label": t('File uploaded and analyzed') })),
98
+ isUploading(localFile.uploadProgress.uploadStatus) && (React.createElement("div", { className: "pf-u-mr-sm pf-u-display-inline-block", style: { height: '20px', width: '20px' } },
99
+ React.createElement(CircularProgressbar, { title: getRadialProgressTitle(localFile), strokeWidth: 13, value: localFile.uploadProgress.percentUploaded }))),
100
+ React.createElement("span", null, `${localFile.name} (${humanizeSize(localFile.size)})`),
101
+ !localFile.uploadability.ableToUpload && (React.createElement("span", { className: "file-error" },
102
+ React.createElement(Trans, null, "can't be selected."))),
103
+ localFile.isPrivate && (React.createElement(Label, { color: "red", className: "pf-u-ml-sm" },
104
+ React.createElement(Trans, null, "Private")))),
105
+ !shouldHideDescription(localFile, props.isSessionId) &&
106
+ ((_a = localFile === null || localFile === void 0 ? void 0 : localFile.description) === null || _a === void 0 ? void 0 : _a.length) > 1 && (React.createElement("span", { className: "character-counter text-muted" }, 255 - localFile.description.length)),
107
+ (isUploadFailed(localFile.uploadProgress.uploadStatus) ||
108
+ isUploadAborted(localFile.uploadProgress.uploadStatus)) && (React.createElement("button", { type: "button", "aria-label": "Failed to upload, Retry", title: "Failed to upload, Retry", className: "btn btn-link btn-xs", "data-tracking-id": "file-lister-retry", onClick: onRetry(index) },
109
+ React.createElement("i", { className: "nimbus-icon-backup" }))),
110
+ !isVerifyingUpload(localFile.uploadProgress.uploadStatus) &&
111
+ !isAnalysingFile(localFile.analysisMetadata.analysisStatus) && (React.createElement(React.Fragment, null,
112
+ canShowAbortBtn(localFile.uploadProgress.uploadStatus) && (React.createElement(Button, { variant: ButtonVariant.link, isDanger: true, "aria-label": t('Cancel Upload'), title: t('Cancel Upload'), className: "btn btn-link btn-app remove-file", "data-tracking-id": "file-lister-abort", onClick: onAbortClick(localFile, index), hidden: !localFile.uploadability.ableToUpload, isDisabled: !(localFile.uploadProgress.percentUploaded > 0) },
113
+ React.createElement(Trans, null, "Cancel"))),
114
+ showDeleteBtn(localFile.uploadProgress.uploadStatus, localFile) && (React.createElement(Button, { variant: ButtonVariant.link, isDanger: true, "aria-label": t('Delete file'), title: t('Delete file'), className: "btn btn-link btn-app remove-file", "data-tracking-id": "file-lister-delete", onClick: onRemoveClick(localFile, index), hidden: !localFile.uploadability.ableToUpload },
115
+ React.createElement(Trans, null, "Remove")))))),
116
+ isAnalysingFile(localFile.analysisMetadata.analysisStatus) && (React.createElement(Progress, { measureLocation: ProgressMeasureLocation.top, value: getAnalysisStepCount(localFile), min: 0, max: (analysisSteps === null || analysisSteps === void 0 ? void 0 : analysisSteps.length) + 1, label: getAnalysisProgressTitle(localFile), valueText: getAnalysisProgressTitle(localFile) })),
117
+ React.createElement("input", { id: `file-${index + 1}-description`, "data-tracking-id": `case-${props.isSessionId ? 'create' : 'details'}-file-${index + 1}-description`, className: "file-description form-control pf-u-my-sm", type: "text", value: localFile.description, onChange: onDescriptionChange(localFile, index), maxLength: 255, placeholder: t(`${shouldHideDescription(localFile, props.isSessionId)
118
+ ? ''
119
+ : t('Enter a description')}`), hidden: shouldHideDescription(localFile, props.isSessionId) }),
120
+ isUploadedAndAnalysisSkipped(localFile) && (React.createElement("span", { className: "text-muted" }, localFile.analysisMetadata.analysisErrorMesssage)),
121
+ isUploadedAndAnalysisFailed(localFile) && (React.createElement("span", { className: "text-danger" },
122
+ React.createElement(Trans, null, "Something went wrong during file analysis."),
123
+ React.createElement(Button, { onClick: onRetryAnalysis(index), isInline: true, variant: ButtonVariant.link },
124
+ React.createElement(Trans, null, "Try analyzing again.")))),
125
+ isUploadFailed(localFile.uploadProgress.uploadStatus) && (React.createElement("span", { className: "text-danger" },
126
+ React.createElement(Trans, null,
127
+ "Upload Failed, ",
128
+ localFile.uploadProgress.uploadErrorMessage,
129
+ ". "),
130
+ React.createElement(Button, { onClick: onRetry(index), isInline: true, variant: ButtonVariant.link },
131
+ React.createElement(Trans, null, "Try again"))))));
132
+ })),
130
133
  props.showSlowUploadMsg && isUploadingAttachment(props.selectedLocalFiles) && (React.createElement("span", { className: "text-muted" },
131
134
  React.createElement(Trans, null, "We detected you are on a slow internet connection. This might take a while depending on the file size."))))));
132
135
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useIsSectionValid.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/useIsSectionValid.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,wBAAgB,iBAAiB,CAAC,WAAW,GAAE,gBAAuB;;;;;EAiLrE"}
1
+ {"version":3,"file":"useIsSectionValid.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/useIsSectionValid.tsx"],"names":[],"mappings":"AAyBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,wBAAgB,iBAAiB,CAAC,WAAW,GAAE,gBAAuB;;;;;EA2LrE"}
@@ -8,7 +8,7 @@ import { RecommendationStateContext } from '../../context/RecommendationContext'
8
8
  import { RouteContext, RouteDispatchContext } from '../../context/RouteContext';
9
9
  import { TCStateContext } from '../../context/TopContentContext';
10
10
  import { CASE_REFERENCE_NUMBER_LIMIT, CONTACT_INFO_24X7_LIMIT, DESCRIPTION_LENGTH_LIMIT, HOSTNAME_LENGTH_LIMIT, PHONE_LIMIT, SUMMARY_LENGTH_LIMIT, } from '../../reducers/CaseConstNTypes';
11
- import { isCaseInformationSectionValid, isCaseManagementStateValid, isCaseStateValid, isClusterIDValid, } from '../../reducers/CaseHelpers';
11
+ import { isCaseInformationSectionValid, isCaseManagementStateValid, isCaseStateValid, isClusterIDValid, isIdeaCaseStateValid, } from '../../reducers/CaseHelpers';
12
12
  import { AppRouteSections } from '../../reducers/RouteConstNTypes';
13
13
  import { RouteReducerConstants } from '../../reducers/RouteReducer';
14
14
  export function useIsSectionValid(sectionName = null) {
@@ -78,6 +78,11 @@ export function useIsSectionValid(sectionName = null) {
78
78
  isCaseStateValid(caseState, loggedInUserJwtToken) &&
79
79
  isClusterIDValid(caseState, (_a = allProducts.data) === null || _a === void 0 ? void 0 : _a.productsResult));
80
80
  };
81
+ const isDescribeIdeaSectionValid = () => {
82
+ return (isCaseManagementStateValid(caseState, loggedInUserJwtToken) &&
83
+ isEntitledProduct &&
84
+ isIdeaCaseStateValid(caseState, loggedInUserJwtToken));
85
+ };
81
86
  const isCaseDescribeMoreSectionValidLocal = () => {
82
87
  var _a;
83
88
  const hostnameIsValid = hostname ? hostname.length <= HOSTNAME_LENGTH_LIMIT : true;
@@ -102,6 +107,8 @@ export function useIsSectionValid(sectionName = null) {
102
107
  return isCaseManagementSectionValid();
103
108
  case AppRouteSections.REVIEW:
104
109
  return isReviewSectionValid();
110
+ case AppRouteSections.DESCRIBE_IDEA:
111
+ return isDescribeIdeaSectionValid();
105
112
  default:
106
113
  return false;
107
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WizardAside.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardAside.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,EAEH,eAAe,EAGlB,MAAM,iCAAiC,CAAC;AAWzC,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,2BAA2B,EAAE,OAAO,CAAC;IACrC,qBAAqB,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5D;AAGD,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,eAkDjC;kBAlDQ,WAAW;;;AAoDpB,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"WizardAside.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardAside.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,EAEH,eAAe,EAIlB,MAAM,iCAAiC,CAAC;AAWzC,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,2BAA2B,EAAE,OAAO,CAAC;IACrC,qBAAqB,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5D;AAGD,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,eAqDjC;kBArDQ,WAAW;;;AAuDpB,eAAe,WAAW,CAAC"}
@@ -5,7 +5,7 @@ import isEqual from 'lodash/isEqual';
5
5
  import React, { useContext } from 'react';
6
6
  import { useCaseSelector } from '../../context/CaseContext';
7
7
  import { RouteContext } from '../../context/RouteContext';
8
- import { hideFileUploadSidebarWidgetSections, showSideBarClusterIdRuleWidgetSections, showSideBarEARuleWidgetSections, } from '../../reducers/RouteConstNTypes';
8
+ import { hideFileUploadSidebarWidgetSections, showSideBarClusterIdRuleWidgetSections, showSideBarEARuleWidgetSections, showSideBarFileRecommendationSections, } from '../../reducers/RouteConstNTypes';
9
9
  import { getAppRouteConfugurations } from '../../reducers/RouteReducer';
10
10
  import { CaseSolutions } from '../CaseEditView/CaseSolutions/CaseSolutions';
11
11
  import { FileDiag } from '../CaseInformation/FileDiag';
@@ -34,7 +34,8 @@ function WizardAside(props) {
34
34
  !props.isAttachmentUploadModalOpen &&
35
35
  !hideFileUploadSidebarWidgetSections.includes(activeSection);
36
36
  const canshowEARuleWidget = showSideBarEARuleWidgetSections.includes(activeSection);
37
- const canShowClusterIdReportWidgets = showSideBarClusterIdRuleWidgetSections.includes(activeSection);
37
+ const canShowClusterIdReportWidget = showSideBarClusterIdRuleWidgetSections.includes(activeSection);
38
+ const canShowFileRecommendationSectionsWidget = showSideBarFileRecommendationSections.includes(activeSection);
38
39
  if (appRouteConfugurations[activeSection].hideAside) {
39
40
  return null;
40
41
  }
@@ -42,9 +43,11 @@ function WizardAside(props) {
42
43
  React.createElement("section", { className: "grid-aside-content" },
43
44
  canshowEARuleWidget && React.createElement(EARuleWidget, null),
44
45
  React.createElement(InsightsResults, null),
45
- React.createElement(ClusterRecommendations, { showClusterRecommendationsList: canShowClusterIdReportWidgets }),
46
- canUseSessionManagement && !isCreatingCase && React.createElement(SessionRestore, { routeProps: props.routeProps }),
46
+ " ",
47
47
  React.createElement(AsideResults, null),
48
+ canShowFileRecommendationSectionsWidget && React.createElement(InsightsResults, { isDisplayOnMain: true }),
49
+ React.createElement(ClusterRecommendations, { showClusterRecommendationsList: canShowClusterIdReportWidget }),
50
+ canUseSessionManagement && !isCreatingCase && React.createElement(SessionRestore, { routeProps: props.routeProps }),
48
51
  canShowFileUploadWidget() && React.createElement(FileDiag, null),
49
52
  React.createElement(AlertToastWrapper, { submitCaseAndNavigate: props.submitCaseAndNavigate }),
50
53
  React.createElement(CaseSolutions, { caseNumber: caseNumber, isSecureSupportAccount: isSecureSupportAccount }))));
@@ -1 +1 @@
1
- {"version":3,"file":"WizardLayout.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardLayout.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAkBvG,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,eA+JzC"}
1
+ {"version":3,"file":"WizardLayout.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardLayout.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAkBvG,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,eAoKzC"}
@@ -48,9 +48,11 @@ export function WizardLayout(props) {
48
48
  RouteUtils.updateQueryParams(props.routeProps, newParams);
49
49
  };
50
50
  const checkForConfirmationModalsOnReview = () => {
51
- var _a;
51
+ var _a, _b;
52
+ if (((_a = caseState === null || caseState === void 0 ? void 0 : caseState.caseDetails) === null || _a === void 0 ? void 0 : _a.caseType) === PreviousCaseTypes.FEATURE_ENHANCEMENT)
53
+ return false;
52
54
  let isModalPresent = false;
53
- if (((_a = caseState === null || caseState === void 0 ? void 0 : caseState.caseDetails) === null || _a === void 0 ? void 0 : _a.product) === 'Red Hat OpenShift Cluster Manager' &&
55
+ if (((_b = caseState === null || caseState === void 0 ? void 0 : caseState.caseDetails) === null || _b === void 0 ? void 0 : _b.product) === 'Red Hat OpenShift Cluster Manager' &&
54
56
  !viewedConfirmationModalsList.current.includes(PreCaseConfirmationModalsEnum.ROCM_MODAL)) {
55
57
  setConfirmationModalType(PreCaseConfirmationModalsEnum.ROCM_MODAL);
56
58
  viewedConfirmationModalsList.current.push(PreCaseConfirmationModalsEnum.ROCM_MODAL);
@@ -118,7 +120,7 @@ export function WizardLayout(props) {
118
120
  setConfirmationModalType(null);
119
121
  };
120
122
  return (React.createElement(React.Fragment, null,
121
- React.createElement(PreCaseConfirmationModals, { onModalClose: onModalClose, confirmationModalType: confirmationModalType, onConfirm: () => submitCaseAndNavigate(caseState.caseCreationError) }),
123
+ activeSection !== AppRouteSections.DESCRIBE_IDEA && (React.createElement(PreCaseConfirmationModals, { onModalClose: onModalClose, confirmationModalType: confirmationModalType, onConfirm: () => submitCaseAndNavigate(caseState.caseCreationError) })),
122
124
  activeSection !== AppRouteSections.SUBMIT_CASE && (React.createElement(WizardProgress, { routeProps: props.routeProps, onNext: onNext })),
123
125
  React.createElement(WizardMain, { routeProps: props.routeProps }),
124
126
  React.createElement(WizardNavigation, { routeProps: props.routeProps, onNext: onNext }),
@@ -1,6 +1,5 @@
1
1
  import 'react-bootstrap-typeahead/css/Typeahead.css';
2
2
  import '../../css/app.css';
3
- import '../../css/feedbackForm.css';
4
3
  import '../../css/pagination.css';
5
4
  import '../../css/productSelector.css';
6
5
  import '../../css/results.css';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/index.tsx"],"names":[],"mappings":"AAAA,OAAO,6CAA6C,CAAC;AACrD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,4BAA4B,CAAC;AACpC,OAAO,0BAA0B,CAAC;AAClC,OAAO,+BAA+B,CAAC;AACvC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,2CAA2C,CAAC;AAKnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAIpF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,SAAS,EAAE,GAAG,CAAC;QACf,oBAAoB,EAAE,GAAG,CAAC;QAC1B,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,OAAA,KAAK,GAAG,KAAK,GAAG,CAAC;QAC9E,MAAM,EAAE,GAAG,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC;QACX,eAAe,EAAE,GAAG,CAAC;QACrB,aAAa,EAAE;YACX,cAAc,EAAE,MAAM,CAAC;YACvB,OAAO,EAAE,MAAM,CAAC;SACnB,CAAC;KACL;IAED,UAAU,QAAQ;QACd,YAAY,EAAE,GAAG,CAAC;KACrB;CACJ;AAED,eAAO,MAAM,YAAY,UAAW,MAAM,gBA4BzC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/index.tsx"],"names":[],"mappings":"AAAA,OAAO,6CAA6C,CAAC;AACrD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,0BAA0B,CAAC;AAClC,OAAO,+BAA+B,CAAC;AACvC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,2CAA2C,CAAC;AAKnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAIpF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,SAAS,EAAE,GAAG,CAAC;QACf,oBAAoB,EAAE,GAAG,CAAC;QAC1B,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,OAAA,KAAK,GAAG,KAAK,GAAG,CAAC;QAC9E,MAAM,EAAE,GAAG,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC;QACX,eAAe,EAAE,GAAG,CAAC;QACrB,aAAa,EAAE;YACX,cAAc,EAAE,MAAM,CAAC;YACvB,OAAO,EAAE,MAAM,CAAC;SACnB,CAAC;KACL;IAED,UAAU,QAAQ;QACd,YAAY,EAAE,GAAG,CAAC;KACrB;CACJ;AAED,eAAO,MAAM,YAAY,UAAW,MAAM,gBA4BzC,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import 'react-bootstrap-typeahead/css/Typeahead.css';
2
2
  import '../../css/app.css';
3
- import '../../css/feedbackForm.css';
4
3
  import '../../css/pagination.css';
5
4
  import '../../css/productSelector.css';
6
5
  import '../../css/results.css';
@@ -2,7 +2,6 @@
2
2
  ============================================ */
3
3
 
4
4
  /* ALL RECOMMENDATIONS */
5
-
6
5
  .result .result-header .se-recommended {
7
6
  font-weight: 600;
8
7
  word-wrap: break-word;
@@ -41,103 +40,99 @@
41
40
  word-break: break-all;
42
41
  }
43
42
 
44
- #recommendations .recommendation-list {
43
+ .recommendation-list {
45
44
  margin-top: 2rem;
46
45
  }
47
46
 
48
- #recommendations .recommendation-list .result {
47
+ .recommendation-list .result {
49
48
  margin-bottom: 1.75rem;
50
49
  }
51
50
 
52
- #recommendations .recommendation-list .result:last-child {
51
+ .recommendation-list .result:last-child {
53
52
  margin-bottom: 0;
54
53
  }
55
54
 
56
- #recommendations .recommendation-list .result .result-header,
55
+ .recommendation-list .result .result-header,
57
56
  .card-body .result .result-header {
58
57
  width: 100%;
59
58
  margin-bottom: 0;
60
59
  font-weight: 600;
61
60
  }
62
61
 
63
- #recommendations .recommendation-list .result .result-header .se-recommended {
62
+ .recommendation-list .result .result-header .se-recommended {
64
63
  font-size: 1rem;
65
64
  }
66
65
 
67
- #recommendations .recommendation-list .result .result-header .header-meta > * {
66
+ .recommendation-list .result .result-header .header-meta > * {
68
67
  margin-right: 0.5%;
69
68
  font-size: 14px;
70
69
  font-weight: 600;
71
70
  color: rgb(118, 118, 118);
72
71
  }
73
72
 
74
- #recommendations .recommendation-list .result .result-header .header-meta .status-verified,
75
- #recommendations .recommendation-list .result .result-header .header-meta .solution-verified {
73
+ .recommendation-list .result .result-header .header-meta .status-verified,
74
+ .recommendation-list .result .result-header .header-meta .solution-verified {
76
75
  color: #486b00;
77
76
  font-size: 13px;
78
77
  text-transform: uppercase;
79
78
  }
80
79
 
81
- #recommendations .recommendation-list .result .result-header .header-meta .highly-recommended-doc {
80
+ .recommendation-list .result .result-header .header-meta .highly-recommended-doc {
82
81
  color: #486b00;
83
82
  font-size: 13px;
84
83
  text-transform: uppercase;
85
84
  }
86
-
87
- #recommendations .recommendation-list .result .issue-wrap {
85
+ .recommendation-list .result .issue-wrap {
88
86
  max-height: 150px;
89
87
  width: 100%;
90
88
  }
91
89
 
92
- #recommendations .recommendation-list .result .issue-wrap *,
93
- #recommendations .recommendation-list .result .issue-wrap * > * {
90
+ .recommendation-list .result .issue-wrap *,
91
+ .recommendation-list .result .issue-wrap * > * {
94
92
  margin-bottom: 0.5em;
95
93
  }
96
94
 
97
- #recommendations .recommendation-list .result .issue-wrap pre {
95
+ .recommendation-list .result .issue-wrap pre {
98
96
  margin: 1.1em 0;
99
97
  }
100
98
 
101
- #recommendations .recommendation-list .result .list-flushleft {
99
+ .recommendation-list .result .list-flushleft {
102
100
  padding-left: 1.4rem;
103
101
  margin-bottom: 0;
104
102
  }
105
103
 
106
104
  /* MAIN RECOMMENDATIONS - file diag */
107
- #recommendations .card-support {
108
- margin-bottom: 2rem !important;
109
- }
110
105
 
111
- #recommendations .insight-results-list {
106
+ .insight-results-list {
112
107
  margin-bottom: 0;
113
108
  }
114
109
 
115
- #recommendations .insight-results-list .result {
110
+ .insight-results-list .result {
116
111
  margin-bottom: 1rem;
117
112
  }
118
113
 
119
- #recommendations .insight-results-list .result:last-child {
114
+ .insight-results-list .result:last-child {
120
115
  margin-bottom: 0;
121
116
  }
122
117
 
123
- #recommendations .card-body .result .result-header .header-meta {
118
+ .card-body .result .result-header .header-meta {
124
119
  display: none;
125
120
  }
126
121
 
127
- #recommendations .card-body .result .result-header .se-recommended {
122
+ .card-body .result .result-header .se-recommended {
128
123
  font-size: 15px;
129
124
  }
130
125
 
131
- #recommendations .card-body .result .result-body {
126
+ .card-body .result .result-body {
132
127
  margin-bottom: 0;
133
128
  font-size: 14px;
134
129
  }
135
130
 
136
- #recommendations .card-body .result:last-of-type {
131
+ .card-body .result:last-of-type {
137
132
  margin-bottom: 0 !important;
138
133
  }
139
134
 
140
- #recommendations .card-body .result .btn-incident-info {
135
+ .card-body .result .btn-incident-info {
141
136
  font-size: 13px;
142
137
  }
143
138
 
@@ -15,6 +15,7 @@ export declare const getOrtForSLAAndSeverity: (slaProcessId: string, severity: s
15
15
  export declare const getSeverityDescription: (severity: string) => string;
16
16
  export declare const isClusterIDValid: (caseState: any, allProducts: any) => boolean;
17
17
  export declare const isCaseStateValid: (caseState: ICaseState, loggedInUserJwtToken: Partial<IPortalJwtToken>) => boolean;
18
+ export declare const isIdeaCaseStateValid: (caseState: ICaseState, loggedInUserJwtToken: Partial<IPortalJwtToken>) => boolean;
18
19
  export declare const isCaseManagementStateValid: (caseState: ICaseState, loggedInUserJwtToken: Partial<IPortalJwtToken>) => boolean;
19
20
  export declare const isCaseInformationSectionValid: (caseState: ICaseState, loggedInUserJwtToken: Partial<IPortalJwtToken>) => boolean;
20
21
  export declare const createCasePayload: (caseState: ICaseState, sessionItem?: ISessionItem, isCaseCreate?: boolean) => Partial<ICasePayload>;
@@ -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;AAkB3D,OAAO,EAUH,UAAU,EAgBb,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,KACvB,MAuBF,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,+CAmC5B,CAAC;AAIF,eAAO,MAAM,gBAAgB,cAAe,UAAU,wBAAwB,QAAQ,eAAe,CAAC,KAAG,OA6BxG,CAAC;AAEF,eAAO,MAAM,0BAA0B,cACxB,UAAU,wBACC,QAAQ,eAAe,CAAC,KAC/C,OAiBF,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,CAuEtB,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,CA+BtB,CAAC;AACF,eAAO,MAAM,yBAAyB,gBACrB,QAAQ,YAAY,CAAC,gCACJ,QAAQ,EAAE,KACzC,eA2CF,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;AAkB3D,OAAO,EAUH,UAAU,EAgBb,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,KACvB,MAuBF,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,+CAmC5B,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,OAiBF,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,CAuEtB,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,CA+BtB,CAAC;AACF,eAAO,MAAM,yBAAyB,gBACrB,QAAQ,YAAY,CAAC,gCACJ,QAAQ,EAAE,KACzC,eA2CF,CAAC"}
@@ -154,6 +154,29 @@ export const isCaseStateValid = (caseState, loggedInUserJwtToken) => {
154
154
  : true) &&
155
155
  canManageCase(loggedInUserJwtToken));
156
156
  };
157
+ export const isIdeaCaseStateValid = (caseState, loggedInUserJwtToken) => {
158
+ const case_details = caseState.caseDetails;
159
+ return (!isEmpty(case_details.issue) &&
160
+ isEmpty(case_details.caseNumber) &&
161
+ !caseState.hasLargeCaseDescription &&
162
+ !isEmpty(case_details.product) &&
163
+ !isEmpty(case_details.version) &&
164
+ !isEmpty(case_details.summary) &&
165
+ case_details.summary.length <= SUMMARY_LENGTH_LIMIT &&
166
+ !isEmpty(case_details.description) &&
167
+ case_details.description.length <= DESCRIPTION_LENGTH_LIMIT &&
168
+ !isEmpty(case_details.timeFramesAndUrgency) &&
169
+ (!isEmpty(case_details.alternateId) ? case_details.alternateId.length <= CASE_REFERENCE_NUMBER_LIMIT : true) &&
170
+ !isEmpty(case_details.caseType) &&
171
+ !isEmpty(case_details.severity) &&
172
+ !isEmpty(case_details.accountNumberRef) &&
173
+ !isEmpty(case_details.contactSSOName) &&
174
+ case_details.phone.length <= PHONE_LIMIT &&
175
+ (caseState.selectedAccountDetails.data.requireCGroupOnCreate
176
+ ? !isEmpty(case_details.groupNumber) && case_details.groupNumber !== '-1'
177
+ : true) &&
178
+ canManageCase(loggedInUserJwtToken));
179
+ };
157
180
  export const isCaseManagementStateValid = (caseState, loggedInUserJwtToken) => {
158
181
  const case_details = caseState.caseDetails;
159
182
  return (isEmpty(case_details.caseNumber) &&
@@ -16,14 +16,14 @@ export declare enum AppRouteSections {
16
16
  DESCRIBE_IDEA = "describe-idea",
17
17
  MANAGEMENT = "management",
18
18
  REVIEW = "review",
19
- SUBMIT_CASE = "submit-case",
20
- SUBMIT_IDEA = "submit-idea"
19
+ SUBMIT_CASE = "submit-case"
21
20
  }
22
21
  export declare const sessionRestoreCardSections: AppRouteSections[];
23
22
  export declare const hideFileUploadSidebarWidgetSections: AppRouteSections[];
24
23
  export declare const showSidebarRecommendationsSections: AppRouteSections[];
25
24
  export declare const showSideBarEARuleWidgetSections: AppRouteSections[];
26
25
  export declare const showSideBarClusterIdRuleWidgetSections: AppRouteSections[];
26
+ export declare const showSideBarFileRecommendationSections: AppRouteSections[];
27
27
  export declare const hideSideBarClusterIdRuleToast: AppRouteSections[];
28
28
  export declare const hiddengetSupportSections: AppRouteSections[];
29
29
  //# sourceMappingURL=RouteConstNTypes.d.ts.map
@@ -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;IAIrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,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,WAAW,gBAAgB;CAC9B;AAED,eAAO,MAAM,0BAA0B,oBAA6D,CAAC;AACrG,eAAO,MAAM,mCAAmC,oBAAgE,CAAC;AACjH,eAAO,MAAM,kCAAkC,oBAO9C,CAAC;AAEF,eAAO,MAAM,+BAA+B,oBAK3C,CAAC;AAEF,eAAO,MAAM,sCAAsC,oBAIlD,CAAC;AAEF,eAAO,MAAM,6BAA6B,oBAA0D,CAAC;AAErG,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,EAKtD,CAAC"}
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;IAIrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,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;CAC9B;AAED,eAAO,MAAM,0BAA0B,oBAAiC,CAAC;AACzE,eAAO,MAAM,mCAAmC,oBAAgE,CAAC;AACjH,eAAO,MAAM,kCAAkC,oBAO9C,CAAC;AAEF,eAAO,MAAM,+BAA+B,oBAK3C,CAAC;AAEF,eAAO,MAAM,sCAAsC,oBAIlD,CAAC;AAEF,eAAO,MAAM,qCAAqC,oBAAgE,CAAC;AAEnH,eAAO,MAAM,6BAA6B,oBAA0D,CAAC;AAErG,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,EAKtD,CAAC"}
@@ -8,9 +8,8 @@ export var AppRouteSections;
8
8
  AppRouteSections["MANAGEMENT"] = "management";
9
9
  AppRouteSections["REVIEW"] = "review";
10
10
  AppRouteSections["SUBMIT_CASE"] = "submit-case";
11
- AppRouteSections["SUBMIT_IDEA"] = "submit-idea";
12
11
  })(AppRouteSections || (AppRouteSections = {}));
13
- export const sessionRestoreCardSections = [AppRouteSections.GET_SUPPORT, AppRouteSections.SUMMARIZE];
12
+ export const sessionRestoreCardSections = [AppRouteSections.GET_SUPPORT];
14
13
  export const hideFileUploadSidebarWidgetSections = [AppRouteSections.GET_SUPPORT, AppRouteSections.TROUBLESHOOT];
15
14
  export const showSidebarRecommendationsSections = [
16
15
  AppRouteSections.TROUBLESHOOT,
@@ -31,6 +30,7 @@ export const showSideBarClusterIdRuleWidgetSections = [
31
30
  AppRouteSections.REVIEW,
32
31
  AppRouteSections.SUBMIT_CASE,
33
32
  ];
33
+ export const showSideBarFileRecommendationSections = [AppRouteSections.DESCRIBE_MORE, AppRouteSections.MANAGEMENT];
34
34
  export const hideSideBarClusterIdRuleToast = [AppRouteSections.REVIEW, AppRouteSections.SUBMIT_CASE];
35
35
  export const hiddengetSupportSections = [
36
36
  AppRouteSections.TROUBLESHOOT,
@@ -54,7 +54,7 @@ export const troubleshootNonTechnicalSequence = [
54
54
  AppRouteSections.TROUBLESHOOT,
55
55
  AppRouteSections.GET_SUPPORT,
56
56
  AppRouteSections.DESCRIBE_IDEA,
57
- AppRouteSections.SUBMIT_IDEA,
57
+ AppRouteSections.SUBMIT_CASE,
58
58
  ];
59
59
  const defaultRouteConfiguration = {
60
60
  title: '',
@@ -122,11 +122,11 @@ export function getAppRouteConfugurations(isCaseCreate, isIdea, product) {
122
122
  : isCaseCreate && !isIdea
123
123
  ? []
124
124
  : [AppRouteSections.TROUBLESHOOT] }),
125
- [AppRouteSections.TROUBLESHOOT]: Object.assign(Object.assign({}, defaultRouteConfiguration), { title: 'Recommendations', stepName: 'Troubleshoot', nextButtonLabel: isCaseCreate ? 'Continue' : 'Ger support', previousSection: AppRouteSections.SUMMARIZE, nextSection: isCaseCreate ? AppRouteSections.DESCRIBE_MORE : AppRouteSections.GET_SUPPORT, futureSections: isCaseCreate
125
+ [AppRouteSections.TROUBLESHOOT]: Object.assign(Object.assign({}, defaultRouteConfiguration), { title: 'Recommendations', stepName: 'Troubleshoot', nextButtonLabel: isCaseCreate ? 'Continue' : 'Get support', previousSection: AppRouteSections.SUMMARIZE, nextSection: isCaseCreate ? AppRouteSections.DESCRIBE_MORE : AppRouteSections.GET_SUPPORT, futureSections: isCaseCreate
126
126
  ? [AppRouteSections.DESCRIBE_MORE, AppRouteSections.MANAGEMENT, AppRouteSections.REVIEW]
127
127
  : [] }),
128
128
  [AppRouteSections.DESCRIBE_MORE]: Object.assign(Object.assign({}, defaultRouteConfiguration), { title: 'Case information', stepName: 'Describe more', previousSection: isCaseCreate ? AppRouteSections.TROUBLESHOOT : AppRouteSections.GET_SUPPORT, nextSection: AppRouteSections.MANAGEMENT, futureSections: [AppRouteSections.MANAGEMENT, AppRouteSections.REVIEW] }),
129
- [AppRouteSections.DESCRIBE_IDEA]: Object.assign(Object.assign({}, defaultRouteConfiguration), { title: 'Idea information', stepName: 'Describe more', nextButtonLabel: 'Submit', disableOtherSections: false, previousSection: isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.GET_SUPPORT, nextSection: isOpenshift ? null : AppRouteSections.SUBMIT_IDEA, futureSections: [], hideAside: isOpenshift ? true : false }),
129
+ [AppRouteSections.DESCRIBE_IDEA]: Object.assign(Object.assign({}, defaultRouteConfiguration), { title: 'Idea information', stepName: 'Describe more', nextButtonLabel: 'Submit', disableOtherSections: false, previousSection: isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.GET_SUPPORT, nextSection: isOpenshift ? null : AppRouteSections.SUBMIT_CASE, futureSections: [], hideAside: isOpenshift ? true : false }),
130
130
  [AppRouteSections.MANAGEMENT]: Object.assign(Object.assign({}, defaultRouteConfiguration), { title: 'Case management', stepName: 'Management', previousSection: AppRouteSections.DESCRIBE_MORE, nextSection: AppRouteSections.REVIEW, futureSections: [AppRouteSections.REVIEW] }),
131
131
  [AppRouteSections.REVIEW]: Object.assign(Object.assign({}, defaultRouteConfiguration), { title: 'Preview case', stepName: 'Review', nextButtonLabel: 'Submit', previousSection: AppRouteSections.MANAGEMENT, nextSection: AppRouteSections.SUBMIT_CASE, futureSections: [] }),
132
132
  [AppRouteSections.SUBMIT_CASE]: Object.assign(Object.assign({}, defaultRouteConfiguration), { title: 'Case has been submitted', stepName: 'Submit', disableOtherSections: true, hideAside: false, showBackToSection: false, previousSection: null, showOpenCaseButton: false, showNewIssueButton: false, backToSection: AppRouteSections.GET_SUPPORT, backToSectionLabel: 'Back to open case', nextSection: null, futureSections: [] }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/troubleshoot",
3
- "version": "1.0.47-beta.42",
3
+ "version": "1.0.47-beta.44",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -73,8 +73,8 @@
73
73
  "@patternfly/react-core": "4.264.0",
74
74
  "@progress/kendo-drawing": "^1.6.0",
75
75
  "@progress/kendo-react-pdf": "^3.12.0",
76
- "@rh-support/components": "1.2.22-beta.34",
77
- "@rh-support/react-context": "1.0.30-beta.34",
76
+ "@rh-support/components": "1.2.22-beta.44",
77
+ "@rh-support/react-context": "1.0.30-beta.44",
78
78
  "@rh-support/types": "0.2.1-beta.33",
79
79
  "@rh-support/user-permissions": "1.0.12-beta.34",
80
80
  "@rh-support/utils": "1.0.10-beta.34",
@@ -145,5 +145,5 @@
145
145
  "not ie <= 11",
146
146
  "not op_mini all"
147
147
  ],
148
- "gitHead": "b37c4636e53b0d5c128f1a61c7fd6572da07f184"
148
+ "gitHead": "4581d9e3cf98d29489f00e604fd47f54fbc5bb6d"
149
149
  }
@@ -1,92 +0,0 @@
1
- /* .pf-c-backdrop {
2
- -webkit-backdrop-filter: blur(10px);
3
- background-color: rgba(3, 3, 3, 0.619608);
4
- box-sizing: border-box;
5
- color: rgb(21, 21, 21);
6
- display: block;
7
- font-size: 16px;
8
- font-weight: normal;
9
- height: 100%;
10
- left: 0px;
11
- line-height: 24px;
12
- margin: 0px;
13
- padding: 0px;
14
- position: fixed;
15
- text-align: left;
16
- text-rendering: optimizeLegibility;
17
- top: 0px;
18
- width: 100%;
19
- z-index: 400;
20
- }
21
-
22
- .pf-l-bullseye {
23
- align-items: center;
24
- background-color: rgba(0, 0, 0, 0);
25
- box-sizing: border-box;
26
- color: rgb(21, 21, 21);
27
- display: flex;
28
- font-size: 16px;
29
- font-weight: normal;
30
- height: 886px;
31
- justify-content: center;
32
- line-height: 24px;
33
- margin: 0px;
34
- padding: 0px;
35
- text-align: left;
36
- text-rendering: optimizeLegibility;
37
- }
38
-
39
- .pf-c-modal-box {
40
- background-color: rgb(255, 255, 255);
41
- box-shadow: rgba(3, 3, 3, 0.13) 0px 3px 7px 3px, rgba(3, 3, 3, 0.12) 0px 11px 24px 16px;
42
- color: rgb(21, 21, 21);
43
- padding: 32px;
44
- position: relative;
45
- text-rendering: optimizelegibility;
46
- z-index: 500;
47
- }
48
-
49
- @media (min-width: 992px) {
50
- .pf-c-modal-box {
51
- max-width: 750px;
52
- }
53
- }
54
-
55
- .pf-c-modal-box > .pf-c-button {
56
- position: absolute;
57
- top: 27px;
58
- right: 16px;
59
- box-sizing: border-box;
60
- color: rgb(114, 118, 123);
61
- margin: 0px;
62
- padding-bottom: 6px;
63
- padding-left: 16px;
64
- padding-right: 16px;
65
- padding-top: 6px;
66
- text-align: center;
67
- text-rendering: optimizeLegibility;
68
- text-shadow: none;
69
- text-transform: none;
70
- white-space: nowrap;
71
- word-spacing: 0px;
72
- }
73
-
74
- .pf-c-modal-box .pf-c-title {
75
- margin-bottom: calc(1.5rem + 8px);
76
- font-size: 20px;
77
- }
78
-
79
- .pf-c-modal-box #feedbackForm legend {
80
- margin-bottom: .5rem;
81
- font-weight: bold;
82
- color: rgb(21, 21, 21);
83
- }
84
-
85
- .pf-c-modal-box #feedbackForm .radio-inline+.radio-inline,
86
- .pf-c-modal-box #feedbackForm .checkbox-inline+.checkbox-inline {
87
- margin-left: 1.2rem;
88
- }
89
-
90
- .pf-c-modal-box .pf-c-modal-box__footer button:first-child {
91
- margin-right: 1rem;
92
- } */