@rh-support/troubleshoot 2.6.87 → 2.6.89

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.
@@ -1 +1 @@
1
- {"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"AAsCA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAqBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAID,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,qBA63BnD"}
1
+ {"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"AAyCA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAuBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAID,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,qBAy+BnD"}
@@ -9,18 +9,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { escalations, publicApi } from '@cee-eng/hydrajs';
11
11
  import { Button, Form, FormGroup, FormHelperText, Grid, GridItem, HelperText, HelperTextItem, Modal, ModalBody, ModalHeader, ModalVariant, Radio, TextArea, TextInput, TimePicker, Title, ValidatedOptions, Wizard, WizardNav, WizardNavItem, WizardStep, } from '@patternfly/react-core';
12
- import { AlertMessage, AlertType, PhoneInput, SingleSelectDropdown, ToastNotification, useFetch, } from '@rh-support/components';
12
+ import { AlertMessage, AlertType, COUNTRY_DATA, getPhoneObj, PhoneInput, SingleSelectDropdown, ToastNotification, useFetch, } from '@rh-support/components';
13
13
  import { useGlobalStateContext } from '@rh-support/react-context';
14
+ import isEmpty from 'lodash/isEmpty';
14
15
  import React, { useEffect, useState } from 'react';
15
16
  import { Trans, useTranslation } from 'react-i18next';
16
17
  import { useCaseDispatch } from '../../../context/CaseContext';
17
18
  import { useCaseDetailsPageDispatchContext, useCaseDetailsPageStateContext, } from '../../../context/CaseDetailsPageContext';
18
19
  import { useCaseDiscussionTabDispatchContext, useCaseDiscussionTabStateContext, } from '../../../context/CaseDiscussionTabContext';
19
20
  import { CustomerGEOs } from '../../../enums/customerGEOs';
20
- import { ESCALATION_SUBJECT_LENGTH_LIMIT, TIMEZONE_OPTIONS, } from '../../../reducers/CaseConstNTypes';
21
+ import { ESCALATION_SUBJECT_LENGTH_LIMIT, PHONE_LIMIT, TIMEZONE_OPTIONS, } from '../../../reducers/CaseConstNTypes';
21
22
  import { fetchCaseEscalations } from '../../../reducers/CaseDetailsPageReducer';
22
23
  import { updateDiscussionStateComments } from '../../../reducers/CaseDiscussionTabReducer';
23
24
  import { checkForCaseStatusToggleOnAttachOrComment, fetchCaseDetails } from '../../../reducers/CaseReducer';
25
+ import { removeAllChars, trimAndReplacePlus } from '../../shared/utils';
24
26
  const customerGEOKeys = Object.keys(CustomerGEOs);
25
27
  export function RequestEscalationModal(props) {
26
28
  var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
@@ -47,10 +49,47 @@ export function RequestEscalationModal(props) {
47
49
  const [hasLargeSubject, setHasLargeSubject] = useState(false);
48
50
  const [submitButtonIsClicked, setSubmitSaveButtonIsClicked] = useState(false);
49
51
  const [isPhoneInvalid, setIsPhoneInvalid] = useState(false);
50
- const isPhoneNumberValid = (phoneNumber) => {
52
+ const isCountryCodeValid = (countryCode) => {
53
+ // Check if the country code exists in the valid country codes list
54
+ if (!countryCode)
55
+ return false;
56
+ const normalizedCode = trimAndReplacePlus(countryCode);
57
+ if (isEmpty(normalizedCode))
58
+ return false;
59
+ return COUNTRY_DATA.some((country) => country[3] === normalizedCode);
60
+ };
61
+ const isPhoneNumberInvalid = (phoneNumber, countryCode) => {
62
+ var _a;
63
+ // Check if country code is given but phone number is empty/only has country code
64
+ return (!isEmpty(phoneNumber) &&
65
+ isEmpty((_a = removeAllChars(phoneNumber || '')) === null || _a === void 0 ? void 0 : _a.replace(trimAndReplacePlus(countryCode || ''), '')));
66
+ };
67
+ const isPhoneLineEmpty = (phoneNumber, countryCode) => {
68
+ var _a;
69
+ // Check if both country code and phone line are empty
70
+ return (isEmpty(trimAndReplacePlus(countryCode || '')) &&
71
+ isEmpty((_a = (phoneNumber || '')) === null || _a === void 0 ? void 0 : _a.replace(countryCode || '', '')));
72
+ };
73
+ const isPhoneNumberValid = (phoneNumber, countryCode) => {
51
74
  const trimmedPhone = (phoneNumber || '').trim();
52
- // Phone number should have some digits other than country code to be considered valid
53
- return trimmedPhone.length >= 5;
75
+ const phoneObject = getPhoneObj(trimmedPhone);
76
+ const fullPhone = phoneObject.countryCode + ' ' + phoneObject.phoneLine;
77
+ // Check for various invalid states
78
+ if (fullPhone.length > PHONE_LIMIT)
79
+ return false;
80
+ if (isPhoneLineEmpty(phoneNumber, countryCode))
81
+ return false;
82
+ if (isPhoneNumberInvalid(phoneNumber, countryCode))
83
+ return false;
84
+ if (isEmpty(trimAndReplacePlus(countryCode || '')))
85
+ return false;
86
+ if (!isCountryCodeValid(countryCode))
87
+ return false;
88
+ if (trimAndReplacePlus(trimmedPhone) === trimAndReplacePlus(countryCode || ''))
89
+ return false;
90
+ if (trimmedPhone.length < 5)
91
+ return false;
92
+ return true;
54
93
  };
55
94
  // Function to check if "to" time is after "from" time
56
95
  const isValidTimeRange = (fromTime, toTime) => {
@@ -88,7 +127,7 @@ export function RequestEscalationModal(props) {
88
127
  return (hasAllFields &&
89
128
  isValidTimeRange(formState.preferredTimeFrom, formState.preferredTimeTo) &&
90
129
  !isPhoneInvalid &&
91
- isPhoneNumberValid(formState.phoneNumber));
130
+ isPhoneNumberValid(formState.phoneNumber, formState.countryCode));
92
131
  }
93
132
  return hasAllFields;
94
133
  };
@@ -289,7 +328,7 @@ export function RequestEscalationModal(props) {
289
328
  // Additional validation if call options are selected
290
329
  if (formState.contactPreference === 'call-me' || formState.contactPreference === 'call-if-necessary') {
291
330
  return (baseValidation &&
292
- isPhoneNumberValid(formState.phoneNumber) &&
331
+ isPhoneNumberValid(formState.phoneNumber, formState.countryCode) &&
293
332
  !isPhoneInvalid &&
294
333
  (formState.preferredTimeFrom || '').trim().length > 0 &&
295
334
  (formState.preferredTimeTo || '').trim().length > 0 &&
@@ -413,21 +452,54 @@ export function RequestEscalationModal(props) {
413
452
  React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
414
453
  t("Case owner's phone number"),
415
454
  " "), isRequired: true, fieldId: "phone-number" },
416
- React.createElement(PhoneInput, { phoneValue: formState.phoneNumber || '', countryCode: ((_m = formState.countryCode) === null || _m === void 0 ? void 0 : _m.replace('+', '')) || '', onPhoneValueChange: (phone) => setFormState(Object.assign(Object.assign({}, formState), { phoneNumber: phone })), onCountryCodeChange: (code) => setFormState(Object.assign(Object.assign({}, formState), { countryCode: code })), validations: (submitButtonIsClicked && !isPhoneNumberValid(formState.phoneNumber)) ||
417
- isPhoneInvalid
455
+ React.createElement(PhoneInput, { phoneValue: formState.phoneNumber || '', countryCode: ((_m = formState.countryCode) === null || _m === void 0 ? void 0 : _m.replace('+', '')) || '', onPhoneValueChange: (phone) => setFormState(Object.assign(Object.assign({}, formState), { phoneNumber: phone })), onCountryCodeChange: (code) => setFormState(Object.assign(Object.assign({}, formState), { countryCode: code })), validations: (submitButtonIsClicked &&
456
+ !isPhoneNumberValid(formState.phoneNumber, formState.countryCode)) ||
457
+ isPhoneInvalid ||
458
+ (submitButtonIsClicked &&
459
+ (getPhoneObj(formState.phoneNumber || '').countryCode +
460
+ ' ' +
461
+ getPhoneObj(formState.phoneNumber || '').phoneLine).length > PHONE_LIMIT)
418
462
  ? 'error'
419
463
  : 'default', isDisabled: false, invalid: isPhoneInvalid, setInvalid: setIsPhoneInvalid }),
420
- React.createElement(FormHelperText, null,
464
+ !isPhoneInvalid &&
465
+ !((getPhoneObj(formState.phoneNumber || '').countryCode +
466
+ ' ' +
467
+ getPhoneObj(formState.phoneNumber || '').phoneLine).length > PHONE_LIMIT) &&
468
+ !(submitButtonIsClicked &&
469
+ !isPhoneNumberValid(formState.phoneNumber, formState.countryCode)) && (React.createElement(FormHelperText, null,
421
470
  React.createElement(HelperText, null,
422
- React.createElement(HelperTextItem, { variant: "default" }, t('Note: A current phone/mobile number with the country code helps us support you better. Phone number will be stored in case comments for escalation only – not used for marketing.')))),
471
+ React.createElement(HelperTextItem, { variant: "default" }, t('Note: A current phone/mobile number with the country code helps us support you better. Phone number will be stored in case comments for escalation only – not used for marketing.'))))),
472
+ isPhoneInvalid && (React.createElement(FormHelperText, null,
473
+ React.createElement(HelperText, null,
474
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Phone number can only have digits.'))))),
423
475
  submitButtonIsClicked &&
424
- !isPhoneNumberValid(formState.phoneNumber) &&
425
- !isPhoneInvalid && (React.createElement(FormHelperText, null,
476
+ (getPhoneObj(formState.phoneNumber || '').countryCode +
477
+ ' ' +
478
+ getPhoneObj(formState.phoneNumber || '').phoneLine).length > PHONE_LIMIT && (React.createElement(FormHelperText, null,
479
+ React.createElement(HelperText, null,
480
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Phone number cannot be more than {{limit}} digits.', {
481
+ limit: PHONE_LIMIT,
482
+ }))))),
483
+ submitButtonIsClicked &&
484
+ isPhoneLineEmpty(formState.phoneNumber, formState.countryCode) && (React.createElement(FormHelperText, null,
426
485
  React.createElement(HelperText, null,
427
486
  React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Phone number is required'))))),
428
- isPhoneInvalid && (React.createElement(FormHelperText, null,
487
+ submitButtonIsClicked &&
488
+ isPhoneNumberInvalid(formState.phoneNumber, formState.countryCode) &&
489
+ !isPhoneInvalid && (React.createElement(FormHelperText, null,
490
+ React.createElement(HelperText, null,
491
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Phone number cannot be empty'))))),
492
+ submitButtonIsClicked &&
493
+ !isEmpty(trimAndReplacePlus(formState.countryCode || '')) &&
494
+ !isCountryCodeValid(formState.countryCode) && (React.createElement(FormHelperText, null,
495
+ React.createElement(HelperText, null,
496
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Country code is invalid'))))),
497
+ submitButtonIsClicked &&
498
+ isEmpty(trimAndReplacePlus(formState.countryCode || '')) &&
499
+ !isPhoneLineEmpty(formState.phoneNumber, formState.countryCode) &&
500
+ !isPhoneInvalid && (React.createElement(FormHelperText, null,
429
501
  React.createElement(HelperText, null,
430
- React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Phone number can only have digits.'))))))),
502
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Phone number is not valid'))))))),
431
503
  React.createElement(GridItem, { span: 12 },
432
504
  React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
433
505
  t('Timezone'),
@@ -40,7 +40,7 @@ export function CaseInformation(props) {
40
40
  React.createElement("form", null,
41
41
  React.createElement(ProductVersion, null),
42
42
  React.createElement(CaseOpenshiftClusterId, null),
43
- React.createElement(CaseHostname, { inlineEditable: true }),
43
+ caseType !== PreviousCaseTypes.FEATURE_ENHANCEMENT && React.createElement(CaseHostname, { inlineEditable: true }),
44
44
  React.createElement("div", { className: "form-group" },
45
45
  React.createElement("label", { htmlFor: "case-description" },
46
46
  React.createElement(Trans, null, "Description")),
@@ -8,6 +8,7 @@ interface IProps {
8
8
  hideSaveCancel?: boolean;
9
9
  supportType?: string;
10
10
  isOnSummaryPage: boolean;
11
+ isOnGetSupportPage?: boolean;
11
12
  }
12
13
  declare function OpenCaseIssue(props: IProps): React.JSX.Element;
13
14
  declare namespace OpenCaseIssue {
@@ -1 +1 @@
1
- {"version":3,"file":"OpenCaseIssue.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/OpenCaseIssue.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAS/D,UAAU,MAAM;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;CAC5B;AASD,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,qBA8InC;kBA9IQ,aAAa;;;AAiJtB,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"OpenCaseIssue.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/OpenCaseIssue.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAS/D,UAAU,MAAM;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AASD,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,qBAqJnC;kBArJQ,aAAa;;;AAwJtB,eAAe,aAAa,CAAC"}
@@ -59,6 +59,8 @@ function OpenCaseIssue(props) {
59
59
  const getTitleSummaryInvalid = () => hasLargeTitleSummary || (isNextBtnClickedToShowValidationError && isSummaryEmpty);
60
60
  const getIssueSummaryInvalid = () => hasLargeIssueSummary || (isNextBtnClickedToShowValidationError && isIssueEmpty);
61
61
  const isIdea = () => supportType === PreviousCaseTypes.FEATURE_ENHANCEMENT;
62
+ const isIdeaResult = isIdea();
63
+ const shouldHideOnGetSupport = isIdeaResult && props.isOnGetSupportPage;
62
64
  useEffect(() => {
63
65
  setIsSummaryEmpty(summary ? isEmpty(summary.trim()) : true);
64
66
  setIsIssueEmpty(issue ? isEmpty(issue.trim()) : true);
@@ -66,6 +68,9 @@ function OpenCaseIssue(props) {
66
68
  issue && setHasLargeIssueSummary(issue.length > ISSUE_SUMMARY_LENGTH_LIMIT);
67
69
  // @ts-ignore
68
70
  }, [summary, issue]);
71
+ if (shouldHideOnGetSupport) {
72
+ return null;
73
+ }
69
74
  return (React.createElement(React.Fragment, null,
70
75
  React.createElement(InlineEdit, { labelProps: {
71
76
  htmlFor: isIdea() ? 'get-support-title' : 'get-support-summary',
@@ -75,7 +80,7 @@ function OpenCaseIssue(props) {
75
80
  alignItems: 'center',
76
81
  },
77
82
  }, labelContent: React.createElement(React.Fragment, null,
78
- React.createElement(Trans, null, 'Title'),
83
+ React.createElement(Trans, null, "Title"),
79
84
  ' ',
80
85
  !!props.required && (React.createElement("span", { className: "form-required", "aria-hidden": true }, "*"))), helperContent: React.createElement("div", { className: "title-summary-counter" },
81
86
  `${summary === null || summary === void 0 ? void 0 : summary.length} / ${TITLE_SUMMARY_LENGTH_LIMIT}`,
@@ -1 +1 @@
1
- {"version":3,"file":"NonOrgCaseNotifyeesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAwB,oBAAoB,EAAY,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,UAAU,MAAO,SAAQ,gBAAgB;IACrC,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC;CAC9B;AA+BD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,qBAyMxD"}
1
+ {"version":3,"file":"NonOrgCaseNotifyeesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAwB,oBAAoB,EAAY,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,UAAU,MAAO,SAAQ,gBAAgB;IACrC,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC;CAC9B;AA+BD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,qBA8NxD"}
@@ -82,13 +82,24 @@ export function NonOrgCaseNotifyeesSelector(props) {
82
82
  const { ssoName } = c, rest = __rest(c, ["ssoName"]);
83
83
  return Object.assign({ ssoUsername: ssoName }, rest);
84
84
  });
85
- (_b = props.onChange) === null || _b === void 0 ? void 0 : _b.call(props, [...mappedContacts]);
85
+ const isUsernameAlreadySelected = mappedContacts.some((contact) => props.selectedItems.some((item) => isContact(item) && item.ssoUsername === contact.ssoUsername));
86
+ if (!isUsernameAlreadySelected) {
87
+ (_b = props.onChange) === null || _b === void 0 ? void 0 : _b.call(props, [...mappedContacts]);
88
+ }
86
89
  setInputVal('');
87
90
  setNotifyeesList([...mappedContacts, { emailAddress: notificationAddress.email }]);
88
91
  }
89
92
  else {
90
93
  if (notificationAddress === null || notificationAddress === void 0 ? void 0 : notificationAddress.email) {
91
- (_c = props.onChange) === null || _c === void 0 ? void 0 : _c.call(props, [{ emailAddress: notificationAddress.email, caseNumber: '' }]);
94
+ const isEmailAlreadySelected = props.selectedItems.some((item) => {
95
+ var _a, _b;
96
+ return isCustomEmailAddress(item) &&
97
+ ((_a = item.emailAddress) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === ((_b = notificationAddress.email) === null || _b === void 0 ? void 0 : _b.toLowerCase());
98
+ });
99
+ if (!isEmailAlreadySelected) {
100
+ const updatedSelection = [{ emailAddress: notificationAddress.email, caseNumber: '' }];
101
+ (_c = props.onChange) === null || _c === void 0 ? void 0 : _c.call(props, updatedSelection);
102
+ }
92
103
  setInputVal('');
93
104
  }
94
105
  else if (contacts === null || contacts === void 0 ? void 0 : contacts.length) {
@@ -98,7 +109,10 @@ export function NonOrgCaseNotifyeesSelector(props) {
98
109
  const { ssoName } = c, rest = __rest(c, ["ssoName"]);
99
110
  return Object.assign({ ssoUsername: ssoName }, rest);
100
111
  });
101
- (_d = props.onChange) === null || _d === void 0 ? void 0 : _d.call(props, [...mappedContacts]);
112
+ const isUsernameAlreadySelected = mappedContacts.some((contact) => props.selectedItems.some((item) => isContact(item) && item.ssoUsername === contact.ssoUsername));
113
+ if (!isUsernameAlreadySelected) {
114
+ (_d = props.onChange) === null || _d === void 0 ? void 0 : _d.call(props, [...mappedContacts]);
115
+ }
102
116
  setInputVal('');
103
117
  }
104
118
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"AllProductsSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/AllProductsSelector.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMvG,UAAU,MAAM;IACZ,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAQD;;;;;;;GAOG;AACH,QAAA,MAAM,mBAAmB,4EA+KvB,CAAC;AAGH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"AllProductsSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/AllProductsSelector.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMvG,UAAU,MAAM;IACZ,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAQD;;;;;;;GAOG;AACH,QAAA,MAAM,mBAAmB,4EAoLvB,CAAC;AAGH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -104,7 +104,7 @@ const AllProductsSelector = forwardRef((props, ref) => {
104
104
  React.createElement("div", { className: "all-product-selector-dropdown" },
105
105
  React.createElement(ProductVersionDropdownSelector, { isLoading: allProducts.isFetching, products: props.checkEntitledProduct ? entitledProducts : allProducts.data.productsResult, onProductChange: onProductChange, onVersionChange: onVersionChange, ref: ref, isOnSummaryPage: props.isOnSummaryPage, loadTCOnChange: props.loadTCOnChange, isFetching: topContent.isFetching })))),
106
106
  renderOpenCaseIssue && (React.createElement("div", { className: "case-details-summary" },
107
- React.createElement(OpenCaseIssue, { inlineEditable: false, required: true, isOnSummaryPage: props.isOnSummaryPage }))),
107
+ React.createElement(OpenCaseIssue, { inlineEditable: false, required: true, isOnSummaryPage: props.isOnSummaryPage, isOnGetSupportPage: props.isOnGetSupportPage }))),
108
108
  React.createElement(AlertMessage, { isInline: true, variant: AlertType.DANGER, className: "pf-v6-u-mt-lg", title: t(`${loggedInUserRights.data.isSSOUsernameSameAsLoggedInUser(contactSSOName)
109
109
  ? 'You are'
110
110
  : 'Selected owner is'} not allowed to create case on this product.`), show: !allProducts.isFetching && props.checkEntitledProduct && !isEntitledProduct && !isEmpty(product) }),
@@ -636,6 +636,10 @@ pfe-accordion {
636
636
  z-index: 1 !important;
637
637
  }
638
638
 
639
+ #request-mgmt-escalation-modal .pf-v6-c-wizard__footer {
640
+ z-index: 0 !important;
641
+ }
642
+
639
643
  nav.pf-v6-c-wizard__nav.pf-m-expanded {
640
644
  position: absolute;
641
645
  left: 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/troubleshoot",
3
- "version": "2.6.87",
3
+ "version": "2.6.89",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -59,8 +59,8 @@
59
59
  "@progress/kendo-licensing": "1.3.5",
60
60
  "@progress/kendo-react-pdf": "^5.16.0",
61
61
  "@redux-devtools/extension": "^3.3.0",
62
- "@rh-support/components": "2.5.59",
63
- "@rh-support/react-context": "2.5.75",
62
+ "@rh-support/components": "2.5.60",
63
+ "@rh-support/react-context": "2.5.76",
64
64
  "@rh-support/types": "2.0.5",
65
65
  "@rh-support/user-permissions": "2.5.29",
66
66
  "@rh-support/utils": "2.5.26",
@@ -133,5 +133,5 @@
133
133
  "defaults and supports es6-module",
134
134
  "maintained node versions"
135
135
  ],
136
- "gitHead": "83546c59adda3b84c730c1cebaefb54c172407d4"
136
+ "gitHead": "abdf0c87f0db15a5ecf70fe31e835530ca297dbe"
137
137
  }