@rh-support/troubleshoot 2.6.276 → 2.6.282
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/AccountInfo/AccountSelector.d.ts.map +1 -1
- package/lib/esm/components/AccountInfo/AccountSelector.js +40 -28
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +1 -3
- package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Case.js +1 -3
- package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/index.js +4 -6
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.js +34 -38
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.js +4 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.js +59 -19
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.js +3 -5
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +5 -0
- package/lib/esm/components/CaseInformation/CaseInformation.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/CaseInformation.js +5 -7
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.js +24 -37
- package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/SupportLevel.js +55 -32
- package/lib/esm/components/CaseManagement/CaseLanguageSelector.js +2 -2
- package/lib/esm/components/CaseManagement/CaseManagement.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/CaseManagement.js +7 -4
- package/lib/esm/components/IdeaInformation/IdeaInformation.d.ts.map +1 -1
- package/lib/esm/components/IdeaInformation/IdeaInformation.js +10 -10
- package/lib/esm/components/OpenCase/SupportTypeSelectorPage.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeSelectorPage.js +2 -4
- package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts +1 -0
- package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/AllProductsSelector.js +15 -3
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.js +37 -13
- package/lib/esm/components/ProductSelector/NewProductVersionSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/NewProductVersionSelector.js +53 -19
- package/lib/esm/components/ProductSelector/ProductSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/ProductSelector.js +3 -1
- package/lib/esm/components/Review/Review.d.ts.map +1 -1
- package/lib/esm/components/Review/Review.js +10 -6
- package/lib/esm/components/SessionRestore/SessionRestore.d.ts.map +1 -1
- package/lib/esm/components/SessionRestore/SessionRestore.js +1 -6
- package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
- package/lib/esm/components/shared/useIsSectionValid.js +64 -50
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +9 -34
- package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardLayout.js +7 -6
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardNavigation.js +9 -10
- package/lib/esm/hooks/useResetCaseCreate.d.ts.map +1 -1
- package/lib/esm/hooks/useResetCaseCreate.js +11 -13
- package/lib/esm/i18n/template-de.d.ts +1 -1
- package/lib/esm/i18n/template-de.js +1 -1
- package/lib/esm/reducers/CaseConstNTypes.d.ts +0 -23
- package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/CaseConstNTypes.js +0 -5
- package/lib/esm/reducers/CaseHelpers.d.ts +1 -2
- package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
- package/lib/esm/reducers/CaseHelpers.js +2 -39
- package/lib/esm/reducers/CaseOverviewReducer.d.ts +1 -3
- package/lib/esm/reducers/CaseOverviewReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseOverviewReducer.js +5 -7
- package/lib/esm/reducers/CaseReducer.d.ts +5 -15
- package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseReducer.js +23 -60
- package/lib/esm/reducers/SessionRestoreReducer.d.ts.map +1 -1
- package/lib/esm/reducers/SessionRestoreReducer.js +4 -7
- package/package.json +6 -6
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import { Button, MenuToggle, Select, SelectList, SelectOption, Spinner, TextInputGroup, TextInputGroupMain, TextInputGroupUtilities, } from '@patternfly/react-core';
|
|
1
|
+
import { Button, Divider, MenuToggle, Select, SelectGroup, SelectList, SelectOption, Spinner, TextInputGroup, TextInputGroupMain, TextInputGroupUtilities, } from '@patternfly/react-core';
|
|
2
2
|
import TimesIcon from '@patternfly/react-icons/dist/js/icons/times-icon';
|
|
3
3
|
import { useSelectKeyboardNavigator } from '@rh-support/components';
|
|
4
|
+
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
4
5
|
import isEmpty from 'lodash/isEmpty';
|
|
5
6
|
import isEqual from 'lodash/isEqual';
|
|
6
|
-
import React, { useEffect, useRef, useState } from 'react';
|
|
7
|
-
import { useTranslation } from 'react-i18next';
|
|
7
|
+
import React, { useContext, useEffect, useRef, useState } from 'react';
|
|
8
|
+
import { Trans, useTranslation } from 'react-i18next';
|
|
8
9
|
import { useCaseSelector } from '../../context/CaseContext';
|
|
10
|
+
const isProductSupportedForCustomer = (productName, productResults) => {
|
|
11
|
+
const foundItem = productResults.filter((item) => item.name === productName)[0];
|
|
12
|
+
return foundItem ? foundItem.supportedForCustomer : false;
|
|
13
|
+
};
|
|
9
14
|
export const NewProductDropdownSelector = (props) => {
|
|
10
15
|
const { t } = useTranslation();
|
|
11
16
|
const [isOpen, setIsOpen] = useState(false);
|
|
12
17
|
const [showValidationLocal, setShowValidationLocal] = useState(props.isNextBtnClickedToShowValidationError);
|
|
18
|
+
const [isSelectedProductSupportedForCustomer, setIsSelectedProductSupportedForCustomer] = useState(true);
|
|
13
19
|
const [filteredProducts, setFilteredProducts] = useState(props.products);
|
|
14
20
|
const [shouldFilter, setShouldFilter] = useState(false);
|
|
15
21
|
const textInputRef = useRef();
|
|
@@ -17,6 +23,7 @@ export const NewProductDropdownSelector = (props) => {
|
|
|
17
23
|
product: state.caseDetails.product,
|
|
18
24
|
}), isEqual);
|
|
19
25
|
const [inputValue, setInputValue] = useState('');
|
|
26
|
+
const { globalMetadataState: { allProducts }, } = useContext(GlobalMetadataStateContext);
|
|
20
27
|
useEffect(() => {
|
|
21
28
|
setShowValidationLocal(props.isNextBtnClickedToShowValidationError);
|
|
22
29
|
}, [props.isNextBtnClickedToShowValidationError]);
|
|
@@ -26,15 +33,22 @@ export const NewProductDropdownSelector = (props) => {
|
|
|
26
33
|
}
|
|
27
34
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
28
35
|
}, [product]);
|
|
36
|
+
// Update filtered products whenever input changes
|
|
29
37
|
useEffect(() => {
|
|
38
|
+
const productsToFilter = props.isCaseCreate ? props.products : allProducts.data.productsResult;
|
|
30
39
|
if (!isEmpty(inputValue === null || inputValue === void 0 ? void 0 : inputValue.trim())) {
|
|
31
|
-
const filtered =
|
|
40
|
+
const filtered = productsToFilter.filter((p) => { var _a; return (_a = p.name) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(inputValue.toLowerCase()); });
|
|
32
41
|
setFilteredProducts(filtered);
|
|
33
42
|
}
|
|
34
43
|
else {
|
|
35
|
-
setFilteredProducts(
|
|
44
|
+
setFilteredProducts(productsToFilter);
|
|
36
45
|
}
|
|
37
|
-
}, [inputValue, props.products]);
|
|
46
|
+
}, [inputValue, props.products, props.isCaseCreate, allProducts.data.productsResult]);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
product &&
|
|
49
|
+
props.isOnSummaryPage &&
|
|
50
|
+
setIsSelectedProductSupportedForCustomer(isProductSupportedForCustomer(product, allProducts.data.productsResult));
|
|
51
|
+
}, [allProducts.data.productsResult, product, props.isOnSummaryPage]);
|
|
38
52
|
const onToggleClick = () => {
|
|
39
53
|
var _a;
|
|
40
54
|
setIsOpen(!isOpen);
|
|
@@ -69,12 +83,14 @@ export const NewProductDropdownSelector = (props) => {
|
|
|
69
83
|
setIsOpen(false);
|
|
70
84
|
},
|
|
71
85
|
});
|
|
72
|
-
const
|
|
73
|
-
const productsToShow = shouldFilter ? filteredProducts :
|
|
74
|
-
return productsToShow.length > 0 ? (React.createElement(React.Fragment, null,
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
86
|
+
const createProductGroup = (products, label, type, shouldFilter = false) => {
|
|
87
|
+
const productsToShow = shouldFilter ? filteredProducts : products;
|
|
88
|
+
return productsToShow.length > 0 ? (React.createElement(React.Fragment, null,
|
|
89
|
+
!shouldFilter && (React.createElement(SelectGroup, { label: label, key: type, value: '', className: "product-selector-group", children: '' })),
|
|
90
|
+
productsToShow.map((prod, index) => {
|
|
91
|
+
var _a;
|
|
92
|
+
return (React.createElement(SelectOption, { key: `${type}-${index}`, value: prod, isFocused: focusedItemIndex === index, className: "pf-v6-c-select__menu-wrapper", "data-tracking-id": `${(_a = prod.name) === null || _a === void 0 ? void 0 : _a.replace(/\s+/g, '')}-${type}-dropdown`, isSelected: prod.name === product }, prod.name));
|
|
93
|
+
}))) : (React.createElement(SelectOption, { key: '', value: '', className: "pf-v6-c-select__menu-wrapper", isDisabled: true }, "No Results Found"));
|
|
78
94
|
};
|
|
79
95
|
const toggle = (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, variant: "typeahead", onClick: onToggleClick, isExpanded: isOpen, isFullWidth: true, isDisabled: props.isLoading, status: isEmpty(inputValue) && showValidationLocal ? 'danger' : undefined },
|
|
80
96
|
React.createElement(TextInputGroup, { isPlain: true },
|
|
@@ -82,8 +98,16 @@ export const NewProductDropdownSelector = (props) => {
|
|
|
82
98
|
props.isLoading ? (React.createElement(TextInputGroupUtilities, null,
|
|
83
99
|
React.createElement(Spinner, { size: "md" }))) : (React.createElement(TextInputGroupUtilities, Object.assign({}, (!inputValue ? { style: { display: 'none' } } : {})),
|
|
84
100
|
React.createElement(Button, { icon: React.createElement(TimesIcon, { "aria-hidden": true }), variant: "plain", onClick: onClear, "aria-label": "Clear input value" }))))));
|
|
101
|
+
const topProducts = allProducts.data.topProducts.filter((p) => p.isEntitledProduct).slice(0, 3);
|
|
85
102
|
return (React.createElement("div", null,
|
|
86
103
|
React.createElement(Select, { id: "product-selector", isOpen: isOpen, onSelect: (e, selection) => onSelect(selection), onOpenChange: (isOpen) => setIsOpen(isOpen), toggle: toggle, selected: product, shouldFocusFirstItemOnOpen: false, isScrollable: true, "data-tracking-id": "get-support-product-dropdown-selector" },
|
|
87
|
-
React.createElement(SelectList, { id: "product-selector-listbox" },
|
|
104
|
+
React.createElement(SelectList, { id: "product-selector-listbox" },
|
|
105
|
+
!shouldFilter && createProductGroup(topProducts, t('Top products'), 'topProduct'),
|
|
106
|
+
!shouldFilter && React.createElement(Divider, null),
|
|
107
|
+
createProductGroup(props.isCaseCreate ? props.products : allProducts.data.productsResult, t('All products'), 'product', shouldFilter))),
|
|
108
|
+
!props.isLoading && !isSelectedProductSupportedForCustomer && (React.createElement("div", { className: "pf-v6-u-ml-xs pf-v6-u-mt-sm form-instructions" },
|
|
109
|
+
React.createElement(Trans, null, "Red Hat must confirm your subscription status before providing support."),
|
|
110
|
+
React.createElement("br", null),
|
|
111
|
+
React.createElement(Trans, null, "We'll contact you if we have any questions.")))));
|
|
88
112
|
};
|
|
89
113
|
export default NewProductDropdownSelector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewProductVersionSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/NewProductVersionSelector.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"NewProductVersionSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/NewProductVersionSelector.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAM/D,UAAU,MAAM;IACZ,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,qCAAqC,EAAE,OAAO,CAAC;CAClD;AAED,eAAO,MAAM,yBAAyB,GAAI,OAAO,MAAM,sBAmItD,CAAC"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import { useApolloClient } from '@apollo/client/react';
|
|
2
1
|
import { SingleSelectDropdown } from '@rh-support/components';
|
|
3
2
|
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
3
|
+
import { getUniqueSortedVersions } from '@rh-support/utils';
|
|
4
4
|
import isEmpty from 'lodash/isEmpty';
|
|
5
5
|
import isEqual from 'lodash/isEqual';
|
|
6
6
|
import React, { useContext, useEffect, useState } from 'react';
|
|
7
7
|
import { useTranslation } from 'react-i18next';
|
|
8
8
|
import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
|
|
9
|
-
import { getVersionsDetails
|
|
9
|
+
import { getVersionsDetails } from '../../reducers/CaseReducer';
|
|
10
10
|
import { getProductObj } from '../shared/utils';
|
|
11
11
|
export const NewProductVersionSelector = (props) => {
|
|
12
12
|
const { t } = useTranslation();
|
|
13
|
+
const [selectVersionOptions, setSelectVersionOptions] = useState([]);
|
|
13
14
|
const [showValidationLocal, setShowValidationLocal] = useState(props.isNextBtnClickedToShowValidationError);
|
|
15
|
+
const [isSEProductApiIsDown, setIsSEProductApiIsDown] = useState(false);
|
|
14
16
|
const caseDispatch = useCaseDispatch();
|
|
15
|
-
const apolloClient = useApolloClient();
|
|
16
17
|
const { versionsDetails, product, version } = useCaseSelector((state) => ({
|
|
17
18
|
product: state.caseDetails.product,
|
|
18
19
|
version: state.caseDetails.version,
|
|
@@ -23,43 +24,76 @@ export const NewProductVersionSelector = (props) => {
|
|
|
23
24
|
setShowValidationLocal(props.isNextBtnClickedToShowValidationError);
|
|
24
25
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
25
26
|
}, [props.isNextBtnClickedToShowValidationError]);
|
|
27
|
+
// when user selects a product, we need to fetch versions
|
|
26
28
|
useEffect(() => {
|
|
27
29
|
if (isEmpty(product))
|
|
28
30
|
return;
|
|
29
31
|
const productObj = getProductObj(allProducts.data.productsResult, product);
|
|
30
|
-
if (productObj.
|
|
31
|
-
|
|
32
|
+
if (productObj.versions) {
|
|
33
|
+
const productVersions = productObj.hasComponentsInsteadOfVersions
|
|
34
|
+
? productObj.versions.sort()
|
|
35
|
+
: productObj.versions;
|
|
36
|
+
// if versions array has one value set that value as selected
|
|
37
|
+
if (productVersions.length === 1) {
|
|
38
|
+
props.onVersionChange(productVersions[0]);
|
|
39
|
+
}
|
|
40
|
+
setSelectVersionOptions(productObj.versions);
|
|
32
41
|
}
|
|
42
|
+
else {
|
|
43
|
+
setIsSEProductApiIsDown(true);
|
|
44
|
+
}
|
|
45
|
+
const getVersions = () => getVersionsDetails(caseDispatch, product);
|
|
46
|
+
// call sfdc version api version flags that is used in severity and submit components
|
|
47
|
+
getVersions();
|
|
33
48
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34
49
|
}, [product]);
|
|
35
50
|
useEffect(() => {
|
|
36
|
-
|
|
37
|
-
|
|
51
|
+
if (!product)
|
|
52
|
+
return;
|
|
53
|
+
const productObj = getProductObj(allProducts.data.productsResult, product);
|
|
54
|
+
if (productObj.versions) {
|
|
55
|
+
const productVersions = productObj.hasComponentsInsteadOfVersions
|
|
56
|
+
? productObj.versions.sort()
|
|
57
|
+
: productObj.versions;
|
|
58
|
+
setSelectVersionOptions(productVersions);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
setIsSEProductApiIsDown(true);
|
|
62
|
+
}
|
|
63
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
64
|
+
}, [version]);
|
|
65
|
+
// observe when fetched versions are available
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
if (!isSEProductApiIsDown)
|
|
38
68
|
return;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
69
|
+
const fetchedVersions = versionsDetails.data.map(({ name }) => name);
|
|
70
|
+
// if versions array has one value set that value as selected
|
|
71
|
+
if (fetchedVersions.length === 1) {
|
|
72
|
+
props.onVersionChange(fetchedVersions[0]);
|
|
42
73
|
}
|
|
74
|
+
const productObj = getProductObj(allProducts.data.productsResult, product);
|
|
75
|
+
const sfdcVersions = getUniqueSortedVersions(fetchedVersions);
|
|
76
|
+
const productVersions = (productObj === null || productObj === void 0 ? void 0 : productObj.hasComponentsInsteadOfVersions) ? sfdcVersions.sort() : sfdcVersions;
|
|
77
|
+
setSelectVersionOptions(productVersions);
|
|
43
78
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
|
-
}, [versionsDetails.data]);
|
|
79
|
+
}, [versionsDetails.data, isSEProductApiIsDown]);
|
|
45
80
|
const onSelect = (selectedOption) => {
|
|
46
81
|
const selection = selectedOption.value;
|
|
47
82
|
if (isEqual(selection, version)) {
|
|
48
|
-
props.onVersionChange('');
|
|
49
|
-
setCaseState(caseDispatch, { selectedVersionId: undefined });
|
|
83
|
+
props.onVersionChange(''); // To unselect a version when user clicks on the same selected product version
|
|
50
84
|
return;
|
|
51
85
|
}
|
|
52
86
|
props.onVersionChange(selection);
|
|
53
|
-
const versionObj = versionsDetails.data.find((v) => v.name === selection);
|
|
54
|
-
setCaseState(caseDispatch, { selectedVersionId: versionObj === null || versionObj === void 0 ? void 0 : versionObj.id });
|
|
55
87
|
};
|
|
88
|
+
// Create selected option for SingleSelectDropdown
|
|
56
89
|
const getSelectedOption = () => ({
|
|
57
90
|
label: version || '',
|
|
58
91
|
value: version || '',
|
|
59
92
|
});
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
93
|
+
// Create options array for SingleSelectDropdown
|
|
94
|
+
const getDropdownOptions = () => selectVersionOptions.map((versionOption) => ({
|
|
95
|
+
label: versionOption,
|
|
96
|
+
value: versionOption,
|
|
63
97
|
}));
|
|
64
|
-
return (React.createElement(SingleSelectDropdown, { onSelect: onSelect, selected: getSelectedOption(), options: getDropdownOptions(), placeholder: t('Select a version'), ariaLabel: t('Select a version'), isInvalid: isEmpty(version) && showValidationLocal, isDisabled: isEmpty(product) || allProducts.isFetching, dataTrackingId: "get-support-version-dropdown-selector", isLoading: versionsDetails.isFetching }));
|
|
98
|
+
return (React.createElement(SingleSelectDropdown, { onSelect: onSelect, selected: getSelectedOption(), options: getDropdownOptions(), placeholder: t('Select a version'), ariaLabel: t('Select a version'), isInvalid: isEmpty(version) && showValidationLocal, isDisabled: isEmpty(product) || allProducts.isFetching, dataTrackingId: "get-support-version-dropdown-selector", isLoading: isSEProductApiIsDown && versionsDetails.isFetching }));
|
|
65
99
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/ProductSelector.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProductSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/ProductSelector.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAKlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACzE,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBAqGpD"}
|
|
@@ -7,6 +7,7 @@ import isEqual from 'lodash/isEqual';
|
|
|
7
7
|
import React, { useContext, useEffect, useRef } from 'react';
|
|
8
8
|
import { Trans, useTranslation } from 'react-i18next';
|
|
9
9
|
import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
|
|
10
|
+
import { RouteContext } from '../../context/RouteContext';
|
|
10
11
|
import { useAB } from '../../hooks/useAB';
|
|
11
12
|
import { useFetchCVEData } from '../../hooks/useFetchCVEData';
|
|
12
13
|
import { setCaseState } from '../../reducers/CaseReducer';
|
|
@@ -30,6 +31,7 @@ export default function ProductSelector(props) {
|
|
|
30
31
|
product: state.caseDetails.product,
|
|
31
32
|
version: state.caseDetails.version,
|
|
32
33
|
}), isEqual);
|
|
34
|
+
const { routeState: { isCaseCreate }, } = useContext(RouteContext);
|
|
33
35
|
const caseDispatch = useCaseDispatch();
|
|
34
36
|
const cveModalEnabledConfig = getConfigField(pcmConfig.data, 'isCVEModalEnabled', PCM_CONFIG_FIELD_TYPE.STRING);
|
|
35
37
|
const isCVEModalEnabled = cveModalEnabledConfig === '1';
|
|
@@ -49,7 +51,7 @@ export default function ProductSelector(props) {
|
|
|
49
51
|
const productSelectorRef = useRef(null);
|
|
50
52
|
const rederProductSelect = (React.createElement("form", null,
|
|
51
53
|
(cveRecommendation === null || cveRecommendation === void 0 ? void 0 : cveRecommendation.length) !== 0 && isCVEModalEnabled && React.createElement(CveModal, null),
|
|
52
|
-
React.createElement(AllProductsSelector, { routeProps: props.routeProps, ref: productSelectorRef, isOnSummaryPage: true, isOnGetSupportPage: props === null || props === void 0 ? void 0 : props.isOnGetSupportPage, caseCreateExperience: props.caseCreateExperience })));
|
|
54
|
+
React.createElement(AllProductsSelector, { routeProps: props.routeProps, checkEntitledProduct: isCaseCreate ? true : false, ref: productSelectorRef, isOnSummaryPage: true, isOnGetSupportPage: props === null || props === void 0 ? void 0 : props.isOnGetSupportPage, caseCreateExperience: props.caseCreateExperience })));
|
|
53
55
|
return (React.createElement(React.Fragment, null,
|
|
54
56
|
React.createElement(AlertMessage, { variant: AlertType.DANGER, className: "pf-v6-u-mt-lg", title: t('There was an error loading products.'), show: allProducts.isError }),
|
|
55
57
|
rederProductSelect,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Review.d.ts","sourceRoot":"","sources":["../../../../src/components/Review/Review.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAoBlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AACD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Review.d.ts","sourceRoot":"","sources":["../../../../src/components/Review/Review.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAoBlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AACD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,MAAM,qBAqF3C"}
|
|
@@ -8,7 +8,7 @@ import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
|
|
|
8
8
|
import { setCaseDetails } from '../../reducers/CaseReducer';
|
|
9
9
|
import { AccountSelector } from '../AccountInfo/AccountSelector';
|
|
10
10
|
import { OwnerSelector } from '../AccountInfo/OwnerSelector';
|
|
11
|
-
|
|
11
|
+
import CaseGroup from '../CaseInformation/CaseGroup';
|
|
12
12
|
import CaseType from '../CaseInformation/CaseType';
|
|
13
13
|
import { ContactPhoneNumber } from '../CaseInformation/ContactPhoneNumber';
|
|
14
14
|
import { ContactPhoneNumberAlert } from '../CaseInformation/ContactPhoneNumberAlert';
|
|
@@ -16,12 +16,12 @@ import Fts from '../CaseInformation/Fts';
|
|
|
16
16
|
import Severity from '../CaseInformation/Severity';
|
|
17
17
|
import SupportLevel from '../CaseInformation/SupportLevel';
|
|
18
18
|
import CaseLanguageSelector from '../CaseManagement/CaseLanguageSelector';
|
|
19
|
-
|
|
19
|
+
import { Cep } from '../CaseManagement/Cep';
|
|
20
20
|
import OpenReferenceNumber from '../CaseManagement/OpenReferenceNumber';
|
|
21
21
|
import { OpenShiftClusterId } from '../CaseManagement/OpenShiftClusterId';
|
|
22
22
|
import { RHAssociatesSelector } from '../CaseManagement/RHAssociatesSelector';
|
|
23
23
|
import CaseContactSelector from '../CaseManagement/SendNotifications/CaseContactSelector';
|
|
24
|
-
|
|
24
|
+
import { Hostname } from '../ImproveCase/Hostname';
|
|
25
25
|
import KtQuestions from '../ImproveCase/KtQuestions';
|
|
26
26
|
import { AllProductsSelector } from '../ProductSelector/AllProductsSelector';
|
|
27
27
|
export default function Review(props) {
|
|
@@ -50,8 +50,9 @@ export default function Review(props) {
|
|
|
50
50
|
React.createElement("form", { className: "review-form card card-light push-bottom" },
|
|
51
51
|
React.createElement(AccountSelector, null),
|
|
52
52
|
React.createElement(OwnerSelector, null),
|
|
53
|
-
React.createElement(AllProductsSelector, { routeProps: props.routeProps, loadTCOnChange: true, showTCAfterButtonClicked: true, isOnReviewPage: true }),
|
|
53
|
+
React.createElement(AllProductsSelector, { routeProps: props.routeProps, loadTCOnChange: true, showTCAfterButtonClicked: true, checkEntitledProduct: true, isOnReviewPage: true }),
|
|
54
54
|
React.createElement(OpenShiftClusterId, null),
|
|
55
|
+
caseType !== PreviousCaseTypes.FEATURE_ENHANCEMENT && React.createElement(Hostname, null),
|
|
55
56
|
React.createElement(KtQuestions, { inlineEditable: true, hideSaveCancel: true, onlyShowKT4: caseType === PreviousCaseTypes.FEATURE_ENHANCEMENT }),
|
|
56
57
|
React.createElement(CaseType, null),
|
|
57
58
|
React.createElement(SupportLevel, null),
|
|
@@ -64,8 +65,11 @@ export default function Review(props) {
|
|
|
64
65
|
React.createElement(Fts, { inlineEditable: true, initialIsEditing: isEmpty(contactInfo24x7), hideSaveCancel: true }),
|
|
65
66
|
React.createElement(Grid, { hasGutter: true },
|
|
66
67
|
React.createElement(GridItem, { span: 12, xl2: 6, className: "pf-v6-u-mb-xs" },
|
|
67
|
-
React.createElement(CaseLanguageSelector, null))
|
|
68
|
+
React.createElement(CaseLanguageSelector, null)),
|
|
69
|
+
React.createElement(GridItem, { span: 12, xl2: 6, className: "pf-v6-u-mb-xs" },
|
|
70
|
+
React.createElement(CaseGroup, null))),
|
|
68
71
|
canSeeEmailNotifications && React.createElement(CaseContactSelector, null),
|
|
69
72
|
React.createElement(RHAssociatesSelector, null),
|
|
70
|
-
React.createElement(OpenReferenceNumber, { inlineEditable: false, hideSaveCancel: true })
|
|
73
|
+
React.createElement(OpenReferenceNumber, { inlineEditable: false, hideSaveCancel: true }),
|
|
74
|
+
React.createElement(Cep, null))));
|
|
71
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionRestore.d.ts","sourceRoot":"","sources":["../../../../src/components/SessionRestore/SessionRestore.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SessionRestore.d.ts","sourceRoot":"","sources":["../../../../src/components/SessionRestore/SessionRestore.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgC,YAAY,EAAE,MAAM,qDAAqD,CAAC;AAQjH,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,OAAO,EAGH,eAAe,EAElB,MAAM,iCAAiC,CAAC;AAmBzC,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,eAAO,MAAM,6BAA6B,GAAI,aAAa,YAAY,GAAG,SAAS,EAAE,uBAAuB,MAAM,YAKjH,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,qBA8W3C"}
|
|
@@ -8,7 +8,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
11
|
-
import { useApolloClient } from '@apollo/client/react';
|
|
12
11
|
import { pcm } from '@cee-eng/hydrajs';
|
|
13
12
|
import { useDebounce, useDeepCompareDebounce, usePrevious } from '@rh-support/components';
|
|
14
13
|
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
@@ -44,7 +43,6 @@ export const isSessionFromCurrentAuthCycle = (sessionItem, currentLoginStartTime
|
|
|
44
43
|
};
|
|
45
44
|
export function SessionRestore(props) {
|
|
46
45
|
var _a;
|
|
47
|
-
const apolloClient = useApolloClient();
|
|
48
46
|
const sessionRestoreDispatch = useContext(SessionRestoreDispatchContext);
|
|
49
47
|
const dispatchToAttachmentReducer = useContext(AttachmentDispatchContext);
|
|
50
48
|
const { sessionRestore } = useContext(SessionRestoreStateContext);
|
|
@@ -128,9 +126,6 @@ export function SessionRestore(props) {
|
|
|
128
126
|
}
|
|
129
127
|
else if (isEmpty(relevantSession) && !isEmpty(currentUrlSeSessionId)) {
|
|
130
128
|
updateActiveSessionId(sessionRestoreDispatch, undefined);
|
|
131
|
-
const currentParams = RouteUtils.getQueryParams(props.routeProps);
|
|
132
|
-
delete currentParams.seSessionId;
|
|
133
|
-
RouteUtils.updateQueryParams(props.routeProps, currentParams, true);
|
|
134
129
|
}
|
|
135
130
|
});
|
|
136
131
|
setSession();
|
|
@@ -244,7 +239,7 @@ export function SessionRestore(props) {
|
|
|
244
239
|
const reg = new RegExp('Cluster Name: (.*) ');
|
|
245
240
|
const v3ClusterName = reg.exec(sessionDetails.description) ? reg.exec(sessionDetails.description)[1] : '';
|
|
246
241
|
setCaseState(caseDispatch, { v3ClusterName });
|
|
247
|
-
yield updateCaseWithSession(caseDispatch, sessionItem, loggedInUserRights.data.getAccountNumber(), loggedInUserRights.data.getHydraContactFromLoggedInUser(), loggedInUsersAccount.data
|
|
242
|
+
yield updateCaseWithSession(caseDispatch, sessionItem, loggedInUserRights.data.getAccountNumber(), loggedInUserRights.data.getHydraContactFromLoggedInUser(), loggedInUsersAccount.data);
|
|
248
243
|
if (!isAISureSession(sessionItem)) {
|
|
249
244
|
restoreFilesFromSession(dispatchToAttachmentReducer, sessionItem.session.id);
|
|
250
245
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsSectionValid.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/useIsSectionValid.tsx"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"useIsSectionValid.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/useIsSectionValid.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAuB/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAMnE,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,gBAAgB;;;;;EAkR9D"}
|
|
@@ -1,23 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { contacts } from '@cee-eng/hydrajs';
|
|
2
11
|
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
3
|
-
|
|
12
|
+
import find from 'lodash/find';
|
|
4
13
|
import isEmpty from 'lodash/isEmpty';
|
|
5
14
|
import isEqual from 'lodash/isEqual';
|
|
6
|
-
import React, { useContext } from 'react';
|
|
7
|
-
// import React, { useContext, useEffect, useState } from 'react';
|
|
15
|
+
import React, { useContext, useEffect, useState } from 'react';
|
|
8
16
|
import { Trans } from 'react-i18next';
|
|
9
17
|
import { useCaseSelector } from '../../context/CaseContext';
|
|
10
|
-
import { RouteContext } from '../../context/RouteContext';
|
|
11
|
-
// import { RouteContext, useRouteDispatchContext } from '../../context/RouteContext';
|
|
18
|
+
import { RouteContext, useRouteDispatchContext } from '../../context/RouteContext';
|
|
12
19
|
import { TCStateContext } from '../../context/TopContentContext';
|
|
13
20
|
import { useAB } from '../../hooks/useAB';
|
|
14
21
|
import { CASE_DEATILS_ENVIRONMENT_LIMIT, CASE_REFERENCE_NUMBER_LIMIT, CONTACT_INFO_24X7_LIMIT, HOSTNAME_LENGTH_LIMIT, ISSUE_SUMMARY_LENGTH_LIMIT, KTQUESTION_MAX_LIMIT, TITLE_SUMMARY_LENGTH_LIMIT, } from '../../reducers/CaseConstNTypes';
|
|
15
22
|
import { isCaseInformationSectionValid, isCaseManagementStateValid, isCaseStateValid, isClusterIDValid, isIdeaCaseStateValid, } from '../../reducers/CaseHelpers';
|
|
16
23
|
import { AppRouteSections } from '../../reducers/RouteConstNTypes';
|
|
24
|
+
import { setNoValidEntitlement } from '../../reducers/RouteReducer';
|
|
17
25
|
import { AttachmentStateContext } from './fileUpload/reducer/AttachmentReducerContext';
|
|
18
26
|
export function useIsSectionValid(sectionName) {
|
|
27
|
+
var _a, _b;
|
|
19
28
|
const { isVariationA } = useAB();
|
|
20
|
-
const { caseState, caseType, product, version, contactSSOName, accountNumber, summary, hostname, contactInfo24x7, alternateId, selectedAccountDetails, issue, environment, timeFramesAndUrgency, periodicityOfIssue, manageSupportCases, } = useCaseSelector((state) => ({
|
|
29
|
+
const { caseState, caseType, product, version, contactSSOName, accountNumber, summary, hostname, contactInfo24x7, alternateId, selectedAccountDetails, issue, environment, timeFramesAndUrgency, periodicityOfIssue, ssoUsername, manageSupportCases, } = useCaseSelector((state) => ({
|
|
21
30
|
caseState: state,
|
|
22
31
|
caseType: state.caseDetails.caseType,
|
|
23
32
|
product: state.caseDetails.product,
|
|
@@ -33,38 +42,35 @@ export function useIsSectionValid(sectionName) {
|
|
|
33
42
|
environment: state.caseDetails.environment,
|
|
34
43
|
timeFramesAndUrgency: state.caseDetails.timeFramesAndUrgency,
|
|
35
44
|
periodicityOfIssue: state.caseDetails.periodicityOfIssue,
|
|
36
|
-
|
|
45
|
+
ssoUsername: state.selectedOwner.data.ssoUsername,
|
|
37
46
|
manageSupportCases: state.selectedOwner.data.manageSupportCases,
|
|
38
47
|
}), isEqual);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
48
|
+
const routeDispatch = useRouteDispatchContext();
|
|
49
|
+
const [isEntitlement, setIsEntitlement] = useState(null);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
const fetchContactDetails = () => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
var _a;
|
|
53
|
+
if (ssoUsername) {
|
|
54
|
+
try {
|
|
55
|
+
const response = yield contacts.getSFDCContactBySso(ssoUsername);
|
|
56
|
+
setIsEntitlement((_a = response === null || response === void 0 ? void 0 : response.isEntitled) !== null && _a !== void 0 ? _a : null);
|
|
57
|
+
setNoValidEntitlement(routeDispatch, !(response === null || response === void 0 ? void 0 : response.isEntitled));
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error('Error fetching contact details:', error);
|
|
61
|
+
setIsEntitlement(null);
|
|
62
|
+
setNoValidEntitlement(routeDispatch, null);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
fetchContactDetails();
|
|
67
|
+
}, [ssoUsername, routeDispatch]);
|
|
68
|
+
//&seSessionId=8e8960ac-680b-443e-bf67-9e13f2acd64e
|
|
59
69
|
const { routeState: { isCaseCreate }, } = useContext(RouteContext);
|
|
60
70
|
const { globalMetadataState: { allProducts, loggedInUserRights }, } = useContext(GlobalMetadataStateContext);
|
|
61
71
|
const { topContentState: { topContent }, } = useContext(TCStateContext);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
// allProducts?.data?.productsResult,
|
|
65
|
-
// (p) => p.product === caseState.caseDetails.product
|
|
66
|
-
// )?.isEntitledProduct;
|
|
67
|
-
const { routeState: { activeSection }, } = useContext(RouteContext);
|
|
72
|
+
const isEntitledProduct = (_b = find((_a = allProducts === null || allProducts === void 0 ? void 0 : allProducts.data) === null || _a === void 0 ? void 0 : _a.productsResult, (p) => p.product === caseState.caseDetails.product)) === null || _b === void 0 ? void 0 : _b.isEntitledProduct;
|
|
73
|
+
const { routeState: { activeSection, isSearchIntent }, } = useContext(RouteContext);
|
|
68
74
|
const { attachmentState } = useContext(AttachmentStateContext);
|
|
69
75
|
const selectedLocalFiles = attachmentState.caseFiles.selectedLocalFiles;
|
|
70
76
|
const allowedTypesIdea = ['image/jpeg', 'image/png', 'image/jpg', 'image/gif'];
|
|
@@ -105,6 +111,8 @@ export function useIsSectionValid(sectionName) {
|
|
|
105
111
|
}
|
|
106
112
|
return (!isEmpty(product) &&
|
|
107
113
|
!isEmpty(version) &&
|
|
114
|
+
!isEmpty(accountNumber) &&
|
|
115
|
+
!isEmpty(contactSSOName) &&
|
|
108
116
|
!isEmpty(summary) &&
|
|
109
117
|
(summary === null || summary === void 0 ? void 0 : summary.length) <= TITLE_SUMMARY_LENGTH_LIMIT &&
|
|
110
118
|
!isEmpty(issue) &&
|
|
@@ -121,22 +129,23 @@ export function useIsSectionValid(sectionName) {
|
|
|
121
129
|
};
|
|
122
130
|
const isResourcesSectionValid = () => {
|
|
123
131
|
var _a;
|
|
124
|
-
//
|
|
132
|
+
// don't check for entitled product if user is on search intent flow
|
|
133
|
+
const isEntitledProductLocal = isSearchIntent ? true : isEntitledProduct;
|
|
134
|
+
// Skip cluster ID validation for Variant A
|
|
125
135
|
const clusterIdValid = isVariationA ? true : isClusterIDValid(caseState, (_a = allProducts.data) === null || _a === void 0 ? void 0 : _a.productsResult);
|
|
126
|
-
return clusterIdValid;
|
|
136
|
+
return isEntitledProductLocal && clusterIdValid;
|
|
127
137
|
};
|
|
128
138
|
const isReviewSectionValid = () => {
|
|
129
139
|
var _a;
|
|
130
|
-
return (
|
|
131
|
-
|
|
132
|
-
isCaseStateValid(caseState, loggedInUserRights) &&
|
|
140
|
+
return (isEntitledProduct &&
|
|
141
|
+
isCaseStateValid(caseState, loggedInUserRights) &&
|
|
133
142
|
isClusterIDValid(caseState, (_a = allProducts.data) === null || _a === void 0 ? void 0 : _a.productsResult) &&
|
|
134
143
|
isSummarizeSectionValid() &&
|
|
135
144
|
isAdditionalInformationSectionValidLocal());
|
|
136
145
|
};
|
|
137
146
|
const isDescribeIdeaSectionValid = () => {
|
|
138
147
|
return (isCaseManagementStateValid(caseState, loggedInUserRights) &&
|
|
139
|
-
|
|
148
|
+
isEntitledProduct &&
|
|
140
149
|
isIdeaCaseStateValid(caseState, loggedInUserRights) &&
|
|
141
150
|
checkUnallowedFiles());
|
|
142
151
|
};
|
|
@@ -176,8 +185,14 @@ export function useIsSectionValid(sectionName) {
|
|
|
176
185
|
}
|
|
177
186
|
};
|
|
178
187
|
const recommendationSectionError = () => {
|
|
179
|
-
|
|
180
|
-
|
|
188
|
+
if (!product)
|
|
189
|
+
return '';
|
|
190
|
+
const isEntitledProductLocal = isSearchIntent ? true : isEntitledProduct;
|
|
191
|
+
return !isEntitledProductLocal ? (React.createElement(Trans, { i18nKey: "i18ValidEntitlementContactCustomerService" },
|
|
192
|
+
"You need a valid entitlement to create a case.\u00A0 Please contact",
|
|
193
|
+
' ',
|
|
194
|
+
React.createElement("a", { href: "/support/contact/customerService" }, "Customer Service"),
|
|
195
|
+
" for assistance.")) : ('');
|
|
181
196
|
};
|
|
182
197
|
const getSupportSectionError = () => {
|
|
183
198
|
if (manageSupportCases === false) {
|
|
@@ -187,14 +202,13 @@ export function useIsSectionValid(sectionName) {
|
|
|
187
202
|
React.createElement("a", { href: "/support/contact/customerService" }, "Customer Service"),
|
|
188
203
|
" for assistance."));
|
|
189
204
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
// }
|
|
205
|
+
if (isEntitlement === false) {
|
|
206
|
+
return (React.createElement(Trans, { i18nKey: "i18ValidEntitlementContactCustomerService" },
|
|
207
|
+
"You need a valid entitlement to create a case.\u00A0 Please contact",
|
|
208
|
+
' ',
|
|
209
|
+
React.createElement("a", { href: "/support/contact/customerService" }, "Customer Service"),
|
|
210
|
+
" for assistance."));
|
|
211
|
+
}
|
|
198
212
|
return '';
|
|
199
213
|
};
|
|
200
214
|
const activeSectionError = (sectionNameLocal) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"AASA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAYvG,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,qBAuTtD"}
|