@rh-support/troubleshoot 2.6.86 → 2.6.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
  2. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +52 -44
  3. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts.map +1 -1
  4. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.js +13 -10
  5. package/lib/esm/i18n/template-de.d.ts +41 -2
  6. package/lib/esm/i18n/template-de.d.ts.map +1 -1
  7. package/lib/esm/i18n/template-de.js +41 -2
  8. package/lib/esm/i18n/template-es.d.ts +41 -2
  9. package/lib/esm/i18n/template-es.d.ts.map +1 -1
  10. package/lib/esm/i18n/template-es.js +41 -2
  11. package/lib/esm/i18n/template-fr.d.ts +41 -2
  12. package/lib/esm/i18n/template-fr.d.ts.map +1 -1
  13. package/lib/esm/i18n/template-fr.js +41 -2
  14. package/lib/esm/i18n/template-it.d.ts +41 -2
  15. package/lib/esm/i18n/template-it.d.ts.map +1 -1
  16. package/lib/esm/i18n/template-it.js +41 -2
  17. package/lib/esm/i18n/template-jp.d.ts +41 -2
  18. package/lib/esm/i18n/template-jp.d.ts.map +1 -1
  19. package/lib/esm/i18n/template-jp.js +41 -2
  20. package/lib/esm/i18n/template-ko.d.ts +41 -2
  21. package/lib/esm/i18n/template-ko.d.ts.map +1 -1
  22. package/lib/esm/i18n/template-ko.js +41 -2
  23. package/lib/esm/i18n/template-pt.d.ts +41 -2
  24. package/lib/esm/i18n/template-pt.d.ts.map +1 -1
  25. package/lib/esm/i18n/template-pt.js +41 -2
  26. package/lib/esm/i18n/template-ru.d.ts +6 -1
  27. package/lib/esm/i18n/template-ru.d.ts.map +1 -1
  28. package/lib/esm/i18n/template-ru.js +6 -1
  29. package/lib/esm/i18n/template-zh.d.ts +18 -0
  30. package/lib/esm/i18n/template-zh.d.ts.map +1 -1
  31. package/lib/esm/i18n/template-zh.js +18 -0
  32. package/lib/esm/scss/_pf-overrides.scss +4 -8
  33. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"AAuCA,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,qBAk3BnD"}
1
+ {"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"AAsCA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAqBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAID,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,qBA63BnD"}
@@ -11,7 +11,6 @@ import { escalations, publicApi } from '@cee-eng/hydrajs';
11
11
  import { Button, Form, FormGroup, FormHelperText, Grid, GridItem, HelperText, HelperTextItem, Modal, ModalBody, ModalHeader, ModalVariant, Radio, TextArea, TextInput, TimePicker, Title, ValidatedOptions, Wizard, WizardNav, WizardNavItem, WizardStep, } from '@patternfly/react-core';
12
12
  import { AlertMessage, AlertType, PhoneInput, SingleSelectDropdown, ToastNotification, useFetch, } from '@rh-support/components';
13
13
  import { useGlobalStateContext } from '@rh-support/react-context';
14
- import isEmpty from 'lodash/isEmpty';
15
14
  import React, { useEffect, useState } from 'react';
16
15
  import { Trans, useTranslation } from 'react-i18next';
17
16
  import { useCaseDispatch } from '../../../context/CaseContext';
@@ -24,7 +23,7 @@ import { updateDiscussionStateComments } from '../../../reducers/CaseDiscussionT
24
23
  import { checkForCaseStatusToggleOnAttachOrComment, fetchCaseDetails } from '../../../reducers/CaseReducer';
25
24
  const customerGEOKeys = Object.keys(CustomerGEOs);
26
25
  export function RequestEscalationModal(props) {
27
- var _a;
26
+ var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
28
27
  const { globalMetadataState: { loggedInUser, loggedInUserRights }, } = useGlobalStateContext();
29
28
  const { t } = useTranslation();
30
29
  const [categories, setCategories] = useState([]);
@@ -48,6 +47,11 @@ export function RequestEscalationModal(props) {
48
47
  const [hasLargeSubject, setHasLargeSubject] = useState(false);
49
48
  const [submitButtonIsClicked, setSubmitSaveButtonIsClicked] = useState(false);
50
49
  const [isPhoneInvalid, setIsPhoneInvalid] = useState(false);
50
+ const isPhoneNumberValid = (phoneNumber) => {
51
+ const trimmedPhone = (phoneNumber || '').trim();
52
+ // Phone number should have some digits other than country code to be considered valid
53
+ return trimmedPhone.length >= 5;
54
+ };
51
55
  // Function to check if "to" time is after "from" time
52
56
  const isValidTimeRange = (fromTime, toTime) => {
53
57
  if (!fromTime || !toTime)
@@ -83,7 +87,8 @@ export function RequestEscalationModal(props) {
83
87
  formState.preferredTimeTo) {
84
88
  return (hasAllFields &&
85
89
  isValidTimeRange(formState.preferredTimeFrom, formState.preferredTimeTo) &&
86
- !isPhoneInvalid);
90
+ !isPhoneInvalid &&
91
+ isPhoneNumberValid(formState.phoneNumber));
87
92
  }
88
93
  return hasAllFields;
89
94
  };
@@ -190,7 +195,7 @@ export function RequestEscalationModal(props) {
190
195
  const hour12 = hour % 12 || 12;
191
196
  return `${hour12}:${minutes}${ampm}`;
192
197
  };
193
- 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', {
198
+ const fullComment = t('### Request Management Escalation:\n\n**Name**\n{{contactName}}\n\n**Title**\n{{contactTitle}}\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', {
194
199
  category: formState.rmeCategory,
195
200
  subject: formState.subject,
196
201
  description: formState.description,
@@ -269,25 +274,26 @@ export function RequestEscalationModal(props) {
269
274
  // Validate current step
270
275
  const isCurrentStepValid = () => {
271
276
  if (activeStep.id === 'escalation-details') {
272
- return (!isEmpty(formState.rmeCategory) &&
273
- !isEmpty(formState.geo) &&
274
- !isEmpty(formState.subject) &&
277
+ return ((formState.rmeCategory || '').trim().length > 0 &&
278
+ (formState.geo || '').trim().length > 0 &&
279
+ (formState.subject || '').trim().length > 0 &&
275
280
  !hasLargeSubject &&
276
- !isEmpty(formState.description) &&
277
- !isEmpty(formState.expectations) &&
278
- !isEmpty(formState.businessImpactDescription));
281
+ (formState.description || '').trim().length > 0 &&
282
+ (formState.expectations || '').trim().length > 0 &&
283
+ (formState.businessImpactDescription || '').trim().length > 0);
279
284
  }
280
285
  else if (activeStep.id === 'contact-details') {
281
- const baseValidation = !isEmpty(formState.contactName) &&
282
- !isEmpty(formState.contactTitle) &&
283
- !isEmpty(formState.contactPreference);
286
+ const baseValidation = (formState.contactName || '').trim().length > 0 &&
287
+ (formState.contactTitle || '').trim().length > 0 &&
288
+ (formState.contactPreference || '').trim().length > 0;
284
289
  // Additional validation if call options are selected
285
290
  if (formState.contactPreference === 'call-me' || formState.contactPreference === 'call-if-necessary') {
286
291
  return (baseValidation &&
287
- !isEmpty(formState.phoneNumber) &&
292
+ isPhoneNumberValid(formState.phoneNumber) &&
288
293
  !isPhoneInvalid &&
289
- !isEmpty(formState.preferredTimeFrom) &&
290
- !isEmpty(formState.preferredTimeTo));
294
+ (formState.preferredTimeFrom || '').trim().length > 0 &&
295
+ (formState.preferredTimeTo || '').trim().length > 0 &&
296
+ (formState.timezone || '').trim().length > 0);
291
297
  }
292
298
  return baseValidation;
293
299
  }
@@ -311,7 +317,7 @@ export function RequestEscalationModal(props) {
311
317
  setSubmitSaveButtonIsClicked(false);
312
318
  goToPrevStep({});
313
319
  }, isDisabled: isLoading, "data-tracking-id": "request-rme-back" }, t('Back'))),
314
- 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')),
320
+ React.createElement(Button, { variant: "primary", onClick: isLastStep ? handleSubmit : handleNext, isDisabled: isLoading || (submitButtonIsClicked && !isCurrentStepValid()), isLoading: isLoading, "data-tracking-id": isLastStep ? 'request-rme-submit' : 'request-rme-next' }, isLastStep ? t('Submit') : t('Next')),
315
321
  React.createElement(Button, { variant: "link", onClick: onCancel, isDisabled: isLoading, "data-tracking-id": "request-rme-cancel" }, t('Cancel'))));
316
322
  };
317
323
  const escalationDetailsStep = (React.createElement(WizardStep, { id: "escalation-details", name: t('Escalation details') },
@@ -321,10 +327,10 @@ export function RequestEscalationModal(props) {
321
327
  React.createElement(Grid, { hasGutter: true },
322
328
  React.createElement(GridItem, { span: 6 },
323
329
  React.createElement(FormGroup, { isRequired: true, label: t('Category'), fieldId: "escalation-category" },
324
- 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 }))),
330
+ React.createElement(SingleSelectDropdown, { id: "customer-category-select", ariaLabel: t('Category'), selected: selectedCategory, options: categoryOptions, isDisabled: false, isLoading: isCategoriesFetching, isInvalid: submitButtonIsClicked && !((_a = formState.rmeCategory) === null || _a === void 0 ? void 0 : _a.trim()), placeholder: t('Select an option that best fits'), onSelect: (option) => setCategoryState(option), isScrollable: true }))),
325
331
  React.createElement(GridItem, { span: 6 },
326
332
  React.createElement(FormGroup, { isRequired: true, label: t('My region'), fieldId: "escalation-region" },
327
- 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) }))),
333
+ React.createElement(SingleSelectDropdown, { ariaLabel: t('My region'), id: "customer-geo-select", selected: selectedGeo, options: geoOptions, isInvalid: submitButtonIsClicked && !((_b = formState.geo) === null || _b === void 0 ? void 0 : _b.trim()), placeholder: t('Select a location'), onSelect: (option) => setGeoState(option) }))),
328
334
  React.createElement(GridItem, { span: 12 },
329
335
  React.createElement(FormGroup, { isRequired: true, label: t('Subject'), fieldId: "escalation-subject" },
330
336
  submitButtonIsClicked && hasLargeSubject && (React.createElement(FormHelperText, null,
@@ -332,33 +338,33 @@ export function RequestEscalationModal(props) {
332
338
  React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Subject cannot be more than {{limit}} characters', {
333
339
  limit: ESCALATION_SUBJECT_LENGTH_LIMIT,
334
340
  }))))),
335
- React.createElement(TextInput, { isRequired: true, validated: (submitButtonIsClicked && isEmpty(formState.subject)) || hasLargeSubject
341
+ React.createElement(TextInput, { isRequired: true, validated: (submitButtonIsClicked && !((_c = formState.subject) === null || _c === void 0 ? void 0 : _c.trim())) || hasLargeSubject
336
342
  ? ValidatedOptions.error
337
343
  : 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') }))),
338
344
  React.createElement(GridItem, { span: 12 },
339
345
  React.createElement(FormGroup, { isRequired: true, label: t('Description'), fieldId: "escalation-description" },
340
- React.createElement(TextArea, { value: formState.description, onChange: (e, value) => setFormStateValue('description', value), isRequired: true, validated: submitButtonIsClicked && isEmpty(formState.description)
346
+ React.createElement(TextArea, { value: formState.description, onChange: (e, value) => setFormStateValue('description', value), isRequired: true, validated: submitButtonIsClicked && !((_d = formState.description) === null || _d === void 0 ? void 0 : _d.trim())
341
347
  ? ValidatedOptions.error
342
348
  : ValidatedOptions.default, "aria-label": t('Description'), id: "description-textarea", placeholder: t('Provide a detailed comment for us to best assist you'), resizeOrientation: "vertical" }))),
343
349
  React.createElement(GridItem, { span: 12 },
344
350
  React.createElement(FormGroup, { isRequired: true, label: t('Expectations'), fieldId: "escalation-expectations" },
345
- React.createElement(TextArea, { onChange: (e, value) => setFormStateValue('expectations', value), isRequired: true, validated: submitButtonIsClicked && isEmpty(formState.expectations)
351
+ React.createElement(TextArea, { onChange: (e, value) => setFormStateValue('expectations', value), isRequired: true, validated: submitButtonIsClicked && !((_f = formState.expectations) === null || _f === void 0 ? void 0 : _f.trim())
346
352
  ? ValidatedOptions.error
347
353
  : 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" }))),
348
354
  React.createElement(GridItem, { span: 12 },
349
355
  React.createElement(FormGroup, { isRequired: true, label: t('Business impact'), fieldId: "escalation-business-impact" },
350
- React.createElement(TextArea, { onChange: (e, value) => setFormStateValue('businessImpactDescription', value), isRequired: true, validated: submitButtonIsClicked && isEmpty(formState.businessImpactDescription)
356
+ React.createElement(TextArea, { onChange: (e, value) => setFormStateValue('businessImpactDescription', value), isRequired: true, validated: submitButtonIsClicked && !((_g = formState.businessImpactDescription) === null || _g === void 0 ? void 0 : _g.trim())
351
357
  ? ValidatedOptions.error
352
358
  : 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" }))))))));
353
359
  // Check if first step is completed
354
360
  const isFirstStepComplete = () => {
355
- return (!isEmpty(formState.rmeCategory) &&
356
- !isEmpty(formState.geo) &&
357
- !isEmpty(formState.subject) &&
361
+ return ((formState.rmeCategory || '').trim().length > 0 &&
362
+ (formState.geo || '').trim().length > 0 &&
363
+ (formState.subject || '').trim().length > 0 &&
358
364
  !hasLargeSubject &&
359
- !isEmpty(formState.description) &&
360
- !isEmpty(formState.expectations) &&
361
- !isEmpty(formState.businessImpactDescription));
365
+ (formState.description || '').trim().length > 0 &&
366
+ (formState.expectations || '').trim().length > 0 &&
367
+ (formState.businessImpactDescription || '').trim().length > 0);
362
368
  };
363
369
  const customNav = (isExpanded, steps, activeStep, goToStepByIndex) => (React.createElement(WizardNav, { isExpanded: isExpanded }, steps.map((step, index) => {
364
370
  // Disable the second step if first step is not complete
@@ -374,20 +380,20 @@ export function RequestEscalationModal(props) {
374
380
  React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
375
381
  t('Name'),
376
382
  " "), isRequired: true, fieldId: "contact-name" },
377
- React.createElement(TextInput, { type: "text", validated: submitButtonIsClicked && isEmpty(formState.contactName)
383
+ React.createElement(TextInput, { type: "text", validated: submitButtonIsClicked && !((_h = formState.contactName) === null || _h === void 0 ? void 0 : _h.trim())
378
384
  ? ValidatedOptions.error
379
385
  : 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') }),
380
- submitButtonIsClicked && isEmpty(formState.contactName) && (React.createElement(FormHelperText, null,
386
+ submitButtonIsClicked && !((_j = formState.contactName) === null || _j === void 0 ? void 0 : _j.trim()) && (React.createElement(FormHelperText, null,
381
387
  React.createElement(HelperText, null,
382
388
  React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Name is required'))))))),
383
389
  React.createElement(GridItem, { span: 6 },
384
390
  React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
385
391
  t('Title'),
386
392
  " "), isRequired: true, fieldId: "contact-title" },
387
- React.createElement(TextInput, { type: "text", validated: submitButtonIsClicked && isEmpty(formState.contactTitle)
393
+ React.createElement(TextInput, { type: "text", validated: submitButtonIsClicked && !((_k = formState.contactTitle) === null || _k === void 0 ? void 0 : _k.trim())
388
394
  ? ValidatedOptions.error
389
395
  : 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') }),
390
- submitButtonIsClicked && isEmpty(formState.contactTitle) && (React.createElement(FormHelperText, null,
396
+ submitButtonIsClicked && !((_l = formState.contactTitle) === null || _l === void 0 ? void 0 : _l.trim()) && (React.createElement(FormHelperText, null,
391
397
  React.createElement(HelperText, null,
392
398
  React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Title is required'))))))),
393
399
  React.createElement(GridItem, { span: 12 },
@@ -395,8 +401,8 @@ export function RequestEscalationModal(props) {
395
401
  t('Contact preference'),
396
402
  " "), isRequired: true, fieldId: "contact-preference", role: "radiogroup" },
397
403
  React.createElement("div", { className: "pf-v6-u-display-flex pf-v6-u-flex-direction-row contact-preference-group" },
398
- 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" }),
399
- 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" }),
404
+ 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' })), style: { marginRight: '24px' } }),
405
+ 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' })), style: { marginRight: '8px' } }),
400
406
  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: '' })) })),
401
407
  submitButtonIsClicked && !formState.contactPreference && (React.createElement(FormHelperText, null,
402
408
  React.createElement(HelperText, null,
@@ -407,14 +413,16 @@ export function RequestEscalationModal(props) {
407
413
  React.createElement(FormGroup, { label: React.createElement(React.Fragment, null,
408
414
  t("Case owner's phone number"),
409
415
  " "), isRequired: true, fieldId: "phone-number" },
410
- 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)) ||
416
+ React.createElement(PhoneInput, { phoneValue: formState.phoneNumber || '', countryCode: ((_m = formState.countryCode) === null || _m === void 0 ? void 0 : _m.replace('+', '')) || '', onPhoneValueChange: (phone) => setFormState(Object.assign(Object.assign({}, formState), { phoneNumber: phone })), onCountryCodeChange: (code) => setFormState(Object.assign(Object.assign({}, formState), { countryCode: code })), validations: (submitButtonIsClicked && !isPhoneNumberValid(formState.phoneNumber)) ||
411
417
  isPhoneInvalid
412
418
  ? 'error'
413
419
  : 'default', isDisabled: false, invalid: isPhoneInvalid, setInvalid: setIsPhoneInvalid }),
414
420
  React.createElement(FormHelperText, null,
415
421
  React.createElement(HelperText, null,
416
422
  React.createElement(HelperTextItem, { variant: "default" }, t('Note: A current phone/mobile number with the country code helps us support you better. Phone number will be stored in case comments for escalation only – not used for marketing.')))),
417
- submitButtonIsClicked && isEmpty(formState.phoneNumber) && !isPhoneInvalid && (React.createElement(FormHelperText, null,
423
+ submitButtonIsClicked &&
424
+ !isPhoneNumberValid(formState.phoneNumber) &&
425
+ !isPhoneInvalid && (React.createElement(FormHelperText, null,
418
426
  React.createElement(HelperText, null,
419
427
  React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Phone number is required'))))),
420
428
  isPhoneInvalid && (React.createElement(FormHelperText, null,
@@ -429,7 +437,7 @@ export function RequestEscalationModal(props) {
429
437
  value: '',
430
438
  label: 'Select timezone',
431
439
  }, options: TIMEZONE_OPTIONS, onSelect: (option) => setFormState(Object.assign(Object.assign({}, formState), { timezone: option.value })), placeholder: t('Select timezone') })),
432
- submitButtonIsClicked && isEmpty(formState.timezone) && (React.createElement(FormHelperText, null,
440
+ submitButtonIsClicked && !((_o = formState.timezone) === null || _o === void 0 ? void 0 : _o.trim()) && (React.createElement(FormHelperText, null,
433
441
  React.createElement(HelperText, null,
434
442
  React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Timezone is required'))))))),
435
443
  React.createElement(GridItem, { span: 12 },
@@ -439,26 +447,26 @@ export function RequestEscalationModal(props) {
439
447
  React.createElement("div", { className: "pf-v6-u-display-flex pf-v6-u-align-items-center pf-v6-u-flex-nowrap time-fields-container" },
440
448
  React.createElement("span", { className: "time-label pf-v6-u-mr-sm" }, t('from')),
441
449
  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: {
442
- validated: submitButtonIsClicked && isEmpty(formState.preferredTimeFrom)
450
+ validated: submitButtonIsClicked && !((_p = formState.preferredTimeFrom) === null || _p === void 0 ? void 0 : _p.trim())
443
451
  ? ValidatedOptions.error
444
452
  : ValidatedOptions.default,
445
453
  } }),
446
454
  React.createElement("span", { className: "time-label pf-v6-u-mx-md" }, t('to')),
447
455
  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: {
448
456
  validated: submitButtonIsClicked &&
449
- (isEmpty(formState.preferredTimeTo) ||
457
+ (!((_q = formState.preferredTimeTo) === null || _q === void 0 ? void 0 : _q.trim()) ||
450
458
  !isValidTimeRange(formState.preferredTimeFrom || '', formState.preferredTimeTo || ''))
451
459
  ? ValidatedOptions.error
452
460
  : ValidatedOptions.default,
453
461
  } })),
454
462
  submitButtonIsClicked &&
455
- (isEmpty(formState.preferredTimeFrom) ||
456
- isEmpty(formState.preferredTimeTo)) && (React.createElement(FormHelperText, null,
463
+ (!((_r = formState.preferredTimeFrom) === null || _r === void 0 ? void 0 : _r.trim()) ||
464
+ !((_s = formState.preferredTimeTo) === null || _s === void 0 ? void 0 : _s.trim())) && (React.createElement(FormHelperText, null,
457
465
  React.createElement(HelperText, null,
458
466
  React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('Preferred time is required'))))),
459
467
  submitButtonIsClicked &&
460
- formState.preferredTimeFrom &&
461
- formState.preferredTimeTo &&
468
+ ((_t = formState.preferredTimeFrom) === null || _t === void 0 ? void 0 : _t.trim()) &&
469
+ ((_u = formState.preferredTimeTo) === null || _u === void 0 ? void 0 : _u.trim()) &&
462
470
  !isValidTimeRange(formState.preferredTimeFrom, formState.preferredTimeTo) && (React.createElement(FormHelperText, null,
463
471
  React.createElement(HelperText, null,
464
472
  React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, t('End time must be after start time'))))))))))))));
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseHistory/Timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAwBxB,OAAO,KAAsC,MAAM,OAAO,CAAC;AA8W3D,QAAA,MAAM,QAAQ;;uBAyUb,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseHistory/Timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAwBxB,OAAO,KAAsC,MAAM,OAAO,CAAC;AA8W3D,QAAA,MAAM,QAAQ;;uBAkVb,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -343,7 +343,7 @@ const Timeline = ({ caseNumber }) => {
343
343
  }
344
344
  catch (error) {
345
345
  console.error('Failed to fetch history:', error);
346
- setFetchError('Unable to connect');
346
+ setFetchError(t('Unable to connect'));
347
347
  }
348
348
  finally {
349
349
  setIsFetchingData(false);
@@ -351,6 +351,7 @@ const Timeline = ({ caseNumber }) => {
351
351
  });
352
352
  }
353
353
  fetchHistory();
354
+ // eslint-disable-next-line react-hooks/exhaustive-deps
354
355
  }, [caseNumber]);
355
356
  const futureDateValidator = (date) => {
356
357
  const today = new Date();
@@ -440,11 +441,10 @@ const Timeline = ({ caseNumber }) => {
440
441
  if (fetchError) {
441
442
  return (React.createElement(EmptyState, { headingLevel: "h2", icon: ExclamationCircleIcon, titleText: "Unable to connect", variant: EmptyStateVariant.full },
442
443
  React.createElement(EmptyStateBody, null,
443
- React.createElement(Trans, null,
444
- "Try ",
445
- React.createElement("a", { href: "#", onClick: handleReload }, "reloading the page"),
446
- ' ',
447
- "or check back later"))));
444
+ React.createElement(Trans, { i18nKey: "Try <reloadLink>reloading the page</reloadLink> or check back later", components: {
445
+ // eslint-disable-next-line jsx-a11y/anchor-has-content, jsx-a11y/anchor-is-valid
446
+ reloadLink: React.createElement("a", { href: "#", onClick: handleReload }),
447
+ } }))));
448
448
  }
449
449
  if (filteredEvents.length < 1) {
450
450
  return (React.createElement(EmptyState, { headingLevel: "h2", icon: SearchIcon, titleText: React.createElement(Trans, null, "No results found"), variant: EmptyStateVariant.full },
@@ -459,13 +459,16 @@ const Timeline = ({ caseNumber }) => {
459
459
  React.createElement(SearchInput, { placeholder: t('Search for a user, action, or keyword'), value: searchValue, onChange: handleSearchChange, onClear: handleClear, className: "case-history-timeline-search" }),
460
460
  React.createElement("div", { className: "case-history-timeline-datepicker" },
461
461
  React.createElement(DatePicker, { value: dateValue, onChange: (_event, value) => handleDateChange(value), validators: [futureDateValidator] }),
462
- React.createElement(Button, { className: "pf-v6-u-ml-xs", onClick: () => setDateValue(''), isDisabled: isEmpty(dateValue) }, "Reset"))),
462
+ React.createElement(Button, { className: "pf-v6-u-ml-xs", onClick: () => setDateValue(''), isDisabled: isEmpty(dateValue) },
463
+ React.createElement(Trans, null, "Reset")))),
463
464
  React.createElement("div", { className: "timeline-controls" },
464
465
  React.createElement("div", { className: "timeline-pagination" }, renderPagination()),
465
466
  React.createElement("div", { className: "timeline-sort-order-select" },
466
- React.createElement(Select, { id: "order-select", isOpen: isSelectOpen, selected: selectedOrder, onSelect: handleSelect, onOpenChange: (isOpen) => setIsSelectOpen(isOpen), shouldFocusToggleOnSelect: false, toggle: (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: handleSelectToggle, isExpanded: isSelectOpen }, selectedOrder)) },
467
- React.createElement(SelectOption, { value: "Newest to Oldest" }, "Newest to Oldest"),
468
- React.createElement(SelectOption, { value: "Oldest to Newest" }, "Oldest to Newest")))),
467
+ React.createElement(Select, { id: "order-select", isOpen: isSelectOpen, selected: selectedOrder, onSelect: handleSelect, onOpenChange: (isOpen) => setIsSelectOpen(isOpen), shouldFocusToggleOnSelect: false, toggle: (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: handleSelectToggle, isExpanded: isSelectOpen }, selectedOrder === 'Newest to Oldest' ? (React.createElement(Trans, null, "Newest to Oldest")) : (React.createElement(Trans, null, "Oldest to Newest")))) },
468
+ React.createElement(SelectOption, { value: "Newest to Oldest" },
469
+ React.createElement(Trans, null, "Newest to Oldest")),
470
+ React.createElement(SelectOption, { value: "Oldest to Newest" },
471
+ React.createElement(Trans, null, "Oldest to Newest"))))),
469
472
  isFetchingData ? (React.createElement("div", { className: "timeline-loading-spinner" },
470
473
  React.createElement(Spinner, { size: "xl" }))) : (React.createElement("div", { className: `timeline ${filteredEvents.length === 0 ? 'timeline-empty' : ''}` }, renderTimelineContent())),
471
474
  React.createElement("div", { className: "timeline-controls" },
@@ -458,7 +458,6 @@ declare const _default: {
458
458
  'No access': string;
459
459
  'Bookmark Account': string;
460
460
  'Submit request': string;
461
- 'Oldest to Newest': string;
462
461
  i18RequestEscalationLearnMore: string;
463
462
  'Private Notes': string;
464
463
  on: string;
@@ -799,6 +798,47 @@ declare const _default: {
799
798
  'Update info': string;
800
799
  Summarize: string;
801
800
  'Describe more': string;
801
+ 'Newest to Oldest': string;
802
+ 'Oldest to Newest': string;
803
+ Reset: string;
804
+ 'Search for a user, action, or keyword': string;
805
+ 'Try <reloadLink>reloading the page</reloadLink> or check back later': string;
806
+ 'Try modifying your search query or changing the date range and try again.': string;
807
+ Resources: string;
808
+ 'Upload a file for Red Hat to analyze': string;
809
+ 'To help us provide the right guidance, upload a sosreport.': string;
810
+ 'Describe your problem. Include specific actions and error messages.': string;
811
+ 'How to create sosreport?': string;
812
+ 'Articles recommended by OpenShift AI': string;
813
+ 'Updating recommendations using OpenShift AI': string;
814
+ 'Recommending articles using OpenShift AI': string;
815
+ 'Exact match': string;
816
+ 'Best match': string;
817
+ Match: string;
818
+ 'Additional information': string;
819
+ 'Support articles are matched to the product and version details you selected, not the problem details you entered.': string;
820
+ 'convert to case': string;
821
+ 'Please provide details about the location, device, software version, etc. where you encounter this issue': string;
822
+ 'Describe the user or financial impact. Tell us about any legal, national, or medical urgency.': string;
823
+ 'Describe when and how often the problem occurs, e.g., daily, after specific actions, at particular times of day, etc.': string;
824
+ "Describe the impact to you or the business'": string;
825
+ 'In what environment are you experiencing this behavior?': string;
826
+ 'How frequently does this behavior occur? Does it occur repeatedly or at certain times?': string;
827
+ i18nKeyPlaceHolderDetail: string;
828
+ 'Example:': string;
829
+ 'To expedite your case, include these details:': string;
830
+ Problem: string;
831
+ 'Error Messages': string;
832
+ 'Tips for describing your problem': string;
833
+ "There aren't any related tasks": string;
834
+ All: string;
835
+ Jira: string;
836
+ 'Do you want to close this case?': string;
837
+ i18ConfirmResolution: string;
838
+ Resolution: string;
839
+ 'Red Hat solved my issue or reviewed my request': string;
840
+ 'The issue has been self-solved': string;
841
+ "I'm not experiencing the issue anymore": string;
802
842
  'AI insights is currently unavailable, try reloading.': string;
803
843
  'Back to resources': string;
804
844
  'Chat with AI': string;
@@ -812,7 +852,6 @@ declare const _default: {
812
852
  'Red Hat hand picked support articles': string;
813
853
  Reload: string;
814
854
  'Resolve your issue now with AI insights': string;
815
- 'Support articles are matched to the product and version details you selected, not the problem details you entered.': string;
816
855
  'Troubleshoot with AI insights': string;
817
856
  'Want to continue the conversation? Dive deeper with our AI assistant': string;
818
857
  'Why did you choose this rating?': string;
@@ -1 +1 @@
1
- {"version":3,"file":"template-de.d.ts","sourceRoot":"","sources":["../../../src/i18n/template-de.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA29BE"}
1
+ {"version":3,"file":"template-de.d.ts","sourceRoot":"","sources":["../../../src/i18n/template-de.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA4gCE"}
@@ -458,7 +458,6 @@ export default {
458
458
  'No access': 'Kein Zugriff',
459
459
  'Bookmark Account': 'Accounts als Lesezeichen abspeichern',
460
460
  'Submit request': 'Anfrage absenden',
461
- 'Oldest to Newest': 'Älteste zuerst',
462
461
  i18RequestEscalationLearnMore: 'Wenn das Problem schwerwiegender ist oder dem Ticket eine höhere Priorität zugeordnet werden soll, fügen Sie bitte einen ausführlichen Kommentar hinzu. Das Ticket wird anschließend von einem Support-Manager überprüft. <2>Learn more</2>',
463
462
  'Private Notes': 'Private Notizen',
464
463
  on: 'am',
@@ -801,7 +800,48 @@ export default {
801
800
  'Update info': 'Info aktualisieren',
802
801
  Summarize: 'Zusammenfassen',
803
802
  'Describe more': 'Mehr beschreiben',
803
+ 'Newest to Oldest': 'Neueste zuerst',
804
+ 'Oldest to Newest': 'Älteste bis neueste',
805
+ Reset: 'Zurücksetzen',
806
+ 'Search for a user, action, or keyword': 'Suche nach einem Benutzer, einer Aktion oder einem Schlüsselwort',
807
+ 'Try <reloadLink>reloading the page</reloadLink> or check back later': 'Versuchen Sie, die Seite <reloadLink>neu zu laden</reloadLink> oder schauen Sie später noch einmal vorbei.',
808
+ 'Try modifying your search query or changing the date range and try again.': 'Versuchen Sie, Ihre Suchanfrage oder den Datumsbereich zu ändern, und versuchen Sie es erneut.',
804
809
  // Review: 'Überprüfung',
810
+ Resources: 'Ressourcen',
811
+ 'Upload a file for Red Hat to analyze': 'Laden Sie eine Datei hoch, die Red Hat analysieren kann',
812
+ 'To help us provide the right guidance, upload a sosreport.': 'Helfen Sie uns dabei, Ihnen die richtigen Anleitungen bereitzustellen, indem Sie einen Sosreport hochladen.',
813
+ 'Describe your problem. Include specific actions and error messages.': 'Beschreiben Sie Ihr Problem. Geben Sie konkrete Aktionen und Fehlermeldungen an.',
814
+ 'How to create sosreport?': 'Wie erstelle ich einen Sosreport?',
815
+ 'Articles recommended by OpenShift AI': 'Von OpenShift AI empfohlene Artikel',
816
+ 'Updating recommendations using OpenShift AI': 'Aktualisieren von Empfehlungen mit OpenShift AI',
817
+ 'Recommending articles using OpenShift AI': 'Empfehlen von Artikeln mit OpenShift AI',
818
+ 'Exact match': 'Genaue Übereinstimmung',
819
+ 'Best match': 'Beste Übereinstimmung',
820
+ Match: 'Übereinstimmen',
821
+ 'Additional information': 'Weitere Informationen',
822
+ 'Support articles are matched to the product and version details you selected, not the problem details you entered.': 'Support-Artikel werden den von Ihnen ausgewählten Produkt- und Versionsdetails zugeordnet, nicht den von Ihnen eingegebenen Problemdetails.',
823
+ 'convert to case': 'In Groß-/Kleinschreibung umwandeln',
824
+ 'Please provide details about the location, device, software version, etc. where you encounter this issue': 'Bitte geben Sie Einzelheiten zu Ort, Gerät, Softwareversion usw. an, wo dieses Problem auftritt.',
825
+ 'Describe the user or financial impact. Tell us about any legal, national, or medical urgency.': 'Beschreiben Sie die Auswirkungen für den Benutzer oder finanzielle Auswirkungen. Informieren Sie uns über rechtliche, nationale oder medizinische Dringlichkeiten.',
826
+ 'Describe when and how often the problem occurs, e.g., daily, after specific actions, at particular times of day, etc.': 'Beschreiben Sie, wann und wie oft das Problem auftritt, z. B. täglich, nach bestimmten Aktionen, zu bestimmten Tageszeiten usw.',
827
+ "Describe the impact to you or the business'": 'Beschreiben Sie die Auswirkungen auf Sie oder das Unternehmen.',
828
+ 'In what environment are you experiencing this behavior?': 'In welcher Umgebung tritt dieses Verhalten auf?',
829
+ 'How frequently does this behavior occur? Does it occur repeatedly or at certain times?': 'Wie häufig tritt dieses Verhalten auf? Tritt es wiederholt oder zu bestimmten Zeiten auf?',
830
+ i18nKeyPlaceHolderDetail: 'Je mehr Details Sie angeben, desto einfacher ist es für uns, Ihnen zu helfen.',
831
+ 'Example:': 'Beispiel:',
832
+ 'To expedite your case, include these details:': 'Um die Bearbeitung Ihres Falles zu beschleunigen, geben Sie bitte die folgenden Details an:',
833
+ Problem: 'Problem',
834
+ 'Error Messages': 'Fehlermeldungen',
835
+ 'Tips for describing your problem': 'Tipps zur Beschreibung Ihres Problems',
836
+ "There aren't any related tasks": 'Es gibt keine zugehörigen Aufgaben',
837
+ All: 'Alle',
838
+ Jira: 'Jira',
839
+ 'Do you want to close this case?': 'Möchten Sie diesen Fall abschließen?',
840
+ i18ConfirmResolution: 'Durch die Bestätigung wird der Status dieses Falls auf „Geschlossen“ gesetzt. Sie können den Fall auch nach Abschluss noch einsehen.',
841
+ Resolution: 'Lösung',
842
+ 'Red Hat solved my issue or reviewed my request': 'Red Hat hat mein Problem gelöst oder meine Anfrage überprüft',
843
+ 'The issue has been self-solved': 'Das Problem hat sich von selbst gelöst',
844
+ "I'm not experiencing the issue anymore": 'Das Problem tritt bei mir nicht mehr auf',
805
845
  'AI insights is currently unavailable, try reloading.': 'AI insights ist derzeit nicht verfügbar. Versuchen Sie, es erneut zu laden.',
806
846
  'Back to resources': 'Zurück zu den Ressourcen',
807
847
  'Chat with AI': 'Mit KI chatten',
@@ -815,7 +855,6 @@ export default {
815
855
  'Red Hat hand picked support articles': 'Von Red Hat ausgesuchte Support-Artikel',
816
856
  Reload: 'Neu laden',
817
857
  'Resolve your issue now with AI insights': 'Lösen Sie Ihr Problem jetzt mit AI insights',
818
- 'Support articles are matched to the product and version details you selected, not the problem details you entered.': 'Support-Artikel werden den von Ihnen ausgewählten Produkt- und Versionsdetails zugeordnet, nicht den von Ihnen eingegebenen Problemdetails.',
819
858
  'Troubleshoot with AI insights': 'Fehlerbehebung mit AI insights',
820
859
  'Want to continue the conversation? Dive deeper with our AI assistant': 'Möchten Sie die Unterhaltung fortsetzen? Tauchen Sie mit unserem KI-Assistenten noch tiefer ein',
821
860
  'Why did you choose this rating?': 'Warum haben Sie diese Bewertung gewählt?',
@@ -460,7 +460,6 @@ declare const _default: {
460
460
  'Bookmark account': string;
461
461
  'Submit request': string;
462
462
  'Active Customer Escalation (ACE)': string;
463
- 'Oldest to Newest': string;
464
463
  i18RequestEscalationLearnMore: string;
465
464
  'Private Notes': string;
466
465
  on: string;
@@ -798,6 +797,41 @@ declare const _default: {
798
797
  'Update info': string;
799
798
  Summarize: string;
800
799
  'Describe more': string;
800
+ Resources: string;
801
+ 'Upload a file for Red Hat to analyze': string;
802
+ 'To help us provide the right guidance, upload a sosreport.': string;
803
+ 'Describe your problem. Include specific actions and error messages.': string;
804
+ 'How to create sosreport?': string;
805
+ 'Articles recommended by OpenShift AI': string;
806
+ 'Updating recommendations using OpenShift AI': string;
807
+ 'Recommending articles using OpenShift AI': string;
808
+ 'Exact match': string;
809
+ 'Best match': string;
810
+ Match: string;
811
+ 'Additional information': string;
812
+ 'Support articles are matched to the product and version details you selected, not the problem details you entered.': string;
813
+ 'convert to case': string;
814
+ 'Please provide details about the location, device, software version, etc. where you encounter this issue': string;
815
+ 'Describe the user or financial impact. Tell us about any legal, national, or medical urgency.': string;
816
+ 'Describe when and how often the problem occurs, e.g., daily, after specific actions, at particular times of day, etc.': string;
817
+ "Describe the impact to you or the business'": string;
818
+ 'In what environment are you experiencing this behavior?': string;
819
+ 'How frequently does this behavior occur? Does it occur repeatedly or at certain times?': string;
820
+ i18nKeyPlaceHolderDetail: string;
821
+ 'Example:': string;
822
+ 'To expedite your case, include these details:': string;
823
+ Problem: string;
824
+ 'Error Messages': string;
825
+ 'Tips for describing your problem': string;
826
+ "There aren't any related tasks": string;
827
+ All: string;
828
+ Jira: string;
829
+ 'Do you want to close this case?': string;
830
+ i18ConfirmResolution: string;
831
+ Resolution: string;
832
+ 'Red Hat solved my issue or reviewed my request': string;
833
+ 'The issue has been self-solved': string;
834
+ "I'm not experiencing the issue anymore": string;
801
835
  'AI insights is currently unavailable, try reloading.': string;
802
836
  'Back to resources': string;
803
837
  'Chat with AI': string;
@@ -811,7 +845,6 @@ declare const _default: {
811
845
  'Red Hat hand picked support articles': string;
812
846
  Reload: string;
813
847
  'Resolve your issue now with AI insights': string;
814
- 'Support articles are matched to the product and version details you selected, not the problem details you entered.': string;
815
848
  'Troubleshoot with AI insights': string;
816
849
  'Want to continue the conversation? Dive deeper with our AI assistant': string;
817
850
  'Why did you choose this rating?': string;
@@ -831,6 +864,12 @@ declare const _default: {
831
864
  'Response recorded as unhelpful': string;
832
865
  'Solved my issue': string;
833
866
  'We appreciate your input. <br />It helps us improve this experience.': string;
867
+ 'Newest to Oldest': string;
868
+ 'Oldest to Newest': string;
869
+ Reset: string;
870
+ 'Search for a user, action, or keyword': string;
871
+ 'Try <reloadLink>reloading the page</reloadLink> or check back later': string;
872
+ 'Try modifying your search query or changing the date range and try again.': string;
834
873
  };
835
874
  export default _default;
836
875
  //# sourceMappingURL=template-es.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"template-es.d.ts","sourceRoot":"","sources":["../../../src/i18n/template-es.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA89BE"}
1
+ {"version":3,"file":"template-es.d.ts","sourceRoot":"","sources":["../../../src/i18n/template-es.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA6gCE"}