@rh-support/troubleshoot 2.6.82 → 2.6.83

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":"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"}
1
+ {"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"AAoCA,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,qBA4zBnD"}
@@ -8,9 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { escalations, publicApi } from '@cee-eng/hydrajs';
11
- import { Button, Form, FormGroup, FormHelperText, Grid, GridItem, HelperText, HelperTextItem, Modal, ModalBody, ModalFooter, ModalHeader, Popover, TextArea, TextInput, Title, ValidatedOptions, } from '@patternfly/react-core';
12
- import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
13
- import { AlertMessage, AlertType, LoadingIndicator, SingleSelectDropdown, ToastNotification, useFetch, } from '@rh-support/components';
11
+ import { Button, Form, FormGroup, FormHelperText, Grid, GridItem, HelperText, HelperTextItem, Modal, ModalBody, ModalHeader, ModalVariant, Radio, TextArea, TextInput, TimePicker, Title, ValidatedOptions, Wizard, WizardStep, } from '@patternfly/react-core';
12
+ import { AlertMessage, AlertType, PhoneInput, SingleSelectDropdown, ToastNotification, useFetch, } from '@rh-support/components';
14
13
  import { useGlobalStateContext } from '@rh-support/react-context';
15
14
  import isEmpty from 'lodash/isEmpty';
16
15
  import React, { useEffect, useState } from 'react';
@@ -19,12 +18,13 @@ import { useCaseDispatch } from '../../../context/CaseContext';
19
18
  import { useCaseDetailsPageDispatchContext, useCaseDetailsPageStateContext, } from '../../../context/CaseDetailsPageContext';
20
19
  import { useCaseDiscussionTabDispatchContext, useCaseDiscussionTabStateContext, } from '../../../context/CaseDiscussionTabContext';
21
20
  import { CustomerGEOs } from '../../../enums/customerGEOs';
22
- import { ESCALATION_SUBJECT_LENGTH_LIMIT } from '../../../reducers/CaseConstNTypes';
21
+ import { ESCALATION_SUBJECT_LENGTH_LIMIT, TIMEZONE_OPTIONS, } from '../../../reducers/CaseConstNTypes';
23
22
  import { fetchCaseEscalations } from '../../../reducers/CaseDetailsPageReducer';
24
23
  import { updateDiscussionStateComments } from '../../../reducers/CaseDiscussionTabReducer';
25
24
  import { checkForCaseStatusToggleOnAttachOrComment, fetchCaseDetails } from '../../../reducers/CaseReducer';
26
25
  const customerGEOKeys = Object.keys(CustomerGEOs);
27
26
  export function RequestEscalationModal(props) {
27
+ var _a;
28
28
  const { globalMetadataState: { loggedInUser, loggedInUserRights }, } = useGlobalStateContext();
29
29
  const { t } = useTranslation();
30
30
  const [categories, setCategories] = useState([]);
@@ -35,12 +35,55 @@ export function RequestEscalationModal(props) {
35
35
  geo: '',
36
36
  businessImpactDescription: '',
37
37
  rmeCategory: '',
38
+ contactName: '',
39
+ contactTitle: '',
40
+ contactPreference: '',
41
+ countryCode: '',
42
+ phoneNumber: '',
43
+ timezone: '',
44
+ preferredTimeFrom: '',
45
+ preferredTimeTo: '',
38
46
  };
39
47
  const [formState, setFormState] = useState(initialState);
40
48
  const [hasLargeSubject, setHasLargeSubject] = useState(false);
41
49
  const [submitButtonIsClicked, setSubmitSaveButtonIsClicked] = useState(false);
50
+ // Function to check if "to" time is after "from" time
51
+ const isValidTimeRange = (fromTime, toTime) => {
52
+ if (!fromTime || !toTime)
53
+ return true; // Don't validate if either is empty
54
+ // Convert time strings to comparable numbers (HH:MM -> HHMM)
55
+ const fromMinutes = fromTime.split(':').map(Number);
56
+ const toMinutes = toTime.split(':').map(Number);
57
+ if (fromMinutes.length !== 2 || toMinutes.length !== 2)
58
+ return true;
59
+ const fromTotal = fromMinutes[0] * 60 + fromMinutes[1];
60
+ const toTotal = toMinutes[0] * 60 + toMinutes[1];
61
+ return toTotal > fromTotal;
62
+ };
42
63
  // checks if all the fields have values.
43
- const hasRequiredInfo = () => Object.keys(formState).reduce((accumulator, currentValue) => { var _a; return !accumulator ? accumulator : formState[currentValue].length > 0 && ((_a = formState[currentValue]) === null || _a === void 0 ? void 0 : _a.trim()); }, true);
64
+ const hasRequiredInfo = () => {
65
+ const requiredFields = [
66
+ 'subject',
67
+ 'description',
68
+ 'expectations',
69
+ 'geo',
70
+ 'businessImpactDescription',
71
+ 'rmeCategory',
72
+ 'contactName',
73
+ 'contactTitle',
74
+ 'contactPreference',
75
+ ];
76
+ if (formState.contactPreference === 'call-me' || formState.contactPreference === 'call-if-necessary') {
77
+ requiredFields.push('phoneNumber', 'timezone', 'preferredTimeFrom', 'preferredTimeTo');
78
+ }
79
+ const hasAllFields = requiredFields.every((field) => formState[field] && formState[field].toString().trim().length > 0);
80
+ if ((formState.contactPreference === 'call-me' || formState.contactPreference === 'call-if-necessary') &&
81
+ formState.preferredTimeFrom &&
82
+ formState.preferredTimeTo) {
83
+ return hasAllFields && isValidTimeRange(formState.preferredTimeFrom, formState.preferredTimeTo);
84
+ }
85
+ return hasAllFields;
86
+ };
44
87
  const setFormStateValue = (key, value) => setFormState((pre) => (Object.assign(Object.assign({}, pre), { [key]: value })));
45
88
  const createEscalationFetch = useFetch(escalations.createIceEscalation, { propgateErrors: true });
46
89
  const { request: postCommentRequest, isFetching: isPostingComment } = useFetch(publicApi.kase.postComment, {
@@ -90,14 +133,72 @@ export function RequestEscalationModal(props) {
90
133
  if (!hasRequiredInfo() || hasLargeSubject)
91
134
  return;
92
135
  try {
93
- const res = yield createEscalationFetch.request(Object.assign(Object.assign({}, formState), { recordType: 'Active Customer Escalation', escalationSource: 'RME Escalation', status: 'New', accountNumber: loggedInUserRights.data.getAccountNumber(), caseNumber: props.caseNumber, requestor: `${loggedInUser.data.firstName} ${loggedInUser.data.lastName}`, requestorEmail: loggedInUser.data.email, requestorPhone: loggedInUser.data.phone, alreadyEscalated: false, severity: props.severity ? props.severity.charAt(0) : '3' }));
94
- const fullComment = t('### Request Management Escalation:\n\n**Subject**\n{{subject}}\n\n**Category**\n{{rmeCategory}}\n\n**Description**\n{{description}}\n\n**Expectations**\n{{expectations}}\n\n**Business Impact**\n{{businessImpactDescription}}', {
136
+ let contactDetailsString = '\n\n--- Contact Details ---';
137
+ contactDetailsString += `\nName: ${formState.contactName}`;
138
+ contactDetailsString += `\nTitle: ${formState.contactTitle}`;
139
+ const contactPrefMap = {
140
+ 'call-me': 'Call me',
141
+ 'call-if-necessary': 'Call only if necessary',
142
+ 'do-not-call': 'Do not call',
143
+ };
144
+ contactDetailsString += `\nContact Preference: ${formState.contactPreference
145
+ ? contactPrefMap[formState.contactPreference] || formState.contactPreference
146
+ : ''}`;
147
+ if (formState.contactPreference === 'call-me' || formState.contactPreference === 'call-if-necessary') {
148
+ contactDetailsString += `\nPhone Number: ${formState.phoneNumber}`;
149
+ contactDetailsString += `\nTimezone: ${formState.timezone}`;
150
+ contactDetailsString += `\nPreferred Time to Call: ${formState.preferredTimeFrom} to ${formState.preferredTimeTo}`;
151
+ }
152
+ const enhancedDescription = formState.description + contactDetailsString;
153
+ // Use contact phone if provided, otherwise use logged in user's phone
154
+ const requestorPhone = (formState.contactPreference === 'call-me' || formState.contactPreference === 'call-if-necessary') &&
155
+ formState.phoneNumber
156
+ ? formState.phoneNumber
157
+ : loggedInUser.data.phone;
158
+ const res = yield createEscalationFetch.request({
159
+ subject: formState.subject,
160
+ description: enhancedDescription,
161
+ expectations: formState.expectations,
162
+ geo: formState.geo,
163
+ businessImpactDescription: formState.businessImpactDescription,
164
+ rmeCategory: formState.rmeCategory,
165
+ recordType: 'Active Customer Escalation',
166
+ escalationSource: 'RME Escalation',
167
+ status: 'New',
168
+ accountNumber: loggedInUserRights.data.getAccountNumber(),
169
+ caseNumber: props.caseNumber,
170
+ requestor: formState.contactName || `${loggedInUser.data.firstName} ${loggedInUser.data.lastName}`,
171
+ requestorEmail: loggedInUser.data.email,
172
+ requestorPhone: requestorPhone,
173
+ alreadyEscalated: false,
174
+ severity: props.severity ? props.severity.charAt(0) : '3',
175
+ });
176
+ const formattedContactPreference = formState.contactPreference
177
+ ? contactPrefMap[formState.contactPreference] || formState.contactPreference
178
+ : '';
179
+ // Format time to 12-hour format
180
+ const formatTime = (time24) => {
181
+ if (!time24)
182
+ return '';
183
+ const [hours, minutes] = time24.split(':');
184
+ const hour = parseInt(hours);
185
+ const ampm = hour >= 12 ? 'pm' : 'am';
186
+ const hour12 = hour % 12 || 12;
187
+ return `${hour12}:${minutes}${ampm}`;
188
+ };
189
+ const fullComment = t('### Request Management Escalation:\n\n**Subject**\n{{subject}}\n\n**Category**\n{{rmeCategory}}\n\n**Description**\n{{description}}\n\n**Expectations**\n{{expectations}}\n\n**Business Impact**\n{{businessImpactDescription}}\n\n**Contact Preference**\n{{contactPreference}}{{phoneDetails}}\n\n', {
95
190
  category: formState.rmeCategory,
96
191
  subject: formState.subject,
97
192
  description: formState.description,
98
193
  expectations: formState.expectations,
99
194
  businessImpactDescription: formState.businessImpactDescription,
100
195
  rmeCategory: formState.rmeCategory,
196
+ contactName: formState.contactName || 'Not provided',
197
+ contactTitle: formState.contactTitle || 'Not provided',
198
+ contactPreference: formattedContactPreference || 'Not provided',
199
+ phoneDetails: formState.contactPreference === 'call-me' || formState.contactPreference === 'call-if-necessary'
200
+ ? `\n\n**Case owner's phone number**\n${formState.phoneNumber}\nNote: Phone number will be stored in case comments for escalation only – not used for marketing.\n\n**Timezone**\n${formState.timezone}\n\n**Best time to connect regarding escalation**\nFrom ${formatTime(formState.preferredTimeFrom || '')} to ${formatTime(formState.preferredTimeTo || '')}`
201
+ : '',
101
202
  });
102
203
  try {
103
204
  yield submitEscalationComment(res.name, fullComment);
@@ -105,6 +206,11 @@ export function RequestEscalationModal(props) {
105
206
  catch (e) {
106
207
  // silently fails, escalation is created but adding comment fails
107
208
  }
209
+ // Reset form state before closing
210
+ setFormState(initialState);
211
+ setSubmitSaveButtonIsClicked(false);
212
+ setHasLargeSubject(false);
213
+ setCreationError(false);
108
214
  props.onClose();
109
215
  }
110
216
  catch (error) {
@@ -112,11 +218,6 @@ export function RequestEscalationModal(props) {
112
218
  setCreationError(true);
113
219
  }
114
220
  });
115
- const header = (React.createElement(Title, { className: "pf-v6-u-mb-0", id: "custom-header-label", headingLevel: "h1" },
116
- React.createElement(Trans, null, "Request an escalation"),
117
- React.createElement(Popover, { showClose: false, position: 'top', hasAutoWidth: true, bodyContent: () => (React.createElement("a", { href: "/support/escalation", target: "_blank", "aria-label": t('Learn more about escalation cases.') },
118
- React.createElement(Trans, null, "Learn more about escalation cases."))) },
119
- React.createElement(InfoCircleIcon, { className: "pf-v6-u-ml-sm" }))));
120
221
  // load rme categories as soon as user opens the modal
121
222
  useEffect(() => {
122
223
  if (!props.show || categories.length !== 0)
@@ -124,7 +225,7 @@ export function RequestEscalationModal(props) {
124
225
  const fetchCategories = () => __awaiter(this, void 0, void 0, function* () {
125
226
  try {
126
227
  const categories = yield getRmeCategories();
127
- setCategories((categories === null || categories === void 0 ? void 0 : categories.items) || []);
228
+ setCategories(((categories === null || categories === void 0 ? void 0 : categories.items) || []));
128
229
  }
129
230
  catch (e) {
130
231
  console.log(e);
@@ -155,46 +256,195 @@ export function RequestEscalationModal(props) {
155
256
  value: formState.geo,
156
257
  label: findSelectedGeoLabel() || t('Select a location'),
157
258
  };
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
- React.createElement(ModalHeader, null, header),
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 },
259
+ // Create custom footer function for wizard
260
+ const CustomFooter = (activeStep, goToNextStep, goToPrevStep) => {
261
+ const isLastStep = activeStep.id === 'contact-details';
262
+ const isFirstStep = activeStep.id === 'escalation-details';
263
+ const isLoading = isPostingComment || isUpdatingCase || createEscalationFetch.isFetching;
264
+ // Validate current step
265
+ const isCurrentStepValid = () => {
266
+ if (activeStep.id === 'escalation-details') {
267
+ return (!isEmpty(formState.rmeCategory) &&
268
+ !isEmpty(formState.geo) &&
269
+ !isEmpty(formState.subject) &&
270
+ !hasLargeSubject &&
271
+ !isEmpty(formState.description) &&
272
+ !isEmpty(formState.expectations) &&
273
+ !isEmpty(formState.businessImpactDescription));
274
+ }
275
+ else if (activeStep.id === 'contact-details') {
276
+ const baseValidation = !isEmpty(formState.contactName) &&
277
+ !isEmpty(formState.contactTitle) &&
278
+ !isEmpty(formState.contactPreference);
279
+ // Additional validation if call options are selected
280
+ if (formState.contactPreference === 'call-me' || formState.contactPreference === 'call-if-necessary') {
281
+ return (baseValidation &&
282
+ !isEmpty(formState.phoneNumber) &&
283
+ !isEmpty(formState.preferredTimeFrom) &&
284
+ !isEmpty(formState.preferredTimeTo));
285
+ }
286
+ return baseValidation;
287
+ }
288
+ return false;
289
+ };
290
+ const handleNext = () => {
291
+ setSubmitSaveButtonIsClicked(true);
292
+ if (isCurrentStepValid()) {
293
+ setSubmitSaveButtonIsClicked(false); // Reset validation state when moving to next step
294
+ goToNextStep({});
295
+ }
296
+ };
297
+ const handleSubmit = () => {
298
+ setSubmitSaveButtonIsClicked(true);
299
+ if (isCurrentStepValid()) {
300
+ onSubmit();
301
+ }
302
+ };
303
+ return (React.createElement("div", { className: "pf-v6-c-wizard__footer" },
304
+ !isFirstStep && (React.createElement(Button, { variant: "secondary", onClick: () => {
305
+ setSubmitSaveButtonIsClicked(false);
306
+ goToPrevStep({});
307
+ }, isDisabled: isLoading, "data-tracking-id": "request-rme-back" }, t('Back'))),
308
+ React.createElement(Button, { variant: "primary", onClick: isLastStep ? handleSubmit : handleNext, isDisabled: isLoading || (submitButtonIsClicked && !isCurrentStepValid()), "data-tracking-id": isLastStep ? 'request-rme-submit' : 'request-rme-next' }, isLastStep ? t('Submit') : t('Next')),
309
+ React.createElement(Button, { variant: "link", onClick: onCancel, isDisabled: isLoading, "data-tracking-id": "request-rme-cancel" }, t('Cancel'))));
310
+ };
311
+ const escalationDetailsStep = (React.createElement(WizardStep, { id: "escalation-details", name: t('Escalation details') },
312
+ React.createElement("div", { className: "wizard-step-content" },
313
+ React.createElement(Title, { headingLevel: "h2", size: "2xl", className: "pf-v6-u-mb-lg" }, t('Escalation details')),
314
+ React.createElement(Form, { "aria-label": t('Escalation details form'), className: "request-escalation-form" },
315
+ React.createElement(Grid, { hasGutter: true },
166
316
  React.createElement(GridItem, { span: 6 },
167
317
  React.createElement(FormGroup, { isRequired: true, label: t('Category'), fieldId: "escalation-category" },
168
318
  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
319
  React.createElement(GridItem, { span: 6 },
170
320
  React.createElement(FormGroup, { isRequired: true, label: t('My region'), fieldId: "escalation-region" },
171
321
  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" }))))),
193
- React.createElement(ModalFooter, null,
194
- React.createElement(Button, { key: "submit", variant: "primary", onClick: onSubmit, "data-tracking-id": "request-rme-submit", isDisabled: submitButtonIsClicked &&
195
- (isPostingComment || isUpdatingCase || createEscalationFetch.isFetching || !hasRequiredInfo()), "aria-label": t('Submit') },
196
- (isPostingComment || isUpdatingCase || createEscalationFetch.isFetching) && (React.createElement(LoadingIndicator, { key: "loading", isInline: true })),
197
- ' ',
198
- t('Submit')),
199
- React.createElement(Button, { key: "cancel", variant: "link", onClick: onCancel, "data-tracking-id": "request-rme-cancel", isDisabled: createEscalationFetch.isFetching || isPostingComment || isUpdatingCase, "aria-label": t('Cancel') }, t('Cancel')))));
322
+ React.createElement(GridItem, { span: 12 },
323
+ React.createElement(FormGroup, { isRequired: true, label: t('Subject'), fieldId: "escalation-subject" },
324
+ submitButtonIsClicked && hasLargeSubject && (React.createElement(FormHelperText, null,
325
+ React.createElement(HelperText, null,
326
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Subject cannot be more than {{limit}} characters', {
327
+ limit: ESCALATION_SUBJECT_LENGTH_LIMIT,
328
+ }))))),
329
+ React.createElement(TextInput, { isRequired: true, validated: (submitButtonIsClicked && isEmpty(formState.subject)) || hasLargeSubject
330
+ ? ValidatedOptions.error
331
+ : 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') }))),
332
+ React.createElement(GridItem, { span: 12 },
333
+ React.createElement(FormGroup, { isRequired: true, label: t('Description'), fieldId: "escalation-description" },
334
+ React.createElement(TextArea, { value: formState.description, onChange: (e, value) => setFormStateValue('description', value), isRequired: true, validated: submitButtonIsClicked && isEmpty(formState.description)
335
+ ? ValidatedOptions.error
336
+ : ValidatedOptions.default, "aria-label": t('Description'), id: "description-textarea", placeholder: t('Provide a detailed comment for us to best assist you'), resizeOrientation: "vertical" }))),
337
+ React.createElement(GridItem, { span: 12 },
338
+ React.createElement(FormGroup, { isRequired: true, label: t('Expectations'), fieldId: "escalation-expectations" },
339
+ React.createElement(TextArea, { onChange: (e, value) => setFormStateValue('expectations', value), isRequired: true, validated: submitButtonIsClicked && isEmpty(formState.expectations)
340
+ ? ValidatedOptions.error
341
+ : 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" }))),
342
+ React.createElement(GridItem, { span: 12 },
343
+ React.createElement(FormGroup, { isRequired: true, label: t('Business impact'), fieldId: "escalation-business-impact" },
344
+ React.createElement(TextArea, { onChange: (e, value) => setFormStateValue('businessImpactDescription', value), isRequired: true, validated: submitButtonIsClicked && isEmpty(formState.businessImpactDescription)
345
+ ? ValidatedOptions.error
346
+ : 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" }))))))));
347
+ const contactDetailsStep = (React.createElement(WizardStep, { id: "contact-details", name: t('Contact details') },
348
+ React.createElement("div", { className: "wizard-step-content" },
349
+ React.createElement(Title, { headingLevel: "h2", size: "2xl", className: "pf-v6-u-mb-lg" }, t('Contact details')),
350
+ React.createElement(Form, { "aria-label": t('Contact details form'), className: "request-escalation-form" },
351
+ React.createElement(Grid, { hasGutter: true },
352
+ React.createElement(GridItem, { span: 6 },
353
+ React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
354
+ t('Name'),
355
+ " "), isRequired: true, fieldId: "contact-name" },
356
+ React.createElement(TextInput, { type: "text", validated: submitButtonIsClicked && isEmpty(formState.contactName)
357
+ ? ValidatedOptions.error
358
+ : ValidatedOptions.default, placeholder: t('Enter your name'), id: "contact-name", value: formState.contactName || '', onChange: (_e, value) => setFormState(Object.assign(Object.assign({}, formState), { contactName: value })), "aria-label": t('Contact name') }),
359
+ submitButtonIsClicked && isEmpty(formState.contactName) && (React.createElement(FormHelperText, null,
360
+ React.createElement(HelperText, null,
361
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Name is required'))))))),
362
+ React.createElement(GridItem, { span: 6 },
363
+ React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
364
+ t('Title'),
365
+ " "), isRequired: true, fieldId: "contact-title" },
366
+ React.createElement(TextInput, { type: "text", validated: submitButtonIsClicked && isEmpty(formState.contactTitle)
367
+ ? ValidatedOptions.error
368
+ : ValidatedOptions.default, placeholder: t('Enter your title (e.g. System Admin, DevOps, Project Man..)'), id: "contact-title", value: formState.contactTitle || '', onChange: (_e, value) => setFormState(Object.assign(Object.assign({}, formState), { contactTitle: value })), "aria-label": t('Contact title') }),
369
+ submitButtonIsClicked && isEmpty(formState.contactTitle) && (React.createElement(FormHelperText, null,
370
+ React.createElement(HelperText, null,
371
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Title is required'))))))),
372
+ React.createElement(GridItem, { span: 12 },
373
+ React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
374
+ t('Contact preference'),
375
+ " "), isRequired: true, fieldId: "contact-preference", role: "radiogroup" },
376
+ React.createElement("div", { className: "pf-v6-u-display-flex pf-v6-u-flex-direction-row contact-preference-group" },
377
+ React.createElement(Radio, { id: "call-me", name: "contact-preference", label: t('Call me'), isChecked: formState.contactPreference === 'call-me', onChange: () => setFormState(Object.assign(Object.assign({}, formState), { contactPreference: 'call-me' })), className: "pf-v6-u-mr-lg" }),
378
+ React.createElement(Radio, { id: "call-if-necessary", name: "contact-preference", label: t('Call only if necessary'), isChecked: formState.contactPreference === 'call-if-necessary', onChange: () => setFormState(Object.assign(Object.assign({}, formState), { contactPreference: 'call-if-necessary' })), className: "pf-v6-u-mr-lg" }),
379
+ React.createElement(Radio, { id: "do-not-call", name: "contact-preference", label: t('Do not call'), isChecked: formState.contactPreference === 'do-not-call', onChange: () => setFormState(Object.assign(Object.assign({}, formState), { contactPreference: 'do-not-call', phoneNumber: '', timezone: '', preferredTimeFrom: '', preferredTimeTo: '' })) })),
380
+ submitButtonIsClicked && !formState.contactPreference && (React.createElement(FormHelperText, null,
381
+ React.createElement(HelperText, null,
382
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Contact preference is required'))))))),
383
+ (formState.contactPreference === 'call-me' ||
384
+ formState.contactPreference === 'call-if-necessary') && (React.createElement(React.Fragment, null,
385
+ React.createElement(GridItem, { span: 12 },
386
+ React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
387
+ t("Case owner's phone number"),
388
+ " "), isRequired: true, fieldId: "phone-number" },
389
+ React.createElement(PhoneInput, { phoneValue: formState.phoneNumber || '', countryCode: ((_a = formState.countryCode) === null || _a === void 0 ? void 0 : _a.replace('+', '')) || '', onPhoneValueChange: (phone) => setFormState(Object.assign(Object.assign({}, formState), { phoneNumber: phone })), onCountryCodeChange: (code) => setFormState(Object.assign(Object.assign({}, formState), { countryCode: code })), validations: submitButtonIsClicked && isEmpty(formState.phoneNumber)
390
+ ? 'error'
391
+ : 'default', isDisabled: false }),
392
+ React.createElement(FormHelperText, null,
393
+ React.createElement(HelperText, null,
394
+ React.createElement(HelperTextItem, { variant: "default" }, t('Note: A current phone/mobile number with the country code helps us support you better. Phone number will be stored in case comments for escalation only – not used for marketing.')))),
395
+ submitButtonIsClicked && isEmpty(formState.phoneNumber) && (React.createElement(FormHelperText, null,
396
+ React.createElement(HelperText, null,
397
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Phone number is required'))))))),
398
+ React.createElement(GridItem, { span: 12 },
399
+ React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
400
+ t('Timezone'),
401
+ " "), isRequired: true, fieldId: "timezone" },
402
+ React.createElement("div", { className: "timezone" },
403
+ React.createElement(SingleSelectDropdown, { selected: TIMEZONE_OPTIONS.find((opt) => opt.value === formState.timezone) || {
404
+ value: '',
405
+ label: 'Select timezone',
406
+ }, options: TIMEZONE_OPTIONS, onSelect: (option) => setFormState(Object.assign(Object.assign({}, formState), { timezone: option.value })), placeholder: t('Select timezone') })),
407
+ submitButtonIsClicked && isEmpty(formState.timezone) && (React.createElement(FormHelperText, null,
408
+ React.createElement(HelperText, null,
409
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Timezone is required'))))))),
410
+ React.createElement(GridItem, { span: 12 },
411
+ React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
412
+ t('Best time to connect regarding escalation'),
413
+ " "), isRequired: true, fieldId: "preferred-time" },
414
+ React.createElement("div", { className: "pf-v6-u-display-flex pf-v6-u-align-items-center pf-v6-u-flex-nowrap time-fields-container" },
415
+ React.createElement("span", { className: "time-label pf-v6-u-mr-sm" }, t('from')),
416
+ React.createElement(TimePicker, { time: formState.preferredTimeFrom || '', onChange: (_event, time) => setFormState(Object.assign(Object.assign({}, formState), { preferredTimeFrom: time })), placeholder: "HH:MM", id: "preferred-time-from", "aria-label": t('Preferred time from'), className: "time-input", is24Hour: true, width: "150px", menuAppendTo: "parent", inputProps: {
417
+ validated: submitButtonIsClicked && isEmpty(formState.preferredTimeFrom)
418
+ ? ValidatedOptions.error
419
+ : ValidatedOptions.default,
420
+ } }),
421
+ React.createElement("span", { className: "time-label pf-v6-u-mx-md" }, t('to')),
422
+ React.createElement(TimePicker, { time: formState.preferredTimeTo || '', onChange: (_event, time) => setFormState(Object.assign(Object.assign({}, formState), { preferredTimeTo: time })), placeholder: "HH:MM", id: "preferred-time-to", "aria-label": t('Preferred time to'), className: "time-input", is24Hour: true, width: "150px", menuAppendTo: "parent", inputProps: {
423
+ validated: submitButtonIsClicked &&
424
+ (isEmpty(formState.preferredTimeTo) ||
425
+ !isValidTimeRange(formState.preferredTimeFrom || '', formState.preferredTimeTo || ''))
426
+ ? ValidatedOptions.error
427
+ : ValidatedOptions.default,
428
+ } })),
429
+ submitButtonIsClicked &&
430
+ (isEmpty(formState.preferredTimeFrom) ||
431
+ isEmpty(formState.preferredTimeTo)) && (React.createElement(FormHelperText, null,
432
+ React.createElement(HelperText, null,
433
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Preferred time is required'))))),
434
+ submitButtonIsClicked &&
435
+ formState.preferredTimeFrom &&
436
+ formState.preferredTimeTo &&
437
+ !isValidTimeRange(formState.preferredTimeFrom, formState.preferredTimeTo) && (React.createElement(FormHelperText, null,
438
+ React.createElement(HelperText, null,
439
+ React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('End time must be after start time'))))))))))))));
440
+ return (React.createElement(Modal, { id: "request-mgmt-escalation-modal", className: "request-escalation-modal pf-m-width-auto", isOpen: props.show, onClose: onCancel, "aria-label": t('Request an escalation'), variant: ModalVariant.large },
441
+ React.createElement("div", { className: "modal-wizard-header" },
442
+ React.createElement(ModalHeader, { title: t('Request an escalation') }),
443
+ React.createElement("a", { href: "/support/escalation", target: "_blank", rel: "noopener noreferrer", className: "pf-v6-u-font-size-sm pf-v6-u-color-200" },
444
+ React.createElement(Trans, null, "Learn more about escalation cases."))),
445
+ React.createElement(ModalBody, null,
446
+ creationError && (React.createElement(AlertMessage, { variant: AlertType.DANGER, title: t('Could not create case escalation'), show: creationError, onClose: onErrorClose, isInline: true, className: "pf-v6-u-mb-md", "aria-label": t('Could not create case escalation') })),
447
+ React.createElement(Wizard, { navAriaLabel: t('Escalation request steps'), footer: CustomFooter },
448
+ escalationDetailsStep,
449
+ contactDetailsStep))));
200
450
  }
@@ -5,6 +5,8 @@ import { IEntitlement } from '@cee-eng/hydrajs/@types/api/public/entitlements';
5
5
  import { IAccount } from '@cee-eng/hydrajs/@types/models/account';
6
6
  import { ICaseNotificationAddresses } from '@cee-eng/hydrajs/@types/models/case';
7
7
  import { IContact } from '@cee-eng/hydrajs/@types/models/contact';
8
+ import { ICaseEscalation } from '@cee-eng/hydrajs/@types/models/escalation';
9
+ import { ISingleSelectDropdownOption } from '@rh-support/components';
8
10
  import { IAction, IAPIError, IApiResponseDetails } from '@rh-support/types/shared';
9
11
  import { Dispatch } from 'react';
10
12
  import { ICVEWorkflowRecommendation } from '../models/caseCreationWorkflows';
@@ -244,4 +246,15 @@ export declare const ORG_ADMIN_SEND_NOTIFCATION_KBASE_LINK = "https://access.red
244
246
  export declare const NON_ORG_ADMIN_SEND_NOTIFCATION_KBASE_LINK = "https://access.redhat.com/articles/5967831";
245
247
  export declare const excludedCaseTypesforARH: string[];
246
248
  export declare const appSourceId_ARH = "PCM-001";
249
+ export interface IEscalationFormState extends Partial<ICaseEscalation> {
250
+ contactName?: string;
251
+ contactTitle?: string;
252
+ contactPreference?: string;
253
+ countryCode?: string;
254
+ phoneNumber?: string;
255
+ timezone?: string;
256
+ preferredTimeFrom?: string;
257
+ preferredTimeTo?: string;
258
+ }
259
+ export declare const TIMEZONE_OPTIONS: ISingleSelectDropdownOption[];
247
260
  //# sourceMappingURL=CaseConstNTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CaseConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseConstNTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CaseConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseConstNTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACjH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEnF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,eAAO,MAAM,gCAAgC,QAAQ,CAAC;AAEtD,eAAO,MAAM,mCAAmC,MAAM,CAAC;AACvD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AACnD,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAC9C,eAAO,MAAM,iCAAiC,QAAQ,CAAC;AACvD,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,qCAAqC,OAAO,CAAC;AAC1D,eAAO,MAAM,qCAAqC,OAAO,CAAC;AAC1D,eAAO,MAAM,iCAAiC,QAAQ,CAAC;AACvD,eAAO,MAAM,kCAAkC,QAAQ,CAAC;AACxD,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAC/C,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,sCAAsC,MAAM,CAAC;AAC1D,eAAO,MAAM,kDAAkD,MAAM,CAAC;AACtE,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAI9C,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAC9C,eAAO,MAAM,uCAAuC,OAAO,CAAC;AAC5D,eAAO,MAAM,8BAA8B,OAAO,CAAC;AACnD,eAAO,MAAM,qCAAqC,OAAO,CAAC;AAC1D,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,eAAO,MAAM,4BAA4B,2DAA2D,CAAC;AAGrG,oBAAY,kBAAkB;IAC1B,KAAK,wEAAwE;IAC7E,oBAAoB,+CAA+C;IACnE,WAAW,4DAA4D;IACvE,kBAAkB,2FAA2F;IAC7G,SAAS,iCAAiC;CAC7C;AAED,eAAO,MAAM,eAAe,iEAAiE,CAAC;AAC9F,eAAO,MAAM,eAAe,iEAAiE,CAAC;AAC9F,eAAO,MAAM,eAAe,iEAAiE,CAAC;AAC9F,eAAO,MAAM,qBAAqB,kEAAkE,CAAC;AAErG,0BAAkB,qBAAqB;IACnC,YAAY,gBAAgB;IAC5B,QAAQ,aAAa;IACrB,OAAO,YAAY;CACtB;AACD,0BAAkB,sBAAsB;IACpC,KAAK,eAAe;IACpB,KAAK,aAAa;IAClB,KAAK,eAAe;IACpB,KAAK,YAAY;CACpB;AAGD,eAAO,MAAM,mBAAmB;;;;;;;;CAQ/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmB7B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;CAK/B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;CAStC,CAAC;AAEF,eAAO,MAAM,4BAA4B,yEAAyE,CAAC;AAEnH,oBAAY,oBAAoB;IAC5B,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,+BAA+B,oCAAoC;IACnE,cAAc,mBAAmB;IACjC,oBAAoB,yBAAyB;IAC7C,sBAAsB,2BAA2B;IACjD,uBAAuB,4BAA4B;IACnD,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;IAC3C,wBAAwB,6BAA6B;IACrD,eAAe,oBAAoB;IACnC,oBAAoB,yBAAyB;IAC7C,sBAAsB,2BAA2B;IACjD,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,iBAAiB,sBAAsB;IACvC,wBAAwB,6BAA6B;IACrD,mBAAmB,wBAAwB;IAC3C,kBAAkB,uBAAuB;IACzC,8BAA8B,mCAAmC;IACjE,kBAAkB,uBAAuB;IACzC,6BAA6B,kCAAkC;IAC/D,kCAAkC,uCAAuC;IACzE,gCAAgC,qCAAqC;IACrE,sBAAsB,2BAA2B;IACjD,yBAAyB,8BAA8B;IACvD,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IACvC,0BAA0B,+BAA+B;IACzD,wBAAwB,6BAA6B;IACrD,yCAAyC,8CAA8C;IACvF,8CAA8C,mDAAmD;IACjG,cAAc,mBAAmB;IACjC,kBAAkB,uBAAuB;CAC5C;AAED,eAAO,MAAM,gBAAgB,EAAE,UAqG9B,CAAC;AAEF,MAAM,WAAW,UAAU;IACvB,iBAAiB,EAAE,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9D,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACnC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,4BAA4B,EAAE,QAAQ,EAAE,CAAC;IACzC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,wBAAwB,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC/C,qBAAqB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,yBAAyB,EAAE,OAAO,CAAC;IACnC,uBAAuB,EAAE,OAAO,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,wBAAwB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,sBAAsB,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,aAAa,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7C,gBAAgB,EAAE,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC;IACpD,sBAAsB,EAAE,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1D,gBAAgB,EAAE,mBAAmB,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;IAC7E,kBAAkB,EAAE,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC;IACxD,sBAAsB,EAAE,OAAO,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,SAAS,CAAC;IAC5B,0BAA0B,EAAE,OAAO,CAAC;IACpC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,oCAAoC,EAAE,OAAO,CAAC;IAC9C,sCAAsC,EAAE,OAAO,CAAC;IAChD,eAAe,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B,EAAE,OAAO,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sCAAsC,CAAC,EAAE,OAAO,CAAC;IACjD,kDAAkD,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mCAAmC,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IAChF,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,yBAAyB,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACzD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAuB,SAAQ,UAAU;CAAG;AAC7D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AACpF,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;AAEhE,eAAO,MAAM,qCAAqC,+CAA+C,CAAC;AAClG,eAAO,MAAM,yCAAyC,+CAA+C,CAAC;AAEtG,eAAO,MAAM,uBAAuB,UAAqD,CAAC;AAC1F,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,MAAM,WAAW,oBAAqB,SAAQ,OAAO,CAAC,eAAe,CAAC;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,gBAAgB,EAAE,2BAA2B,EAWzD,CAAC"}
@@ -236,3 +236,15 @@ export const ORG_ADMIN_SEND_NOTIFCATION_KBASE_LINK = 'https://access.redhat.com/
236
236
  export const NON_ORG_ADMIN_SEND_NOTIFCATION_KBASE_LINK = 'https://access.redhat.com/articles/5967831';
237
237
  export const excludedCaseTypesforARH = ['Feature / Enhancement Request', 'Certification']; //Feature / Enhancement Request casetype is alias for Idea on PCM UI
238
238
  export const appSourceId_ARH = 'PCM-001';
239
+ export const TIMEZONE_OPTIONS = [
240
+ { value: 'UTC-08:00', label: 'UTC-08:00 (Pacific Standard Time)' },
241
+ { value: 'UTC-07:00', label: 'UTC-07:00 (Mountain Standard Time)' },
242
+ { value: 'UTC-06:00', label: 'UTC-06:00 (Central Standard Time)' },
243
+ { value: 'UTC-05:00', label: 'UTC-05:00 (Eastern Standard Time)' },
244
+ { value: 'UTC+00:00', label: 'UTC+00:00 (Greenwich Mean Time)' },
245
+ { value: 'UTC+01:00', label: 'UTC+01:00 (Central European Time)' },
246
+ { value: 'UTC+05:30', label: 'UTC+05:30 (India Standard Time)' },
247
+ { value: 'UTC+08:00', label: 'UTC+08:00 (China, HK, Singapore Standard Time)' },
248
+ { value: 'UTC+09:00', label: 'UTC+09:00 (Japan Standard Time)' },
249
+ { value: 'UTC+10:00', label: 'UTC+10:00 (Australian Eastern Standard Time)' },
250
+ ];
@@ -406,37 +406,213 @@ div#cep-details-modal.pf-v6-c-modal-box__body {
406
406
  }
407
407
 
408
408
  // To override font weight in Request Escalation Form - PCM-11644
409
+ // Target the modal box with the specific width-auto class
410
+ .pf-v6-c-modal-box.pf-m-width-auto {
411
+ max-width: 70vw !important;
412
+ min-width: 900px !important;
413
+ width: 70vw !important;
414
+
415
+ @media (max-width: 992px) {
416
+ min-width: auto !important;
417
+ max-width: 95vw !important;
418
+ width: 95vw !important;
419
+ }
420
+
421
+ // Override the global 50% max-width rule for large screens
422
+ @media (min-width: 1320px) {
423
+ width: 70vw !important;
424
+ max-width: 70vw !important;
425
+ }
426
+ }
427
+
409
428
  div#request-mgmt-escalation-modal.request-escalation-modal {
410
- div.pf-v6-c-modal-box__body {
411
- form.pf-v6-c-form.request-escalation-form {
412
- .pf-m-textarea textarea {
413
- resize: none !important;
429
+ .modal-wizard-header {
430
+ background-color: #f0f0f0;
431
+ padding: 1.5rem;
432
+ margin-top: -1px;
433
+ font-size: 0.875rem;
434
+ border-bottom: 1px solid #d2d2d2;
435
+
436
+ a {
437
+ font-size: 14px;
438
+ }
439
+
440
+ .pf-v6-c-modal-box__header {
441
+ padding: 0 !important;
442
+ margin-bottom: 8px;
443
+ }
444
+
445
+ .pf-v6-c-modal-box__title {
446
+ padding: 0 !important;
447
+ font-size: 28px;
448
+ font-weight: 500;
449
+ }
450
+ }
451
+
452
+ .pf-v6-c-modal-box__body {
453
+ padding: 0 !important;
454
+
455
+ & > div:first-child {
456
+ // margin-bottom: 1.5rem;
457
+
458
+ p {
459
+ color: var(--pf-v6-global--Color--200);
460
+ margin-bottom: 0.5rem;
414
461
  }
415
462
 
416
- div.pf-v6-l-grid.pf-m-all-12-col-on-md.pf-m-gutter {
417
- div.pf-v6-l-grid__item.pf-m-6-col {
418
- div.pf-v6-c-form__group {
419
- div.pf-v6-c-form__group-label {
420
- label.pf-v6-c-form__label {
421
- span.pf-v6-c-form__label-text {
422
- font-weight: 600 !important;
423
- }
424
- }
425
- }
426
- }
427
- }
428
- div.pf-v6-c-form__group {
429
- div.pf-v6-c-form__group-label {
430
- label.pf-v6-c-form__label {
431
- span.pf-v6-c-form__label-text {
432
- font-weight: 600 !important;
433
- }
434
- }
435
- }
436
- }
463
+ a {
464
+ color: var(--pf-v6-global--link--Color);
465
+ font-size: 0.875rem;
466
+ }
467
+ }
468
+ }
469
+
470
+ // Wizard specific styles
471
+ .pf-v6-c-wizard {
472
+ height: 600px !important;
473
+ border: 1px solid var(--pf-v6-global--BorderColor--100) !important;
474
+ border-radius: 3px;
475
+ overflow: hidden;
476
+ background: white;
477
+ display: flex;
478
+
479
+ .pf-v6-c-wizard__header {
480
+ display: none;
481
+ }
482
+
483
+ .pf-v6-c-wizard__main {
484
+ overflow-y: auto;
485
+ }
486
+
487
+ .pf-v6-c-wizard__body {
488
+ padding: 2rem;
489
+ flex: 1;
490
+ overflow-y: auto;
491
+ overflow-x: hidden;
492
+ }
493
+
494
+ .pf-v6-c-wizard__footer {
495
+ padding: var(--global-spacer-lg, 24px);
496
+ background-color: var(--pf-v6-global--BackgroundColor--100);
497
+ border-top: 1px solid var(--pf-v6-global--BorderColor--100);
498
+ display: flex;
499
+ gap: 0.5rem;
500
+ justify-content: flex-start;
501
+ flex-shrink: 0;
502
+ border-top: 1px solid #d2d2d2;
503
+
504
+ button:last-child {
505
+ margin-left: 48px;
506
+ }
507
+ }
508
+ }
509
+
510
+ .wizard-step-content {
511
+ h2 {
512
+ font-size: var(--global-font-size-lg, 18px);
513
+ font-weight: 500;
514
+ margin-bottom: 1.5rem;
515
+ }
516
+ }
517
+
518
+ form.pf-v6-c-form.request-escalation-form {
519
+ .pf-m-textarea textarea {
520
+ resize: vertical !important;
521
+ min-height: 80px;
522
+ }
523
+
524
+ #description-textarea {
525
+ min-height: 100px;
526
+ }
527
+
528
+ .pf-v6-c-form__group {
529
+ margin-bottom: 0.5rem !important;
530
+ }
531
+
532
+ .pf-v6-u-flex-nowrap {
533
+ white-space: nowrap;
534
+ }
535
+
536
+ .pf-v6-c-form__label-text {
537
+ font-weight: 600 !important;
538
+ }
539
+ }
540
+ .pf-v6-c-radio__input {
541
+ margin: 0 !important;
542
+ }
543
+
544
+ .contact-preference-group {
545
+ gap: 24px !important;
546
+
547
+ .pf-v6-c-radio {
548
+ margin-bottom: 0 !important;
549
+
550
+ .pf-v6-c-radio__label {
551
+ font-weight: normal !important;
552
+ margin-left: 8px !important;
437
553
  }
438
554
  }
439
555
  }
556
+
557
+ .request-escalation-form {
558
+ .pf-v6-l-grid {
559
+ --pf-v6-l-grid--m-gutter--GridGap: 0.5rem !important;
560
+ }
561
+ }
562
+
563
+ .phone-number-input {
564
+ width: 100% !important;
565
+
566
+ .phone-number-select {
567
+ min-width: 110px !important;
568
+
569
+ button {
570
+ min-width: 110px !important;
571
+ }
572
+ }
573
+
574
+ .pf-v6-c-input-group__item:first-child {
575
+ margin-right: 8px !important;
576
+ }
577
+ }
578
+
579
+ .timezone {
580
+ width: 154px !important;
581
+ max-width: 154px !important;
582
+ }
583
+
584
+ // Time fields container styling
585
+ .time-fields-container {
586
+ display: flex !important;
587
+ align-items: center !important;
588
+ gap: 12px !important;
589
+
590
+ .time-label {
591
+ font-size: 14px !important;
592
+ color: var(--pf-v6-global--Color--100) !important;
593
+ flex-shrink: 0 !important;
594
+ margin: 0 !important;
595
+ }
596
+
597
+ // Style the PatternFly TimePicker
598
+ .time-input {
599
+ .pf-v6-c-text-input {
600
+ width: 150px !important;
601
+ }
602
+
603
+ // Force dropdown to open downward
604
+ .pf-v6-c-menu {
605
+ top: 100% !important;
606
+ bottom: auto !important;
607
+ transform: none !important;
608
+ }
609
+ }
610
+ }
611
+
612
+ // Additional phone number field overrides
613
+ #phone-number {
614
+ width: 100% !important;
615
+ }
440
616
  }
441
617
 
442
618
  // To override font weight on reopen case modal - PCM-11644
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/troubleshoot",
3
- "version": "2.6.82",
3
+ "version": "2.6.83",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -133,5 +133,5 @@
133
133
  "defaults and supports es6-module",
134
134
  "maintained node versions"
135
135
  ],
136
- "gitHead": "bfa49b79bd75877903d8f4ac09f322718b2401fd"
136
+ "gitHead": "79e5da0bd031bf218194ac7d7b802e0444cce575"
137
137
  }