@rh-support/troubleshoot 2.6.17 → 2.6.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.d.ts +0 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.js +5 -31
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +34 -33
- package/lib/esm/components/CaseEditView/CaseDetailsAside.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsAside.js +1 -2
- package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.js +22 -16
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.js +19 -15
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseHostname.js +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +8 -0
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.js +8 -5
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +7 -7
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.js +1 -1
- package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts +1 -0
- package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts.map +1 -1
- package/lib/esm/components/shared/input/ContactSelectorInternal.js +6 -1
- package/lib/esm/css/case.css +12 -0
- package/lib/esm/scss/_pf-overrides.scss +5 -0
- package/package.json +4 -4
package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActiveCustomerEscalation.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActiveCustomerEscalation.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAM/D,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,wBAAwB,+EAwInC,CAAC"}
|
package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Button, ButtonVariant, Card, CardBody, CardHeader, List, ListItem, Popover } from '@patternfly/react-core';
|
|
2
2
|
import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
|
|
3
|
-
import
|
|
4
|
-
import { useCanEditCase, useGlobalStateContext } from '@rh-support/react-context';
|
|
3
|
+
import { useCanEditCase } from '@rh-support/react-context';
|
|
5
4
|
import { Can, resourceActions, resources } from '@rh-support/user-permissions';
|
|
6
5
|
import React, { forwardRef, useState } from 'react';
|
|
7
6
|
import { Trans, useTranslation } from 'react-i18next';
|
|
@@ -10,9 +9,6 @@ import { RequestEscalationModal } from './RequestEscalationModal';
|
|
|
10
9
|
export const ActiveCustomerEscalation = forwardRef((props, ref) => {
|
|
11
10
|
const { t } = useTranslation();
|
|
12
11
|
const { caseDetailsPageState: { caseEscalations }, } = useCaseDetailsPageStateContext();
|
|
13
|
-
const { globalMetadataState: { loggedInUserRights }, } = useGlobalStateContext();
|
|
14
|
-
const isExternal = loggedInUserRights.data.isExternal();
|
|
15
|
-
const isInternal = loggedInUserRights.data.isInternal();
|
|
16
12
|
const canEditCase = useCanEditCase();
|
|
17
13
|
const isCreateRMEVisible = (caseEscalations.data || []).length === 0 || caseEscalations.data.every((item) => item.status === 'Closed');
|
|
18
14
|
const commonElements = (React.createElement(React.Fragment, null,
|
|
@@ -26,18 +22,7 @@ export const ActiveCustomerEscalation = forwardRef((props, ref) => {
|
|
|
26
22
|
React.createElement("a", { href: "/support/escalation", target: "_blank", rel: "noopener noreferrer", "aria-label": t('Learn more about Red Hat support case escalation') },
|
|
27
23
|
React.createElement(InfoCircleIcon, null)))),
|
|
28
24
|
React.createElement(CardBody, null,
|
|
29
|
-
|
|
30
|
-
React.createElement("p", null,
|
|
31
|
-
React.createElement(LockIcon, null),
|
|
32
|
-
" ",
|
|
33
|
-
React.createElement("strong", null, `${t('Available to customers only')}`)),
|
|
34
|
-
React.createElement("p", null,
|
|
35
|
-
React.createElement(Trans, null,
|
|
36
|
-
"Available to customers only. When a customer submits an escalation request, it is routed to a support manager for review. Support agents can refer to the",
|
|
37
|
-
' ',
|
|
38
|
-
React.createElement("a", { href: "https://access.redhat.com/support/escalation", target: "_blank", rel: "noreferrer" }, "Escalation guidelines"),
|
|
39
|
-
"for details.")))),
|
|
40
|
-
isExternal && props.canViewACESection && (React.createElement(React.Fragment, null,
|
|
25
|
+
React.createElement(React.Fragment, null,
|
|
41
26
|
React.createElement("p", null,
|
|
42
27
|
React.createElement("strong", null, t('Red Hat associates can open an ACE escalation when')),
|
|
43
28
|
":"),
|
|
@@ -46,7 +31,7 @@ export const ActiveCustomerEscalation = forwardRef((props, ref) => {
|
|
|
46
31
|
React.createElement(ListItem, null, t('The customer thinks the case is not moving appropriately')),
|
|
47
32
|
React.createElement(ListItem, null, t('The customer wants a new resource')),
|
|
48
33
|
React.createElement(ListItem, null, t('The issue is more severe than originally thought'))),
|
|
49
|
-
React.createElement("a", { href: `/watchlist/internal/aces/new?caseNumber=${props.caseNumber}`, target: "_blank", rel: "noopener noreferrer", className: "pf-v6-c-button pf-m-tertiary", "data-tracking-id": "request-ace-trigger", "aria-label": t('Request an escalation') }, t('Request an escalation'))))))
|
|
34
|
+
React.createElement("a", { href: `/watchlist/internal/aces/new?caseNumber=${props.caseNumber}`, target: "_blank", rel: "noopener noreferrer", className: "pf-v6-c-button pf-m-tertiary", "data-tracking-id": "request-ace-trigger", "aria-label": t('Request an escalation') }, t('Request an escalation'))))));
|
|
50
35
|
const [openRequestEscalationModal, setOpenRequestEscalationModal] = useState(false);
|
|
51
36
|
const toggleModal = () => {
|
|
52
37
|
if (canEditCase.alert())
|
|
@@ -62,18 +47,7 @@ export const ActiveCustomerEscalation = forwardRef((props, ref) => {
|
|
|
62
47
|
React.createElement(Trans, null, "Learn more about escalation cases."))) },
|
|
63
48
|
React.createElement(InfoCircleIcon, { title: t('Learn more about escalation cases popover') }))))),
|
|
64
49
|
React.createElement(CardBody, null,
|
|
65
|
-
|
|
66
|
-
React.createElement("p", null,
|
|
67
|
-
React.createElement(LockIcon, null),
|
|
68
|
-
" ",
|
|
69
|
-
React.createElement("strong", null, `${t('Available to customers only')}`)),
|
|
70
|
-
React.createElement("p", null,
|
|
71
|
-
React.createElement(Trans, null,
|
|
72
|
-
"Available to customers only. When a customer submits an escalation request, it is routed to a support manager for review. Support agents can refer to the",
|
|
73
|
-
' ',
|
|
74
|
-
React.createElement("a", { href: "https://access.redhat.com/support/escalation", target: "_blank", rel: "noreferrer" }, "Escalation guidelines"),
|
|
75
|
-
"for details.")))),
|
|
76
|
-
isExternal && (React.createElement(React.Fragment, null,
|
|
50
|
+
React.createElement(React.Fragment, null,
|
|
77
51
|
React.createElement("p", null,
|
|
78
52
|
React.createElement("strong", null, t('Request a management escalation if your issue')),
|
|
79
53
|
":"),
|
|
@@ -82,7 +56,7 @@ export const ActiveCustomerEscalation = forwardRef((props, ref) => {
|
|
|
82
56
|
React.createElement(ListItem, null, t('Needs a senior resource.')),
|
|
83
57
|
React.createElement(ListItem, null, t('Is more severe or should be a higher priority.'))),
|
|
84
58
|
commonElements,
|
|
85
|
-
React.createElement(Button, { variant: ButtonVariant.secondary, onClick: toggleModal, "data-tracking-id": "request-rme-trigger", "aria-label": t('Request an escalation') }, t('Request an escalation'))))))
|
|
59
|
+
React.createElement(Button, { variant: ButtonVariant.secondary, onClick: toggleModal, "data-tracking-id": "request-rme-trigger", "aria-label": t('Request an escalation') }, t('Request an escalation'))))));
|
|
86
60
|
return (React.createElement(React.Fragment, null,
|
|
87
61
|
React.createElement(RequestEscalationModal, { caseNumber: props.caseNumber, severity: props.caseSeverity, caseStatus: props.caseStatus, show: openRequestEscalationModal, onClose: toggleModal }),
|
|
88
62
|
React.createElement(Can, { do: resourceActions.CREATE, on: resources.ICE_ESCALATION, passThrough: true }, (canCreateICE) => canCreateICE ? isInternalElements : isCreateRMEVisible ? isNotInternalElements : React.createElement(React.Fragment, null))));
|
package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAkBnD,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,qBA6WnD"}
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { escalations, publicApi } from '@cee-eng/hydrajs';
|
|
11
|
-
import { Button, Form, FormGroup, FormHelperText, Grid, GridItem, HelperText, HelperTextItem, Modal, ModalFooter, ModalHeader, Popover, TextArea, TextInput, Title, ValidatedOptions, } from '@patternfly/react-core';
|
|
11
|
+
import { Button, Form, FormGroup, FormHelperText, Grid, GridItem, HelperText, HelperTextItem, Modal, ModalBody, ModalFooter, ModalHeader, Popover, TextArea, TextInput, Title, ValidatedOptions, } from '@patternfly/react-core';
|
|
12
12
|
import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
|
|
13
13
|
import { AlertMessage, AlertType, LoadingIndicator, SingleSelectDropdown, ToastNotification, useFetch, } from '@rh-support/components';
|
|
14
14
|
import { useGlobalStateContext } from '@rh-support/react-context';
|
|
@@ -157,38 +157,39 @@ export function RequestEscalationModal(props) {
|
|
|
157
157
|
};
|
|
158
158
|
return (React.createElement(Modal, { id: "request-mgmt-escalation-modal", className: "request-escalation-modal", isOpen: props.show, onClose: onCancel, "aria-label": t('Request an escalation') },
|
|
159
159
|
React.createElement(ModalHeader, null, header),
|
|
160
|
-
React.createElement(
|
|
161
|
-
React.createElement(
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
React.createElement(
|
|
165
|
-
React.createElement(
|
|
166
|
-
React.createElement(
|
|
167
|
-
React.createElement(
|
|
168
|
-
|
|
169
|
-
React.createElement(
|
|
170
|
-
React.createElement(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
React.createElement(
|
|
174
|
-
React.createElement(
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
React.createElement(
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
React.createElement(
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
React.createElement(
|
|
190
|
-
|
|
191
|
-
|
|
160
|
+
React.createElement(ModalBody, null,
|
|
161
|
+
React.createElement("p", { className: "pf-v6-u-mb-md" },
|
|
162
|
+
React.createElement(Trans, { i18nKey: "i18RequestEscalationDescription" }, "Submit an escalation if an issue has become more severe or you feel the case needs a higher priority. A support manager will review your escalation request.")),
|
|
163
|
+
React.createElement(AlertMessage, { variant: AlertType.DANGER, title: t('Could not create case escalation'), show: creationError, onClose: onErrorClose, isInline: true, className: "pf-v6-u-mb-md", "aria-label": t('Could not create case escalation') }),
|
|
164
|
+
React.createElement(Form, { "aria-label": t('form'), className: "request-escalation-form" },
|
|
165
|
+
React.createElement(Grid, { hasGutter: true, md: 12 },
|
|
166
|
+
React.createElement(GridItem, { span: 6 },
|
|
167
|
+
React.createElement(FormGroup, { isRequired: true, label: t('Category'), fieldId: "escalation-category" },
|
|
168
|
+
React.createElement(SingleSelectDropdown, { id: "customer-category-select", ariaLabel: t('Category'), selected: selectedCategory, options: categoryOptions, isDisabled: false, isLoading: isCategoriesFetching, isInvalid: submitButtonIsClicked && isEmpty(formState.rmeCategory), placeholder: t('Select an option that best fits'), onSelect: (option) => setCategoryState(option), isScrollable: true }))),
|
|
169
|
+
React.createElement(GridItem, { span: 6 },
|
|
170
|
+
React.createElement(FormGroup, { isRequired: true, label: t('My region'), fieldId: "escalation-region" },
|
|
171
|
+
React.createElement(SingleSelectDropdown, { ariaLabel: t('My region'), id: "customer-geo-select", selected: selectedGeo, options: geoOptions, isInvalid: submitButtonIsClicked && isEmpty(formState.geo), placeholder: t('Select a location'), onSelect: (option) => setGeoState(option) }))),
|
|
172
|
+
React.createElement(FormGroup, { isRequired: true, label: t('Subject'), fieldId: "escalation-subject" },
|
|
173
|
+
submitButtonIsClicked && hasLargeSubject && (React.createElement(FormHelperText, null,
|
|
174
|
+
React.createElement(HelperText, null,
|
|
175
|
+
React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Subject cannot be more than {{limit}} characters', {
|
|
176
|
+
limit: ESCALATION_SUBJECT_LENGTH_LIMIT,
|
|
177
|
+
}))))),
|
|
178
|
+
React.createElement(TextInput, { isRequired: true, validated: (submitButtonIsClicked && isEmpty(formState.subject)) || hasLargeSubject
|
|
179
|
+
? ValidatedOptions.error
|
|
180
|
+
: ValidatedOptions.default, type: "text", placeholder: t('Enter a subject for your request'), id: "subject-input", name: "subject-input", value: formState.subject, onChange: (_event, subject) => onSubjectChange(subject), "aria-label": t('Subject') })),
|
|
181
|
+
React.createElement(FormGroup, { isRequired: true, label: t('Description'), fieldId: "escalation-description" },
|
|
182
|
+
React.createElement(TextArea, { value: formState.description, onChange: (e, value) => setFormStateValue('description', value), isRequired: true, validated: submitButtonIsClicked && isEmpty(formState.description)
|
|
183
|
+
? ValidatedOptions.error
|
|
184
|
+
: ValidatedOptions.default, "aria-label": t('Description'), id: "description-textarea", placeholder: t('Provide a detailed comment for us to best assist you'), resizeOrientation: "vertical" })),
|
|
185
|
+
React.createElement(FormGroup, { isRequired: true, label: t('Expectations'), fieldId: "escalation-expectations" },
|
|
186
|
+
React.createElement(TextArea, { onChange: (e, value) => setFormStateValue('expectations', value), isRequired: true, validated: submitButtonIsClicked && isEmpty(formState.expectations)
|
|
187
|
+
? ValidatedOptions.error
|
|
188
|
+
: ValidatedOptions.default, placeholder: t('What do you expect to happen with this escalation?'), id: "expectations-input", value: formState.expectations, "aria-label": t('Expectations'), resizeOrientation: "vertical" })),
|
|
189
|
+
React.createElement(FormGroup, { isRequired: true, label: t('Business impact'), fieldId: "escalation-business-impact" },
|
|
190
|
+
React.createElement(TextArea, { onChange: (e, value) => setFormStateValue('businessImpactDescription', value), isRequired: true, validated: submitButtonIsClicked && isEmpty(formState.businessImpactDescription)
|
|
191
|
+
? ValidatedOptions.error
|
|
192
|
+
: ValidatedOptions.default, placeholder: t('Does your business impact change with this escalation? Please describe how it changed.'), id: "business-impact-input", value: formState.businessImpactDescription, "aria-label": t('Business impact'), resizeOrientation: "vertical" }))))),
|
|
192
193
|
React.createElement(ModalFooter, null,
|
|
193
194
|
React.createElement(Button, { key: "submit", variant: "primary", onClick: onSubmit, "data-tracking-id": "request-rme-submit", isDisabled: submitButtonIsClicked &&
|
|
194
195
|
(isPostingComment || isUpdatingCase || createEscalationFetch.isFetching || !hasRequiredInfo()), "aria-label": t('Submit') },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseDetailsAside.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseEditView/CaseDetailsAside.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAYhF,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"CaseDetailsAside.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseEditView/CaseDetailsAside.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAYhF,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBA6Y7C"}
|
|
@@ -51,7 +51,6 @@ export function CaseDetailsAside(props) {
|
|
|
51
51
|
const canCreateRME = ability.can(resourceActions.CREATE, resources.RME_ESCALATION);
|
|
52
52
|
const canCreateICE = ability.can(resourceActions.CREATE, resources.ICE_ESCALATION);
|
|
53
53
|
const canSeeToggleCustomerView = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_TOGGLE_CUSTOMER_VIEW);
|
|
54
|
-
const canViewACESection = canCreateICE || canCreateRME;
|
|
55
54
|
const globalMetadataDispatchContext = useContext(GlobalMetadataDispatchContext);
|
|
56
55
|
const caseDetailsAsidePanelRef = useRef(null);
|
|
57
56
|
const forceUpdate = useForceUpdate();
|
|
@@ -233,5 +232,5 @@ export function CaseDetailsAside(props) {
|
|
|
233
232
|
!isESSCustomer && (React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading remote session agreement section') } },
|
|
234
233
|
React.createElement(RemoteSessionAgreement, { caseNumber: caseNumber, caseSeverity: severity, caseStatus: status, ref: createEscalationRef, waitingOnCallback: waitingOnCallback, acceptedRemoteSessionTerms: acceptedRemoteSessionTerms && waitingOnCallback, readOnly: canReadCase }))),
|
|
235
234
|
!caseEscalations.isFetching && isWritePermissionforCase && (React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading customer escalation section') } },
|
|
236
|
-
React.createElement(ActiveCustomerEscalation, {
|
|
235
|
+
React.createElement(ActiveCustomerEscalation, { caseNumber: caseNumber, caseSeverity: severity, caseStatus: status, ref: createEscalationRef })))))));
|
|
237
236
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReopenCaseModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ConfirmationModals/ReopenCaseModal.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReopenCaseModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ConfirmationModals/ReopenCaseModal.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,UAAU,MAAM;IACZ,SAAS,EAAE,CAAC,WAAW,KAAA,EAAE,SAAS,KAAA,EAAE,UAAU,CAAC,KAAA,EAAE,iBAAiB,CAAC,KAAA,EAAE,cAAc,CAAC,KAAA,EAAE,mBAAmB,CAAC,KAAA,KAAK,IAAI,CAAC;IACpH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,cAAc,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACzB;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,qBAkN5C"}
|
|
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { Button, ButtonVariant, Form, FormGroup, FormHelperText, HelperText, HelperTextItem, Modal, ModalVariant, TextArea, } from '@patternfly/react-core';
|
|
10
|
+
import { Button, ButtonVariant, Form, FormGroup, FormHelperText, HelperText, HelperTextItem, Modal, ModalBody, ModalFooter, ModalHeader, ModalVariant, TextArea, } from '@patternfly/react-core';
|
|
11
11
|
import { SingleSelectDropdown } from '@rh-support/components';
|
|
12
12
|
import { formatDateTime } from '@rh-support/utils';
|
|
13
13
|
import isEmpty from 'lodash/isEmpty';
|
|
@@ -82,21 +82,27 @@ export function ReopenCaseModal(props) {
|
|
|
82
82
|
label: selectedStatus,
|
|
83
83
|
value: selectedStatus,
|
|
84
84
|
};
|
|
85
|
-
return (React.createElement(Modal, { className: "case-reopen-modal", id: "case-reopen-modal",
|
|
86
|
-
React.createElement(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
85
|
+
return (React.createElement(Modal, { className: "case-reopen-modal", id: "case-reopen-modal", "aria-describedby": "case-reopen-modal", isOpen: true, onClose: props.onClose, variant: ModalVariant.medium },
|
|
86
|
+
React.createElement(ModalHeader, null,
|
|
87
|
+
React.createElement("h2", null, t(`Reopening case ${props.caseNumber}`))),
|
|
88
|
+
React.createElement(ModalBody, null,
|
|
89
|
+
React.createElement(Form, { className: "case-reopen-modal-form" },
|
|
90
|
+
(!props.isInternal || !props.reopenStatus) && (React.createElement(FormGroup, { label: t(props.isInternal ? 'Status' : 'Reason'), isRequired: true, fieldId: "case-resolution" },
|
|
91
|
+
showValidationError && (props.isInternal ? !selectedStatus : !selectedReason) && (React.createElement(FormHelperText, null,
|
|
92
|
+
React.createElement(HelperText, null,
|
|
93
|
+
React.createElement(HelperTextItem, { variant: "error" },
|
|
94
|
+
React.createElement(Trans, null, "Required field"))))),
|
|
95
|
+
props.isInternal ? (React.createElement(SingleSelectDropdown, { placeholder: t('Select an option that best fits'), dataTrackingId: "reopen-case-status", options: getStatusDropdownOptions, selected: getSelectedStatusOption, isDisabled: props.isUpdating, isInvalid: showValidationError && !selectedStatus, onSelect: onStatusChange })) : (React.createElement(SingleSelectDropdown, { placeholder: t('Select an option that best fits'), dataTrackingId: "case-resolution", options: getReasonDropdownOptions, selected: getSelectedReasonOption, isDisabled: props.isUpdating, isInvalid: showValidationError && !selectedReason, onSelect: onReasonChange })))),
|
|
96
|
+
showTextArea && (React.createElement(FormGroup, { label: t('Please describe your reason'), type: "text", isRequired: true, fieldId: "reopen-case-description" },
|
|
97
|
+
React.createElement(TextArea, { placeholder: t(props.isInternal
|
|
98
|
+
? 'Describe the reason for reopening with the selected status'
|
|
99
|
+
: 'The better the description, the easier it will be for our support team to address your case.'), validated: showValidationError && isDescriptionEmpty && !reopenDescription
|
|
100
|
+
? 'error'
|
|
101
|
+
: 'default', isRequired: true, id: "reopen-case-description", name: "reopen-case-description", "aria-describedby": "reopen-case-description", value: reopenDescription, onChange: (_event, text) => onDescriptionChange(text), isDisabled: props.isUpdating, resizeOrientation: "vertical" }),
|
|
102
|
+
React.createElement(FormHelperText, null,
|
|
103
|
+
React.createElement(HelperText, null,
|
|
104
|
+
React.createElement(HelperTextItem, null, t(`Your comment will be visible${props.isInternal ? ' to the customers' : ''} under discussions after reopening.`)))))))),
|
|
105
|
+
React.createElement(ModalFooter, null,
|
|
100
106
|
React.createElement("div", { className: "pf-v6-u-pt-md" },
|
|
101
107
|
React.createElement(Button, { key: "submit-description", variant: ButtonVariant.primary, onClick: onSubmit, isLoading: props.isUpdating, isDisabled: isDescriptionEmpty || showValidationError || props.isUpdating, "data-tracking-id": "reopen-case-description-modal-submit" },
|
|
102
108
|
React.createElement(Trans, null, "Reopen case")),
|
package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteSessionAgreementModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RemoteSessionAgreementModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAgBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAiBD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,qBA0WxD"}
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { publicApi } from '@cee-eng/hydrajs';
|
|
11
|
-
import { Alert, Button, ButtonVariant, Checkbox, Modal, ModalFooter, TextArea, TextInput, } from '@patternfly/react-core';
|
|
11
|
+
import { Alert, Button, ButtonVariant, Checkbox, Modal, ModalBody, ModalFooter, ModalHeader, TextArea, TextInput, } from '@patternfly/react-core';
|
|
12
12
|
import DownloadIcon from '@patternfly/react-icons/dist/js/icons/download-icon';
|
|
13
13
|
import ExternalLinkAltIcon from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
|
|
14
14
|
import { SingleSelectDropdown, ToastNotification, useFetch } from '@rh-support/components';
|
|
@@ -64,16 +64,18 @@ export function RemoteSessionAgreementModal(props) {
|
|
|
64
64
|
try {
|
|
65
65
|
const { siteCode, eventCode, loggedInUser } = props;
|
|
66
66
|
const response = yield request(siteCode, eventCode, loggedInUser);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
67
|
+
if (response) {
|
|
68
|
+
let defaultTranslation = response[0].translations[0];
|
|
69
|
+
const translationLangInfoMap = response[0].translations.reduce((allTranslationsmap, translation) => {
|
|
70
|
+
if (translation.isDefault) {
|
|
71
|
+
defaultTranslation = translation;
|
|
72
|
+
}
|
|
73
|
+
allTranslationsmap[translation['localeCode']] = translation;
|
|
74
|
+
return allTranslationsmap;
|
|
75
|
+
}, {});
|
|
76
|
+
setSelectedTranslation(defaultTranslation);
|
|
77
|
+
setAllTranslations(translationLangInfoMap);
|
|
78
|
+
}
|
|
77
79
|
}
|
|
78
80
|
catch (e) {
|
|
79
81
|
console.log(e);
|
|
@@ -199,7 +201,7 @@ export function RemoteSessionAgreementModal(props) {
|
|
|
199
201
|
React.createElement("p", { className: "pf-v6-u-mt-md" },
|
|
200
202
|
React.createElement(Trans, null, "Please read and accept the remote session terms below to allow Red Hat to access your network or systems.")),
|
|
201
203
|
React.createElement("div", { className: "pf-v6-u-display-flex pf-v6-u-align-items-center pf-v6-u-flex-wrap" },
|
|
202
|
-
React.createElement(SingleSelectDropdown, { id: "terms-language-selector", ariaLabel: t('Select language'), selected: selectedLanguage, options: languageOptions, isDisabled: false, placeholder: t('Select an option that best fits'), onSelect: (option) => onLangChange(option),
|
|
204
|
+
React.createElement(SingleSelectDropdown, { id: "terms-language-selector", ariaLabel: t('Select language'), selected: selectedLanguage, options: languageOptions, isDisabled: false, placeholder: t('Select an option that best fits'), onSelect: (option) => onLangChange(option), toggleClassName: "pf-v6-u-w-50" }),
|
|
203
205
|
React.createElement("a", { "aria-label": t('Download'), "data-tracking-id": "rsa-modal-terms-download", className: "pf-v6-u-ml-md pf-v6-u-display-inline-flex pf-v6-u-align-items-center", href: selectedTranslation.pdfDownloadUrl, rel: "noopener noreferrer", target: "_blank" },
|
|
204
206
|
t('Download'),
|
|
205
207
|
" ",
|
|
@@ -216,11 +218,13 @@ export function RemoteSessionAgreementModal(props) {
|
|
|
216
218
|
return isRemoteSessionForm || remoteSessionTermsAcked ? renderRemoteSessionForm : renderRemoteSessionAgreement;
|
|
217
219
|
};
|
|
218
220
|
return (React.createElement(Modal, { id: "remote-session-agreement-modal", "aria-label": isRemoteSessionForm || remoteSessionTermsAcked
|
|
219
|
-
? t('Request remote session')
|
|
220
|
-
: t('Remote session agreement'), title: isRemoteSessionForm || remoteSessionTermsAcked
|
|
221
221
|
? t('Request remote session')
|
|
222
222
|
: t('Remote session agreement'), isOpen: props.show, onClose: onCancel },
|
|
223
|
-
|
|
223
|
+
React.createElement(ModalHeader, null,
|
|
224
|
+
React.createElement("h2", null, isRemoteSessionForm || remoteSessionTermsAcked
|
|
225
|
+
? t('Request remote session')
|
|
226
|
+
: t('Remote session agreement'))),
|
|
227
|
+
React.createElement(ModalBody, null, RemoteSessionAgreementModalBody()),
|
|
224
228
|
React.createElement(ModalFooter, null,
|
|
225
229
|
React.createElement(Button, { "aria-label": t('I agree'), variant: ButtonVariant.primary, onClick: isRemoteSessionForm || remoteSessionTermsAcked ? onSubmit : toggleRemoteSessionForm, "data-tracking-id": isRemoteSessionForm || remoteSessionTermsAcked
|
|
226
230
|
? 'remote-session-details-submission'
|
|
@@ -103,7 +103,7 @@ function CaseHostname(props) {
|
|
|
103
103
|
React.createElement("p", null, "You can share this information at any time to improve your support experience."),
|
|
104
104
|
React.createElement(Switch, { label: shareHostnameLabel, isChecked: isShareHostNamesChecked, onChange: onShareHostnameCheck }),
|
|
105
105
|
isHostnamesLoading && (React.createElement(Spinner, { size: "lg", className: "pf-v6-u-ml-sm hostnameSpinner", "aria-label": "Hostname loading" }))));
|
|
106
|
-
if (!canUseHostName
|
|
106
|
+
if (!canUseHostName) {
|
|
107
107
|
return React.createElement(React.Fragment, null);
|
|
108
108
|
}
|
|
109
109
|
const lengthError = (hostnameState === null || hostnameState === void 0 ? void 0 : hostnameState.length) > HOSTNAME_LENGTH_LIMIT;
|
|
@@ -81,11 +81,14 @@
|
|
|
81
81
|
display: flex;
|
|
82
82
|
align-items: center;
|
|
83
83
|
}
|
|
84
|
+
|
|
84
85
|
#options-menu-top-pagination {
|
|
85
86
|
display: flex !important;
|
|
86
87
|
flex-wrap: nowrap !important;
|
|
87
88
|
justify-content: flex-start;
|
|
89
|
+
margin-left: 1rem;
|
|
88
90
|
}
|
|
91
|
+
|
|
89
92
|
.timeline-sort-order-select {
|
|
90
93
|
width: auto;
|
|
91
94
|
margin-left: 1rem;
|
|
@@ -282,6 +285,11 @@ ul#case-history-paginated-timeline {
|
|
|
282
285
|
height: 100% !important;
|
|
283
286
|
}
|
|
284
287
|
|
|
288
|
+
.case-history-timeline-datepicker .pf-v6-c-calendar-month__header-year input {
|
|
289
|
+
font-size: var(--pf-t--global--font--size--body--default);
|
|
290
|
+
line-height: var(--pf-t--global--font--line-height--body);
|
|
291
|
+
}
|
|
292
|
+
|
|
285
293
|
.empty-state-date-picker {
|
|
286
294
|
margin-left: 82%;
|
|
287
295
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RHAssociatesSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/RHAssociatesSelector.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAS5D,MAAM,WAAW,MAAM;CAAG;AAG1B,iBAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"RHAssociatesSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/RHAssociatesSelector.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAS5D,MAAM,WAAW,MAAM;CAAG;AAG1B,iBAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,qBAqN1C;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -100,6 +100,7 @@ function RHAssociatesSelector(props) {
|
|
|
100
100
|
onNotifiedUserChange([Object.assign(Object.assign({}, loggedInUser.data), { accountNumber: loggedInUserRights.data.getAccountNumber() })], true);
|
|
101
101
|
});
|
|
102
102
|
const removeCurrentUser = () => {
|
|
103
|
+
console.log(isCurrentUserSelectedInternalNotifiedUser());
|
|
103
104
|
if (isCurrentUserSelectedInternalNotifiedUser()) {
|
|
104
105
|
onNotifiedUserChange(filter(selectedNotificationContacts, (contact) => contact.ssoUsername !== loggedInUser.data.ssoUsername));
|
|
105
106
|
}
|
|
@@ -110,21 +111,23 @@ function RHAssociatesSelector(props) {
|
|
|
110
111
|
};
|
|
111
112
|
const canNotifyRHAssociates = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.NOTIFY_RH_ASSOCIATES);
|
|
112
113
|
const toolTipRef = useRef();
|
|
114
|
+
const contactsToExclude = !isEmpty(selectedOwner.data) ? [{ ssoUsername: selectedOwner.data.ssoUsername }] : [];
|
|
113
115
|
if (!canNotifyRHAssociates)
|
|
114
116
|
return React.createElement(React.Fragment, null);
|
|
115
117
|
return (React.createElement(React.Fragment, null, canNotifyRHAssociates && (React.createElement("div", { className: "form-group" },
|
|
116
118
|
React.createElement("label", { className: "react-typeahead-label-wrapper", htmlFor: "get-support-notifications" },
|
|
117
119
|
React.createElement(Trans, null, "Internal Contacts"),
|
|
118
|
-
React.createElement(ContactSelectorInternal, { className: "push-bottom-narrow", selectedContacts: filter(selectedNotificationContacts, (c) => c.isInternal), showSelectedContacts: true, contactsToExclude:
|
|
120
|
+
React.createElement(ContactSelectorInternal, { className: "push-bottom-narrow", selectedContacts: filter(selectedNotificationContacts, (c) => c.isInternal), showSelectedContacts: true, contactsToExclude: contactsToExclude, disableContactRemoval: contactsToExclude, id: "open-case-rh-notifications", name: "open-case-rh-notifications", multiple: true, contactListParams: {
|
|
119
121
|
internal: false, // to get non-ldap contacts only
|
|
120
122
|
isInternalContact: true,
|
|
121
123
|
}, placeholder: t(`Add an internal associate to watch this case`), onSelect: onNotifiedUserChange, renderToken: renderToken, isUpdating: isRHAssociatesUpdating, "data-tracking-id": "case-contact-select-rh-watcher" })),
|
|
122
|
-
caseNumber && showAddWatchButton() && !isExportingPDF && (React.createElement(Button, { variant: "secondary", onClick: addCurrentUser, type: "button", "data-tracking-id": "case-add-me-rh-watcher" },
|
|
124
|
+
caseNumber && showAddWatchButton() && !isExportingPDF && (React.createElement(Button, { className: "add-watcher-button", variant: "secondary", onClick: addCurrentUser, type: "button", "data-tracking-id": "case-add-me-rh-watcher", isDisabled: isRHAssociatesUpdating },
|
|
123
125
|
React.createElement(Trans, null, "Add me as a watcher"))),
|
|
124
|
-
caseNumber && showRemoveWatchButton() && !isExportingPDF && (React.createElement("div", {
|
|
126
|
+
caseNumber && showRemoveWatchButton() && !isExportingPDF && (React.createElement("div", { className: "remove-me-as-watcher pf-v6-u-display-inline-block" }, isCurrentUserCaseContact ? (React.createElement(React.Fragment, null,
|
|
125
127
|
React.createElement(Tooltip, { trigger: 'mouseenter focus', triggerRef: toolTipRef, position: TooltipPosition.top, content: React.createElement(Trans, null, "You are case contact and therefore you cannot be removed as watcher") }),
|
|
126
|
-
React.createElement(
|
|
127
|
-
React.createElement(
|
|
128
|
+
React.createElement("div", { ref: toolTipRef },
|
|
129
|
+
React.createElement(Button, { className: "remove-watcher-button", variant: "tertiary", onClick: removeCurrentUser, isDisabled: true, "data-tracking-id": "case-remove-me-rh-watcher-case-contact" },
|
|
130
|
+
React.createElement(Trans, null, "Remove me as a watcher"))))) : (React.createElement(Button, { className: "remove-watcher-button", variant: "secondary", onClick: removeCurrentUser, "data-tracking-id": "case-remove-me-rh-watcher", isDisabled: isRHAssociatesUpdating },
|
|
128
131
|
React.createElement(Trans, null, "Remove me as a watcher")))))))));
|
|
129
132
|
}
|
|
130
133
|
export { RHAssociatesSelector };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseContactSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseManagement/SendNotifications/CaseContactSelector.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CaseContactSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseManagement/SendNotifications/CaseContactSelector.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAgBvE,MAAM,WAAW,MAAM;CAAG;AAG1B,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBAodzC;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -17,7 +17,6 @@ import differenceBy from 'lodash/differenceBy';
|
|
|
17
17
|
import filter from 'lodash/filter';
|
|
18
18
|
import find from 'lodash/find';
|
|
19
19
|
import intersection from 'lodash/intersection';
|
|
20
|
-
import intersectionBy from 'lodash/intersectionBy';
|
|
21
20
|
import isEmpty from 'lodash/isEmpty';
|
|
22
21
|
import isEqual from 'lodash/isEqual';
|
|
23
22
|
import map from 'lodash/map';
|
|
@@ -112,7 +111,7 @@ function CaseContactSelector(props) {
|
|
|
112
111
|
});
|
|
113
112
|
const processCaseContacts = (selectedContacts) => __awaiter(this, void 0, void 0, function* () {
|
|
114
113
|
const toAdd = filter(differenceBy(selectedContacts, selectedNotificationContacts, 'ssoUsername'), (item) => item.ssoUsername !== contactSsoUsername);
|
|
115
|
-
const toRemove = filter(
|
|
114
|
+
const toRemove = filter(differenceBy(selectedNotificationContacts, selectedContacts, 'ssoUsername'), (item) => !item.isInternal && item.ssoUsername !== contactSsoUsername);
|
|
116
115
|
(toAdd.length || toRemove.length) && clearErrorState();
|
|
117
116
|
if ((toAdd || []).length > 0) {
|
|
118
117
|
if (loggedInUserRights.data.isOrgAdmin()) {
|
|
@@ -267,7 +266,7 @@ function CaseContactSelector(props) {
|
|
|
267
266
|
React.createElement(CaseContactsSelectorExternal, { isDisabled: isUpdatingCustomEmails || isAssociatesUpdating, groupContactsAndEmails: true, allowCustomEmailAdd: true, contactSsoUsername: contactSsoUsername !== null && contactSsoUsername !== void 0 ? contactSsoUsername : '', loggedInUserRights: loggedInUserRights.data, selectedAccountNumber: accountNumber, selected: [
|
|
268
267
|
...customEmailsList.data,
|
|
269
268
|
...filter(selectedNotificationContacts, (c) => !c.isInternal),
|
|
270
|
-
], contactsToExclude: !isEmpty(selectedOwner.data) ? [selectedOwner.data] : [], onChange: onNotifiedUserChange, clearButton: true, multiple: true, placeholder: t(
|
|
269
|
+
], contactsToExclude: !isEmpty(selectedOwner.data) ? [selectedOwner.data] : [], onChange: onNotifiedUserChange, clearButton: true, multiple: true, placeholder: t('Search for an email address or username of the person you want to notify'), id: "open-case-notifications", name: "open-case-notifications", className: "react-select-custom", renderToken: renderToken, isUpdating: isAssociatesUpdating ||
|
|
271
270
|
customEmailsList.isFetching ||
|
|
272
271
|
isUpdatingCustomEmails ||
|
|
273
272
|
isCaseOwnerUpdating, isExportingPDF: isExportingPDF, customEmails: accountCustomEmails.data || [], canAddNew: onAddNew, getCreateNewText: getCreateNewText })),
|
|
@@ -284,12 +283,13 @@ function CaseContactSelector(props) {
|
|
|
284
283
|
" is not listed under your account. You can always",
|
|
285
284
|
' ',
|
|
286
285
|
React.createElement(Button, { variant: "link", isInline: true, component: "span", onClick: onAddEmailToAccountBtnClick }, "add them at the account level"))))),
|
|
287
|
-
caseNumber && showAddWatchButton() && !isExportingPDF && (React.createElement(Button, { variant: "secondary", onClick: addCurrentUser, type: "button", "data-tracking-id": "case-add-me-watcher" },
|
|
286
|
+
caseNumber && showAddWatchButton() && !isExportingPDF && (React.createElement(Button, { className: "add-watcher-button", variant: "secondary", onClick: addCurrentUser, type: "button", "data-tracking-id": "case-add-me-watcher", isDisabled: isUpdatingCustomEmails || isAssociatesUpdating },
|
|
288
287
|
React.createElement(Trans, null, "Add me as a watcher"))),
|
|
289
|
-
caseNumber && showRemoveWatchButton() && !isExportingPDF && (React.createElement("div", {
|
|
288
|
+
caseNumber && showRemoveWatchButton() && !isExportingPDF && (React.createElement("div", { className: "remove-me-as-watcher pf-v6-u-display-inline-block" }, isCurrentUserCaseContact ? (React.createElement(React.Fragment, null,
|
|
290
289
|
React.createElement(Tooltip, { trigger: 'mouseenter focus', triggerRef: toolTipRef, position: TooltipPosition.top, content: React.createElement(Trans, null, "You are case contact and therefore you cannot be removed as watcher") }),
|
|
291
|
-
React.createElement(
|
|
292
|
-
React.createElement(
|
|
290
|
+
React.createElement("div", { className: "pf-v6-u-display-inline-block", ref: toolTipRef },
|
|
291
|
+
React.createElement(Button, { className: "remove-watcher-button", variant: "tertiary", onClick: removeCurrentUser, type: "button", isDisabled: true, "data-tracking-id": "case-remove-me-watcher" },
|
|
292
|
+
React.createElement(Trans, null, "Remove me as a watcher"))))) : (React.createElement(Button, { className: "remove-watcher-button", variant: "secondary", onClick: removeCurrentUser, isDisabled: isUpdatingCustomEmails || isAssociatesUpdating, type: "button", "data-tracking-id": "case-remove-me-watcher" },
|
|
293
293
|
React.createElement(Trans, null, "Remove me as a watcher"))))))) : (React.createElement(NonOrgCaseNotifyeesSelector, { id: "open-case-notifications", placeholder: t('Enter an email address or username for the person you want to notify'), isDisabled: isAssociatesUpdating || customEmailsList.isFetching || isUpdatingCustomEmails, selectedItems: [
|
|
294
294
|
...customEmailsList.data,
|
|
295
295
|
...filter(selectedNotificationContacts, (c) => !c.isInternal),
|
package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NonOrgCaseNotifyeesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAwB,oBAAoB,EAAY,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAkD,MAAM,OAAO,CAAC;AAGvE,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;AAqCD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"NonOrgCaseNotifyeesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAwB,oBAAoB,EAAY,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAkD,MAAM,OAAO,CAAC;AAGvE,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;AAqCD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,qBA2MxD"}
|
|
@@ -144,7 +144,7 @@ export function NonOrgCaseNotifyeesSelector(props) {
|
|
|
144
144
|
const isContactOption = isContact(option);
|
|
145
145
|
const isCurrentUserCaseContact = isContactOption && option.ssoUsername === props.contactSsoUsername;
|
|
146
146
|
const isDisabled = (props.isChipDisabled && isContactOption) || isCurrentUserCaseContact;
|
|
147
|
-
return (React.createElement(Label, { key: getKey(option) || index, onClose:
|
|
147
|
+
return (React.createElement(Label, { key: getKey(option) || index, onClose: () => onRemoveItem(option), isDisabled: isDisabled, closeBtnAriaLabel: `Remove ${getHydraContactLabel(option)}`, variant: "outline" }, getHydraContactLabel(option)));
|
|
148
148
|
})));
|
|
149
149
|
};
|
|
150
150
|
const menu = (React.createElement(Menu, { ref: menuRef },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContactSelectorInternal.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/input/ContactSelectorInternal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"ContactSelectorInternal.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/input/ContactSelectorInternal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAsBrF,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,MAAM;IACnB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC9B,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC/B,qBAAqB,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,MAAM,KAAA,EAAE,KAAK,KAAA,EAAE,GAAG,KAAA,KAAK,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;CAClE;AAED,MAAM,WAAW,MAAM;IACnB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,qBAAa,uBAAwB,SAAQ,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACxE,UAAU,EAAE,eAAe,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAQ;IAC5C,QAAQ,oCAAuC;IAE/C,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAalC;gBAEU,KAAK,EAAE,MAAM;IAYzB,gBAAgB,YAAa,QAAQ,KAAG,MAAM,CAS5C;IAEF,mBAAmB,aAAc,QAAQ,EAAE,KAAG,QAAQ,EAAE,CAGtD;IAEF,sBAAsB,MAAO,QAAQ,KAAG,OAAO,CAE7C;IAEF,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAmBpC,QAAQ,aAAoB,QAAQ,EAAE,mBAKpC;IAEF,YAAY,UAAiB,MAAM,mBA0CjC;IAEF,iBAAiB,UAAW,MAAM,UAiBhC;IAEF,YAAY,UAAW,GAAG,aAAa,GAAG,UAkBxC;IAEF,mBAAmB,oBAAqB,QAAQ,UAI9C;IAEF,aAAa,UAAW,KAAK,CAAC,aAAa,UAkCzC;IAEF,WAAW,aAIT;IAEF,UAAU,aAKR;IAEF,WAAW,aAGT;IAEF,QAAQ,aAEN;IAEF,MAAM;CA6GT"}
|
|
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { contacts } from '@cee-eng/hydrajs';
|
|
11
11
|
import { Button, Label, LabelGroup, MenuToggle, Select, SelectList, SelectOption, Spinner, TextInputGroup, TextInputGroupMain, TextInputGroupUtilities, } from '@patternfly/react-core';
|
|
12
12
|
import TimesCircleIcon from '@patternfly/react-icons/dist/esm/icons/times-circle-icon';
|
|
13
|
+
import { haltEvent } from '@rh-support/utils';
|
|
13
14
|
import assign from 'lodash/assign';
|
|
14
15
|
import differenceBy from 'lodash/differenceBy';
|
|
15
16
|
import filter from 'lodash/filter';
|
|
@@ -212,7 +213,11 @@ export class ContactSelectorInternal extends React.Component {
|
|
|
212
213
|
: searchValue;
|
|
213
214
|
const toggle = (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, variant: "typeahead", onClick: this.onToggle, isExpanded: isOpen, isDisabled: this.props.disabled || this.props.isUpdating, isFullWidth: true },
|
|
214
215
|
React.createElement(TextInputGroup, { isPlain: true },
|
|
215
|
-
React.createElement(TextInputGroupMain, { value: displayValue, onChange: (_, value) => this.handleInputChange(value), onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, placeholder: this.props.placeholder || 'Search contact by name or username', ref: this.inputRef, autoComplete: "off", isExpanded: isOpen, role: "combobox" }, this.props.multiple && selectedContacts.length > 0 && (React.createElement(LabelGroup, { "aria-label": "Selected contacts" }, selectedContacts.map((contact, index) =>
|
|
216
|
+
React.createElement(TextInputGroupMain, { value: displayValue, onChange: (_, value) => this.handleInputChange(value), onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, placeholder: this.props.placeholder || 'Search contact by name or username', ref: this.inputRef, autoComplete: "off", isExpanded: isOpen, role: "combobox" }, this.props.multiple && selectedContacts.length > 0 && (React.createElement(LabelGroup, { "aria-label": "Selected contacts" }, selectedContacts.map((contact, index) => {
|
|
217
|
+
var _a, _b;
|
|
218
|
+
const isDisabled = !!((_b = (_a = this.props) === null || _a === void 0 ? void 0 : _a.disableContactRemoval) === null || _b === void 0 ? void 0 : _b.find((v) => v.ssoUsername === contact.ssoUsername));
|
|
219
|
+
return (React.createElement(Label, { key: contact.ssoUsername, variant: "outline", color: "blue", onClick: haltEvent, onClose: () => this.handleRemoveContact(contact), isDisabled: isDisabled }, this.getSelectedLabel(contact)));
|
|
220
|
+
})))),
|
|
216
221
|
React.createElement(TextInputGroupUtilities, null,
|
|
217
222
|
isLoading && React.createElement(Spinner, { size: "sm" }),
|
|
218
223
|
this.props.clearButton && (searchValue || selectedContacts.length > 0) && (React.createElement(Button, { variant: "plain", icon: React.createElement(TimesCircleIcon, null), onClick: this.handleClear, "aria-label": "Clear input" }))))));
|
package/lib/esm/css/case.css
CHANGED
|
@@ -363,3 +363,15 @@ input[aria-invalid='true'].pf-v6-c-form-control {
|
|
|
363
363
|
min-width: 552px;
|
|
364
364
|
}
|
|
365
365
|
}
|
|
366
|
+
|
|
367
|
+
#reopen-case-description {
|
|
368
|
+
resize: none !important;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.add-watcher-button {
|
|
372
|
+
max-width: 15rem;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.remove-watcher-button {
|
|
376
|
+
max-width: 15rem;
|
|
377
|
+
}
|
|
@@ -399,6 +399,10 @@ div#cep-details-modal.pf-v6-c-modal-box__body {
|
|
|
399
399
|
div#request-mgmt-escalation-modal.request-escalation-modal {
|
|
400
400
|
div.pf-v6-c-modal-box__body {
|
|
401
401
|
form.pf-v6-c-form.request-escalation-form {
|
|
402
|
+
.pf-m-textarea textarea {
|
|
403
|
+
resize: none !important;
|
|
404
|
+
}
|
|
405
|
+
|
|
402
406
|
div.pf-v6-l-grid.pf-m-all-12-col-on-md.pf-m-gutter {
|
|
403
407
|
div.pf-v6-l-grid__item.pf-m-6-col {
|
|
404
408
|
div.pf-v6-c-form__group {
|
|
@@ -739,6 +743,7 @@ a.case-resource-recommendation-link {
|
|
|
739
743
|
}
|
|
740
744
|
|
|
741
745
|
.description-textarea {
|
|
746
|
+
resize: none !important;
|
|
742
747
|
&.pf-v6-c-form-control {
|
|
743
748
|
&:disabled,
|
|
744
749
|
&.kt1-disabled {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/troubleshoot",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.18",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
"@progress/kendo-licensing": "1.3.5",
|
|
59
59
|
"@progress/kendo-react-pdf": "^5.16.0",
|
|
60
60
|
"@redux-devtools/extension": "^3.3.0",
|
|
61
|
-
"@rh-support/components": "2.5.
|
|
62
|
-
"@rh-support/react-context": "2.5.
|
|
61
|
+
"@rh-support/components": "2.5.29",
|
|
62
|
+
"@rh-support/react-context": "2.5.31",
|
|
63
63
|
"@rh-support/types": "2.0.5",
|
|
64
64
|
"@rh-support/user-permissions": "2.5.19",
|
|
65
65
|
"@rh-support/utils": "2.5.18",
|
|
@@ -134,5 +134,5 @@
|
|
|
134
134
|
"defaults and supports es6-module",
|
|
135
135
|
"maintained node versions"
|
|
136
136
|
],
|
|
137
|
-
"gitHead": "
|
|
137
|
+
"gitHead": "e0bf8c7dfd320b0250ba6cb2efa66abcd1c0edf1"
|
|
138
138
|
}
|