@rh-support/troubleshoot 2.6.303 → 2.6.305

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 (64) hide show
  1. package/lib/esm/components/AccountInfo/AccountSelector.d.ts.map +1 -1
  2. package/lib/esm/components/AccountInfo/AccountSelector.js +11 -9
  3. package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
  4. package/lib/esm/components/CaseEditView/Case.js +5 -17
  5. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.d.ts.map +1 -1
  6. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.js +7 -18
  7. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.d.ts.map +1 -1
  8. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.js +69 -21
  9. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts.map +1 -1
  10. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.js +53 -72
  11. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.d.ts +1 -2
  12. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.d.ts.map +1 -1
  13. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.js +13 -8
  14. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts +2 -0
  15. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
  16. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +63 -26
  17. package/lib/esm/components/CaseInformation/CaseInformation.js +1 -1
  18. package/lib/esm/components/CaseInformation/FileDiag.d.ts.map +1 -1
  19. package/lib/esm/components/CaseInformation/FileDiag.js +10 -3
  20. package/lib/esm/components/CaseManagement/OpenShiftClusterId.d.ts.map +1 -1
  21. package/lib/esm/components/CaseManagement/OpenShiftClusterId.js +12 -20
  22. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts.map +1 -1
  23. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.js +7 -16
  24. package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.d.ts.map +1 -1
  25. package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.js +5 -3
  26. package/lib/esm/components/ProductSelector/ProductNotEntitledModal.d.ts +8 -0
  27. package/lib/esm/components/ProductSelector/ProductNotEntitledModal.d.ts.map +1 -0
  28. package/lib/esm/components/ProductSelector/ProductNotEntitledModal.js +11 -0
  29. package/lib/esm/components/SubmitCase/SubmitCase.d.ts.map +1 -1
  30. package/lib/esm/components/SubmitCase/SubmitCase.js +1 -1
  31. package/lib/esm/components/shared/fileUpload/FileUploader.d.ts.map +1 -1
  32. package/lib/esm/components/shared/fileUpload/FileUploader.js +1 -1
  33. package/lib/esm/components/shared/fileUpload/WidgetFileUploader.d.ts.map +1 -1
  34. package/lib/esm/components/shared/fileUpload/WidgetFileUploader.js +2 -2
  35. package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.d.ts +1 -1
  36. package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.d.ts.map +1 -1
  37. package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.d.ts +8 -7
  38. package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.d.ts.map +1 -1
  39. package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.js +52 -48
  40. package/lib/esm/components/shared/fileUpload/types/index.d.ts +2 -1
  41. package/lib/esm/components/shared/fileUpload/types/index.d.ts.map +1 -1
  42. package/lib/esm/components/shared/fileUpload/useFileUploader.d.ts +2 -2
  43. package/lib/esm/components/shared/fileUpload/useFileUploader.d.ts.map +1 -1
  44. package/lib/esm/components/shared/fileUpload/useFileUploader.js +38 -14
  45. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
  46. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +55 -31
  47. package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
  48. package/lib/esm/components/wizardLayout/WizardLayout.js +32 -3
  49. package/lib/esm/hooks/useS3Upload.d.ts +5 -4
  50. package/lib/esm/hooks/useS3Upload.d.ts.map +1 -1
  51. package/lib/esm/hooks/useS3Upload.js +25 -30
  52. package/lib/esm/reducers/CaseConstNTypes.d.ts +2 -0
  53. package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
  54. package/lib/esm/reducers/CaseConstNTypes.js +2 -0
  55. package/lib/esm/reducers/CaseDetailsPageReducer.d.ts +2 -1
  56. package/lib/esm/reducers/CaseDetailsPageReducer.d.ts.map +1 -1
  57. package/lib/esm/reducers/CaseDetailsPageReducer.js +12 -4
  58. package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts +2 -1
  59. package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts.map +1 -1
  60. package/lib/esm/reducers/CaseDiscussionTabReducer.js +11 -4
  61. package/lib/esm/reducers/CaseHelpers.d.ts +2 -2
  62. package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
  63. package/lib/esm/reducers/CaseHelpers.js +47 -49
  64. package/package.json +6 -6
@@ -7,46 +7,43 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- // TODO: Re-enable after GraphQL migration of attachments
11
- // import { IAttachment } from '@cee-eng/hydrajs/@types/models/attachment';
12
10
  import { Button, ButtonVariant, Checkbox } from '@patternfly/react-core';
11
+ import PlusIcon from '@patternfly/react-icons/dist/js/icons/plus-icon';
13
12
  import { EditorMode, LoadingIndicator, MarkdownEditor, ToastNotification, usePrevious } from '@rh-support/components';
14
13
  import { GlobalMetadataStateContext, useCanEditCase, useUserPreferences } from '@rh-support/react-context';
15
- import { ability, CaseDiscussionFields, resourceActions, resources } from '@rh-support/user-permissions';
14
+ import { ability, CaseDiscussionFields, CaseListFields, resourceActions, resources, } from '@rh-support/user-permissions';
16
15
  import isEmpty from 'lodash/isEmpty';
17
16
  import isEqual from 'lodash/isEqual';
18
17
  import React, { useCallback, useContext, useEffect, useRef, useState } from 'react';
18
+ import { useDropzone } from 'react-dropzone';
19
19
  import { Trans, useTranslation } from 'react-i18next';
20
20
  import { useCaseDispatch, useCaseSelector } from '../../../../context/CaseContext';
21
21
  import { useCreateCaseComment } from '../../../../hooks/useCaseComments';
22
22
  import { useCaseUpdateErrorMessage } from '../../../../hooks/useCaseUpdateErrorMessage';
23
23
  import { checkForCaseStatusToggleOnAttachOrComment } from '../../../../reducers/CaseReducer';
24
- // TODO: Re-enable after GraphQL migration of attachments
25
- // import { markdownFilePasteEvent } from '../../../shared/Constants';
26
- // import {
27
- // AttachmentDispatchContext,
28
- // AttachmentStateContext,
29
- // hasSomeSelectedFiles,
30
- // hasSomeUnUploadedAttachments,
31
- // isUploadingAttachment,
32
- // resetAttachment,
33
- // } from '../../../shared/fileUpload';
34
- // import FileSelectorButton from '../../../shared/fileUpload/fileSelectors/FileSelectorButton';
35
- // import FileUpload from '../../../shared/fileUpload/FileUpload';
24
+ import { AttachmentDispatchContext, AttachmentStateContext, hasSomeSelectedFiles, hasSomeUnUploadedAttachments, isUploadingAttachment, resetAttachment, } from '../../../shared/fileUpload';
25
+ import FileSelectorButton from '../../../shared/fileUpload/fileSelectors/FileSelectorButton';
26
+ import FileUpload from '../../../shared/fileUpload/FileUpload';
36
27
  import { PDFContext } from '../../PDFContainer';
37
- // TODO: Re-enable after GraphQL migration of attachments
38
- // import { useAttachmentUploadCompletion } from './PostComment/useAttachmentUploadCompletion';
28
+ import { useAttachmentUploadCompletion } from './PostComment/useAttachmentUploadCompletion';
39
29
  import { useCommentDrafts } from './PostComment/useCommentDrafts';
40
- // import { useMarkdownFileUploader } from './PostComment/useMarkdownFileUploader';
30
+ import { useMarkdownFileUploader } from './PostComment/useMarkdownFileUploader';
41
31
  import { VerifyCaseStatusModal } from './VerifyCaseStatusModal/VerifyCaseStatusModal';
42
32
  export function PostComment(props) {
43
- var _a;
33
+ var _a, _b, _c;
44
34
  const { t } = useTranslation();
45
35
  const caseUpdateError = useCaseUpdateErrorMessage();
46
36
  let { caseNumber } = props;
47
37
  const [isTextAreaFocused, setIsTextAreaFocused] = useState(false);
38
+ const canAddAttachments = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.ATTACHMENTS);
48
39
  const canPostPrivateComments = ability.can(resourceActions.PATCH, resources.CASE_COMMENTS, CaseDiscussionFields.POST_PRIVATE_COMMENT);
49
40
  const { createComment, loading: isPostingComment } = useCreateCaseComment();
41
+ const dispatchToAttachmentReducer = useContext(AttachmentDispatchContext);
42
+ const { attachmentState } = useContext(AttachmentStateContext);
43
+ const isUploadingAttachmentPrevious = useRef(false);
44
+ const isUploadingAttachments = isUploadingAttachment(attachmentState.caseFiles.selectedLocalFiles);
45
+ const hasSomeUnUploadedFiles = hasSomeUnUploadedAttachments(attachmentState.caseFiles.selectedLocalFiles);
46
+ const hasSomeSelectedFilesLocal = hasSomeSelectedFiles(attachmentState.caseFiles.selectedLocalFiles);
50
47
  const [isPublic, setIsPublic] = useState(props.defaultIsPublic === null ? true : props.defaultIsPublic);
51
48
  const [commentType, setCommentType] = useState(EditorMode.PLAIN);
52
49
  const [commentSignature, setCommentSignature] = useState('');
@@ -83,11 +80,21 @@ export function PostComment(props) {
83
80
  const [cssCommentAgreed, setCssCommentAgreed] = useState(false);
84
81
  const [isProcessing, setIsProcessing] = useState(false);
85
82
  const { globalMetadataState: { loggedInUser, loggedInUserRights, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
83
+ const { onFileAttach, cancelFileUpload } = useMarkdownFileUploader({
84
+ caseNumber,
85
+ onAttachmentAdded: (_a = props.onAttachmentAdded) !== null && _a !== void 0 ? _a : (() => undefined),
86
+ });
87
+ const { getRootProps, getInputProps } = useDropzone({
88
+ onDrop: (files) => onFileAttach(files, isPublic),
89
+ multiple: false,
90
+ noClick: true,
91
+ noKeyboard: true,
92
+ });
86
93
  const { status, caseSalesforceId } = useCaseSelector((state) => ({
87
94
  status: state.caseDetails.status,
88
95
  caseSalesforceId: state.caseDetails.id,
89
96
  }), isEqual);
90
- const isConfirmedStateSideSupport = (_a = loggedInUsersAccount === null || loggedInUsersAccount === void 0 ? void 0 : loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.hasConfirmedStatesideSupport;
97
+ const isConfirmedStateSideSupport = (_b = loggedInUsersAccount === null || loggedInUsersAccount === void 0 ? void 0 : loggedInUsersAccount.data) === null || _b === void 0 ? void 0 : _b.hasConfirmedStatesideSupport;
91
98
  const caseDispatch = useCaseDispatch();
92
99
  const [isCommentTooLong, setIsCommentTooLong] = useState(false);
93
100
  const canEditCase = useCanEditCase();
@@ -132,8 +139,24 @@ export function PostComment(props) {
132
139
  (_a = props.onCommentClear) === null || _a === void 0 ? void 0 : _a.call(props);
133
140
  setCommentText(commentSignature ? `\n ${commentSignature}` : '');
134
141
  });
142
+ const resetAttachmentSection = () => {
143
+ resetAttachment(dispatchToAttachmentReducer);
144
+ };
145
+ useAttachmentUploadCompletion({
146
+ isUploadingAttachments,
147
+ hasSomeUnUploadedFiles,
148
+ isUploadingAttachmentPrevious,
149
+ caseDispatch,
150
+ isInternal: loggedInUserRights.data.isInternal(),
151
+ status,
152
+ resetAttachmentSection,
153
+ onAttachmentAdded: (_c = props.onAttachmentAdded) !== null && _c !== void 0 ? _c : (() => undefined),
154
+ setCssCommentAgreed,
155
+ });
135
156
  const onCancelClick = () => {
136
157
  resetCommentSection();
158
+ resetAttachmentSection();
159
+ cancelFileUpload();
137
160
  };
138
161
  const onCommentTextChange = (value, mode) => __awaiter(this, void 0, void 0, function* () {
139
162
  setCommentType(mode !== null && mode !== void 0 ? mode : commentType);
@@ -210,6 +233,10 @@ export function PostComment(props) {
210
233
  return commentText.trim() === commentSignature;
211
234
  }
212
235
  const isPostCommentDisabled = isProcessing || !commentText || isCommentSignatureMatch();
236
+ const isFileUploadDisabled = isConfirmedStateSideSupport && !cssCommentAgreed;
237
+ const onFileUploadClick = () => {
238
+ ToastNotification.addInfoMessage(t('Uploading Attachment(s)'));
239
+ };
213
240
  /**
214
241
  * Formats a reply as a markdown blockquote. Truncates the original text
215
242
  * to 1000 characters, prepends an attribution header, and prefixes each
@@ -251,12 +278,15 @@ export function PostComment(props) {
251
278
  const isSubmitDisabled = isReplyDisabled() ||
252
279
  isCommentEmpty ||
253
280
  isPostCommentDisabled ||
281
+ isUploadingAttachments ||
282
+ hasSomeUnUploadedFiles ||
254
283
  (isConfirmedStateSideSupport && !cssCommentAgreed);
255
284
  return (React.createElement("div", { className: `pf-v6-u-mb-md ${isExportingPDF ? 'hide-in-pdf' : ''}`, ref: componentRef },
256
- React.createElement(MarkdownEditor, { className: `${!isPublic && canPostPrivateComments ? 'is-private' : ''}`, disabled: isProcessing || canEditCase.isCaseNotEditable, "aria-label": "comment text area", editorMode: commentType, hideToolbars: true, onFocus: () => setIsTextAreaFocused(true), onBlur: onTextAreaBlur, onChange: onCommentTextChange, value: commentText, rows: isTextAreaFocused ? 12 : 4, bindTextArea: textAreaRef, onCommentExceedCharsLimit: onCommentExceedCharsLimit,
257
- // TODO: After GraphQL migration of attachments, restore private-comment placeholder to
258
- // "Add a comment or attach a file privately" when !isPublic && canPostPrivateComments
259
- mdPlaceholder: "Add a comment to this case", plainTextPlaceholder: "Add a comment to this case" }),
285
+ React.createElement(MarkdownEditor, { className: `${!isPublic && canPostPrivateComments ? 'is-private' : ''}`, disabled: isProcessing || canEditCase.isCaseNotEditable, "aria-label": "comment text area", editorMode: commentType, hideToolbars: true, onFocus: () => setIsTextAreaFocused(true), onBlur: onTextAreaBlur, onChange: onCommentTextChange, value: commentText, rows: isTextAreaFocused ? 12 : 4, bindTextArea: textAreaRef, onCommentExceedCharsLimit: onCommentExceedCharsLimit, mdPlaceholder: !isPublic && canPostPrivateComments
286
+ ? 'Add a comment or attach a file privately'
287
+ : 'Add a comment to this case', plainTextPlaceholder: !isPublic && canPostPrivateComments
288
+ ? 'Add a comment or attach a file privately'
289
+ : 'Add a comment to this case' }),
260
290
  isConfirmedStateSideSupport && (React.createElement("div", { className: "pf-v6-u-mt-md pf-v6-u-mb-lg" },
261
291
  React.createElement("input", { type: "checkbox", id: "css-case-comment-agreement", name: "css-case-comment-agreement", "data-tracking-id": "css-case-comment-agreement", checked: cssCommentAgreed, onChange: (e) => setCssCommentAgreed(e.target.checked) }),
262
292
  React.createElement("label", { htmlFor: "css-case-comment-agreement", className: "pf-v6-u-font-weight-normal pf-v6-u-font-size-sm" },
@@ -266,8 +296,15 @@ export function PostComment(props) {
266
296
  isModalOpen && loggedInUserRights.data.isInternal() && isPublic && (React.createElement(VerifyCaseStatusModal, { onClose: onCancel, onConfirm: onConfirm, isUpdating: isPostingComment, caseNumber: props.caseNumber })),
267
297
  React.createElement(Button, { "data-tracking-id": "postcomment-submit-button", type: "button", variant: ButtonVariant.primary, onClick: loggedInUser.data.isInternal && isPublic ? onBtnClick : isNotInternalConfirm, isDisabled: isSubmitDisabled, className: "postcomment-submit" },
268
298
  React.createElement(Trans, null, "Submit")),
269
- React.createElement(Button, { className: "secondary-button-pill", "data-tracking-id": "postcomment-cancel-button", type: "button", variant: ButtonVariant.link, onClick: onCancelClick, isDisabled: isPostCommentDisabled },
299
+ React.createElement(Button, { className: "secondary-button-pill", "data-tracking-id": "postcomment-cancel-button", type: "button", variant: ButtonVariant.link, onClick: onCancelClick, isDisabled: isPostCommentDisabled && !hasSomeSelectedFilesLocal },
270
300
  React.createElement(Trans, null, "Cancel")),
301
+ canAddAttachments && (React.createElement(FileSelectorButton, { isSessionId: false, isDisabled: isFileUploadDisabled, buttonLabel: React.createElement(React.Fragment, null,
302
+ React.createElement(PlusIcon, null),
303
+ " ",
304
+ React.createElement(Trans, null, "Attach a file")) })),
271
305
  canPostPrivateComments && (React.createElement("span", { className: "post-comment-checkbox" },
272
- React.createElement(Checkbox, { label: t('Private'), isChecked: !isPublic && canPostPrivateComments, onChange: handleCheckboxToggle, "aria-label": t('Private'), id: "private-comment", name: "private-comment", "data-tracking-id": "private-comment-checkbox" })))))));
306
+ React.createElement(Checkbox, { label: t('Private'), isChecked: !isPublic && canPostPrivateComments, onChange: handleCheckboxToggle, "aria-label": t('Private'), id: "private-comment", name: "private-comment", "data-tracking-id": "private-comment-checkbox" }))))),
307
+ canAddAttachments && (React.createElement("div", Object.assign({}, getRootProps(), { className: "post-comment-dropzone" }),
308
+ React.createElement("input", Object.assign({}, getInputProps())),
309
+ React.createElement(FileUpload, { className: `file-upload-section ${hasSomeSelectedFilesLocal ? 'card card-white pf-v6-u-mt-lg pf-v6-u-p-lg' : ''}`, idToUploadTo: caseNumber, caseSalesforceId: caseSalesforceId, onUploadClick: onFileUploadClick, isSessionId: false, needsAnalyzing: false, autoUploadOnSelect: true, isPrivate: !isPublic, showDescriptionInfoMsg: true })))));
273
310
  }
@@ -20,7 +20,7 @@ export default function CaseInformation(props) {
20
20
  contactSSOName: state.caseDetails.contactSSOName,
21
21
  ownersCaseGroups: state.ownersCaseGroups,
22
22
  selectedAccountDetails: state.selectedAccountDetails,
23
- hasInvalidEntitlements: state.hasInvalidEntitlements,
23
+ hasInvalidEntitlements: false, // TODO: remove this once we have a proper entitlement check
24
24
  }), isEqual);
25
25
  const isMetadataLoading = () => {
26
26
  return !isMetadataLoadingError() && (loggedInUser.isFetching || selectedAccountDetails.isFetching);
@@ -1 +1 @@
1
- {"version":3,"file":"FileDiag.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/FileDiag.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAQ/D,UAAU,MAAM;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,qBAqCrC"}
1
+ {"version":3,"file":"FileDiag.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/FileDiag.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAQ/D,UAAU,MAAM;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,qBAuCrC"}
@@ -1,4 +1,5 @@
1
- import { GlobalMetadataStateContext } from '@rh-support/react-context';
1
+ // TODO: Re-enable when Hydra/GraphQL attachment APIs support secure support again
2
+ // import { GlobalMetadataStateContext } from '@rh-support/react-context';
2
3
  import { ability, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
3
4
  import { PreviousCaseTypes } from '@rh-support/utils';
4
5
  import isEqual from 'lodash/isEqual';
@@ -11,7 +12,10 @@ import { WidgetFileUploader } from '../shared/fileUpload/WidgetFileUploader';
11
12
  export function FileDiag(props) {
12
13
  const { sessionRestore: { activeSessionId }, } = useContext(SessionRestoreStateContext);
13
14
  const canAddAttachments = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.ATTACHMENTS);
14
- const { globalMetadataState: { loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
15
+ // TODO: Re-enable when Hydra/GraphQL attachment APIs support secure support again
16
+ // const {
17
+ // globalMetadataState: { loggedInUsersAccount },
18
+ // } = useContext(GlobalMetadataStateContext);
15
19
  const { rulesState } = useContext(RulesStateContext);
16
20
  const { caseType } = useCaseSelector((state) => ({
17
21
  caseType: state.caseDetails.caseType,
@@ -22,5 +26,8 @@ export function FileDiag(props) {
22
26
  }, [caseType]);
23
27
  if (!canAddAttachments)
24
28
  return null;
25
- return (React.createElement(WidgetFileUploader, { className: props.className, idToUploadTo: activeSessionId, isPrivate: false, needsAnalyzing: isIdea ? false : true, isSessionId: true, isSecureSupport: loggedInUsersAccount.data.secureSupport, autoUploadOnSelect: loggedInUsersAccount.data.secureSupport ? false : true, helperText: getValidAttachmentRules(rulesState.EARules.rules).length > 0 ? React.createElement(FileEARule, null) : null, isIdea: isIdea }));
29
+ return (React.createElement(WidgetFileUploader, { className: props.className, idToUploadTo: activeSessionId, isPrivate: false, needsAnalyzing: isIdea ? false : true, isSessionId: true,
30
+ // isSecureSupport={loggedInUsersAccount.data.secureSupport!}
31
+ // autoUploadOnSelect={loggedInUsersAccount.data.secureSupport ? false : true}
32
+ autoUploadOnSelect: true, helperText: getValidAttachmentRules(rulesState.EARules.rules).length > 0 ? React.createElement(FileEARule, null) : null, isIdea: isIdea }));
26
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OpenShiftClusterId.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/OpenShiftClusterId.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAuB/D,eAAO,MAAM,oBAAoB,yBAShC,CAAC;AAEF,eAAO,MAAM,uBAAuB,yBAInC,CAAC;AAEF,eAAO,MAAM,4BAA4B,yBAYxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,yBAIjC,CAAC;AAEF,UAAU,MAAM;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,qBA8T/C"}
1
+ {"version":3,"file":"OpenShiftClusterId.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/OpenShiftClusterId.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAuB/D,eAAO,MAAM,oBAAoB,yBAShC,CAAC;AAEF,eAAO,MAAM,uBAAuB,yBAInC,CAAC;AAEF,eAAO,MAAM,4BAA4B,yBAYxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,yBAIjC,CAAC;AAEF,UAAU,MAAM;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,qBA2U/C"}
@@ -199,37 +199,31 @@ export function OpenShiftClusterId(props) {
199
199
  fetchClusterRecommendations(clusterRecommendationsDispatch, selectedId, clusterRecommendationsCache);
200
200
  };
201
201
  const clusterIdDropdownFormInstructions = () => {
202
- // TODO: Re-enable empty cluster ID check when cluster ID is made mandatory again
203
- // const errorMessage = isClusterIdInvalid
204
- // ? isInvalidErrorMessage()
205
- // : isEmpty(openshiftClusterID) && isEmpty(selectedReason)
206
- // ? discoverV4ClusterIdLinkError()
207
- // : null;
208
- // TODO: Re-enable empty cluster ID check when cluster ID is made mandatory again
209
- // const errorMessage = isClusterIdInvalid
210
- // ? isInvalidErrorMessage()
211
- // : isEmpty(openshiftClusterID) && isEmpty(selectedReason)
212
- // ? discoverV4ClusterIdLinkError()
213
- // : null;
214
- const errorMessage = isClusterIdInvalid ? isInvalidErrorMessage() : null;
202
+ const errorMessage = isClusterIdInvalid
203
+ ? isInvalidErrorMessage()
204
+ : isEmpty(openshiftClusterID) && isEmpty(selectedReason)
205
+ ? discoverV4ClusterIdLinkError()
206
+ : null;
215
207
  const infoMessage = v3Selected ? v3Tov4TransitionLink() : discoverV4ClusterIdLink();
216
208
  return isNextBtnClickedToShowValidationError && errorMessage ? errorMessage : infoMessage;
217
209
  };
218
- const onReasonExplanationInputBoxChanged = (noClusterIdReasonExplanation) => {
210
+ const onReasonExplanationInputBoxChanged = (explanation) => {
219
211
  if (noClusterIdReason === 'Other') {
220
- setCaseDetails(caseDispatch, { noClusterIdReasonExplanation: noClusterIdReasonExplanation });
212
+ const description = getUpdatedDescription(issue, environment, periodicityOfIssue, timeFramesAndUrgency, v3ClusterName, product, version, noClusterIdReason, explanation);
213
+ setCaseDetails(caseDispatch, { noClusterIdReasonExplanation: explanation, description });
221
214
  }
222
215
  };
223
216
  const v3ClusterNameInputBoxChanged = (v3Cluster) => {
224
217
  const v3ClusterName = product === 'OpenShift Container Platform' && version !== '3.11' && isEmpty(v3Cluster.trim())
225
218
  ? ''
226
219
  : v3Cluster;
227
- const description = getUpdatedDescription(issue, environment, periodicityOfIssue, timeFramesAndUrgency, v3ClusterName, product, version);
220
+ const description = getUpdatedDescription(issue, environment, periodicityOfIssue, timeFramesAndUrgency, v3ClusterName, product, version, noClusterIdReason, noClusterIdReasonExplanation);
228
221
  setCaseState(caseDispatch, { v3ClusterName });
229
222
  setCaseDetails(caseDispatch, { description });
230
223
  };
231
224
  const onReasonChange = (reason) => {
232
- setCaseDetails(caseDispatch, { noClusterIdReason: reason });
225
+ const description = getUpdatedDescription(issue, environment, periodicityOfIssue, timeFramesAndUrgency, v3ClusterName, product, version, reason, noClusterIdReasonExplanation);
226
+ setCaseDetails(caseDispatch, { noClusterIdReason: reason, description });
233
227
  };
234
228
  const isInVaidNoClusterIdReason = isNextBtnClickedToShowValidationError &&
235
229
  (isEmpty(noClusterIdReason) ||
@@ -240,9 +234,7 @@ export function OpenShiftClusterId(props) {
240
234
  return null;
241
235
  return (React.createElement("div", { className: `${props.className ? props.className : ''}` },
242
236
  !showV3TextBox && (React.createElement(OpenshiftDropdownV4, { openshiftDisplayName: openshiftDisplayName, openshiftClusterIDState: openshiftClusterID || selectedReason, onClusterIdStateUpdate: onClusterIdStateUpdate, isClusterIdInvalid: isNextBtnClickedToShowValidationError &&
243
- // TODO: Re-enable empty check when cluster ID is made mandatory again
244
- // ((isEmpty(openshiftClusterID) && isEmpty(selectedReason)) ||
245
- isClusterIdInvalid, clusterIdDropdownFormInstructions: clusterIdDropdownFormInstructions(), onClusterClear: resetClusterData, isV3: product !== 'OpenShift Container Platform' })),
237
+ ((isEmpty(openshiftClusterID) && isEmpty(selectedReason)) || isClusterIdInvalid), clusterIdDropdownFormInstructions: clusterIdDropdownFormInstructions(), onClusterClear: resetClusterData, isV3: product !== 'OpenShift Container Platform' })),
246
238
  noClusterIdReasonExplanation !== 'v3-cluster' && dontKnowSelected && !showV3TextBox && (React.createElement(NoClusterIDReasonSelector, { noClusterIdReasonExplanation: noClusterIdReasonExplanation, noClusterIdReason: noClusterIdReason, onReasonInputBoxChanged: onReasonExplanationInputBoxChanged, onReasonChange: onReasonChange, isInValid: isInVaidNoClusterIdReason, isCustomer: isCustomer })),
247
239
  (v3Selected || showV3TextBox) && (React.createElement(OpenShiftV3Inputbox, { v3ClusterName: v3ClusterName, onReasonInputBoxChanged: v3ClusterNameInputBoxChanged, isInValid: isEmpty(v3ClusterName.trim()) && isNextBtnClickedToShowValidationError, v3Selected: v3Selected }))));
248
240
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OpenshiftDropdownV4.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/OpenshiftDropdownV4.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAgB5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAA2D,MAAM,OAAO,CAAC;AAOhF,UAAU,MAAO,SAAQ,gBAAgB;IACrC,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iCAAiC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB,CAAC,EAAE,CAAC,GAAG,KAAA,KAAK,IAAI,CAAC;CAC3C;AAsBD,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBAwfzC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"OpenshiftDropdownV4.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/OpenshiftDropdownV4.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAgB5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAA2D,MAAM,OAAO,CAAC;AAOhF,UAAU,MAAO,SAAQ,gBAAgB;IACrC,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iCAAiC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB,CAAC,EAAE,CAAC,GAAG,KAAA,KAAK,IAAI,CAAC;CAC3C;AAsBD,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBAkfzC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -117,8 +117,7 @@ function OpenshiftDropdownV4(props) {
117
117
  // Define dropdown options for keyboard navigation
118
118
  const dropdownOptions = useMemo(() => [
119
119
  { type: 'checkbox', key: 'show-hide-archived-clusters', label: t('Show archived clusters') },
120
- // TODO: Re-enable "I don't have my Cluster ID" option when needed
121
- // { type: 'option', key: 'dont-have-id', label: t("I don't have my Cluster ID") },
120
+ { type: 'option', key: 'dont-have-id', label: t("I don't have my Cluster ID") },
122
121
  ...(props.isV3 ? [{ type: 'option', key: 'v3-cluster', label: t('The case is for a v3 cluster') }] : []),
123
122
  ], [props.isV3, t]);
124
123
  // Use the keyboard navigation hook
@@ -133,10 +132,10 @@ function OpenshiftDropdownV4(props) {
133
132
  setShowArchivedClusters(!showArchivedClusters);
134
133
  props.onClusterClear();
135
134
  setClustersRawResponse([]);
136
- // TODO: Re-enable "I don't have my Cluster ID" keyboard handler when needed
137
- // } else if (item.key === 'dont-have-id') {
138
- // props.onClusterIdStateUpdate(createState('dont-have-id', t("I don't have my Cluster ID")));
139
- // setIsOpen(false);
135
+ }
136
+ else if (item.key === 'dont-have-id') {
137
+ props.onClusterIdStateUpdate(createState('dont-have-id', t("I don't have my Cluster ID")));
138
+ setIsOpen(false);
140
139
  }
141
140
  else if (item.key === 'v3-cluster') {
142
141
  props.onClusterIdStateUpdate(createState('v3-cluster', t('The case is for a v3 cluster')));
@@ -147,16 +146,7 @@ function OpenshiftDropdownV4(props) {
147
146
  const dropdownHeaderOptions = useMemo(() => [
148
147
  React.createElement(SelectOption, { hasCheckbox: true, key: "show-archived-clusters", "aria-label": t('Show archived clusters'), id: "show-archived-clusters", className: "archived-clusters-checkbox", "data-tracking-id": "show-hide-archived-clusters", value: { type: 'checkbox' }, isSelected: showArchivedClusters }, t('Show archived clusters')),
149
148
  React.createElement(Divider, { component: "div", key: 'cluster-id-options-divider-e' }),
150
- /* TODO: Re-enable "I don't have my Cluster ID" dropdown option when needed
151
- <SelectOption
152
- key={'dont-have-id'}
153
- value={createState('dont-have-id', t("I don't have my Cluster ID"))}
154
- data-tracking-id="dont-have-cluster-id"
155
- isFocused={focusedItemIndex === 1}
156
- >
157
- {"I don't have my Cluster ID"}
158
- </SelectOption>,
159
- */
149
+ React.createElement(SelectOption, { key: 'dont-have-id', value: createState('dont-have-id', t("I don't have my Cluster ID")), "data-tracking-id": "dont-have-cluster-id", isFocused: focusedItemIndex === 1 }, "I don't have my Cluster ID"),
160
150
  ...(props.isV3
161
151
  ? [
162
152
  React.createElement(SelectOption, { key: 'v3-cluster', value: createState('v3-cluster', t('The case is for a v3 cluster')), isFocused: focusedItemIndex === 2 }),
@@ -358,6 +348,7 @@ function OpenshiftDropdownV4(props) {
358
348
  React.createElement("div", { className: `${props.className} form-group` },
359
349
  React.createElement("label", { htmlFor: "case-details-cluster-nickname-selector" },
360
350
  React.createElement(Trans, null, "OpenShift Cluster ID"),
351
+ React.createElement("span", { className: `form-required ${isExportingPDF ? 'hide-in-pdf' : ''}`, "aria-hidden": true }, "*"),
361
352
  !isExportingPDF ? React.createElement(CaseOpenShiftPopover, null) : ''),
362
353
  React.createElement("span", { id: titleId, hidden: true }, "Select a state"),
363
354
  React.createElement(Select, { id: "openshift-cluster-selector", isOpen: isOpen, selected: getSelectedItem(), onSelect: onSelect, onOpenChange: (nextOpen) => {
@@ -1 +1 @@
1
- {"version":3,"file":"NoAttachmentSelectedModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ConfirmationModals/NoAttachmentSelectedModal.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAiBvE,UAAU,MAAM;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;CACzB;AAID,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,qBAiJtD"}
1
+ {"version":3,"file":"NoAttachmentSelectedModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ConfirmationModals/NoAttachmentSelectedModal.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAiBvE,UAAU,MAAM;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;CACzB;AAID,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,qBAgJtD"}
@@ -1,5 +1,4 @@
1
1
  import { Button, ButtonVariant, Modal, ModalBody, ModalFooter, ModalHeader, ModalVariant, } from '@patternfly/react-core';
2
- import { GlobalMetadataStateContext } from '@rh-support/react-context';
3
2
  import { ability, resourceActions, resources } from '@rh-support/user-permissions';
4
3
  import { pendoTrackEvent } from '@rh-support/utils';
5
4
  import React, { useContext, useEffect, useRef, useState } from 'react';
@@ -16,7 +15,6 @@ const TIMEOUT_DURATION = 9000;
16
15
  export function NoAttachmentSelectedModal(props) {
17
16
  const { t } = useTranslation();
18
17
  const { sessionRestore: { activeSessionId }, } = useContext(SessionRestoreStateContext);
19
- const { globalMetadataState: { loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
20
18
  const { attachmentState: { caseFiles: { selectedLocalFiles }, }, } = useContext(AttachmentStateContext);
21
19
  const [isUploading, setIsUploading] = useState(false);
22
20
  const isAnyFileAttachedLocal = isAnyFileAttached(selectedLocalFiles);
@@ -78,7 +76,11 @@ export function NoAttachmentSelectedModal(props) {
78
76
  React.createElement("p", { className: "pf-v6-u-mb-md" },
79
77
  React.createElement(Trans, null, "Uploading an attachment will speed up your case's resolution time")),
80
78
  React.createElement(FileEARule, { isInline: true })))),
81
- React.createElement(FileUpload, { idToUploadTo: activeSessionId, onUploadClick: onFileUploadClick, isSessionId: true, needsAnalyzing: true, autoUploadOnSelect: loggedInUsersAccount.data.secureSupport ? false : true, isSecureSupport: loggedInUsersAccount.data.secureSupport, isPrivate: false }),
79
+ React.createElement(FileUpload, { idToUploadTo: activeSessionId, onUploadClick: onFileUploadClick, isSessionId: true, needsAnalyzing: true,
80
+ // TODO: Re-enable when Hydra/GraphQL attachment APIs support secure support again
81
+ // autoUploadOnSelect={loggedInUsersAccount.data.secureSupport ? false : true}
82
+ // isSecureSupport={loggedInUsersAccount.data.secureSupport}
83
+ autoUploadOnSelect: true, isPrivate: false }),
82
84
  React.createElement(ModalFooter, null, isUploading ? (React.createElement(Button, { key: "create-case", variant: ButtonVariant.primary, onClick: props.onConfirm, "data-tracking-id": "skip-upload-or-analysis-and-submit" },
83
85
  React.createElement(Trans, null, "Skip analyze and create my case"))) : isAnyFileAttachedLocal ? (!canUseSessionManagement && (React.createElement(Button, { className: "pf-v6-u-mt-sm", variant: ButtonVariant.primary, onClick: props.onConfirm, "data-tracking-id": "no-attachment-modal-create-case" },
84
86
  React.createElement(Trans, null, "Create Case")))) : (React.createElement(React.Fragment, null,
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface IProps {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ }
6
+ export declare function ProductNotEntitledModal({ isOpen, onClose }: IProps): React.JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=ProductNotEntitledModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductNotEntitledModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/ProductNotEntitledModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,MAAM;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,qBAkBlE"}
@@ -0,0 +1,11 @@
1
+ import { Button, Modal, ModalBody, ModalFooter, ModalHeader, ModalVariant } from '@patternfly/react-core';
2
+ import React from 'react';
3
+ import { useTranslation } from 'react-i18next';
4
+ export function ProductNotEntitledModal({ isOpen, onClose }) {
5
+ const { t } = useTranslation();
6
+ return (React.createElement(Modal, { variant: ModalVariant.small, isOpen: isOpen, onClose: onClose, "aria-label": t('Product Not Entitled') },
7
+ React.createElement(ModalHeader, { title: t('Product Not Entitled'), titleIconVariant: "warning" }),
8
+ React.createElement(ModalBody, null, t('The selected product is not included in your current subscription entitlements. Please choose an entitled product or contact your administrator to update your subscription.')),
9
+ React.createElement(ModalFooter, null,
10
+ React.createElement(Button, { variant: "primary", onClick: onClose }, t('Okay')))));
11
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"SubmitCase.d.ts","sourceRoot":"","sources":["../../../../src/components/SubmitCase/SubmitCase.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,EAAQ,mBAAmB,EAAe,MAAM,kBAAkB,CAAC;AAQ1E,OAAO,EAAqB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAWrF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,MAAM,qBA6Y/C"}
1
+ {"version":3,"file":"SubmitCase.d.ts","sourceRoot":"","sources":["../../../../src/components/SubmitCase/SubmitCase.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,EAAQ,mBAAmB,EAAe,MAAM,kBAAkB,CAAC;AAQ1E,OAAO,EAAqB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAWrF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,MAAM,qBA8Y/C"}
@@ -214,7 +214,7 @@ export default function SubmitCase(props) {
214
214
  React.createElement(Button, { className: "pf-v6-u-ml-md view-case-button", component: "a", href: getCaseURL(), variant: "primary", "data-tracking-id": "get-support-view-case", "aria-label": t('View case'), isAriaDisabled: isUploadingAttachment(attachmentState.caseFiles.selectedLocalFiles) },
215
215
  React.createElement(Trans, null, "View case"))))) : (React.createElement(Button, { component: (props) => (React.createElement(Link, Object.assign({}, props, { to: `/case/${caseNoOfCreatedCase}` }))), variant: "primary", "data-tracking-id": "get-support-view-case", "aria-label": t('View case'), className: "view-case-button" },
216
216
  React.createElement(Trans, null, "View case"))))))),
217
- !isEmpty(attachmentState.caseFiles.selectedLocalFiles) && (React.createElement(FileUploader, { idToUploadTo: caseNoOfCreatedCase, isSessionId: false, isSecureSupport: loggedInUsersAccount.data.secureSupport })),
217
+ !isEmpty(attachmentState.caseFiles.selectedLocalFiles) && (React.createElement(FileUploader, { idToUploadTo: caseNoOfCreatedCase, isSessionId: false })),
218
218
  React.createElement("div", null,
219
219
  (!isEmpty(topContent.data) || !rulesState.EARules.rules || !clusterRecommendations) &&
220
220
  !isIdea && (React.createElement(Content, { className: "pf-v6-u-mt-2xl pf-v6-u-font-weight-light", component: ContentVariants.h2 },
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploader.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/fileUpload/FileUploader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGnD,UAAU,MAAO,SAAQ,wBAAwB;CAAG;AAQpD,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM,qBA8ClC;kBA9CQ,YAAY;;;AAgDrB,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"FileUploader.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/fileUpload/FileUploader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGnD,UAAU,MAAO,SAAQ,wBAAwB;CAAG;AAQpD,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM,qBA+ClC;kBA/CQ,YAAY;;;AAiDrB,eAAe,YAAY,CAAC"}
@@ -26,7 +26,7 @@ function FileUploader(props) {
26
26
  uploadFile(index);
27
27
  }
28
28
  else if (isSessionUploadComplete(file.uploadProgress.uploadStatus)) {
29
- moveSessionAttachmentToCase(dispatchToAttachmentReducer, props.idToUploadTo, activeSessionId, file, index, apolloClient);
29
+ moveSessionAttachmentToCase(dispatchToAttachmentReducer, props.idToUploadTo, activeSessionId, file, index, apolloClient, props.caseSalesforceId);
30
30
  }
31
31
  });
32
32
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetFileUploader.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/fileUpload/WidgetFileUploader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AA0B/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAInD,UAAU,MAAO,SAAQ,wBAAwB,EAAE,gBAAgB;IAC/D,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAYD,iBAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,qBAiPxC;kBAjPQ,kBAAkB;;;AAqP3B,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"WidgetFileUploader.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/fileUpload/WidgetFileUploader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AA0B/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAInD,UAAU,MAAO,SAAQ,wBAAwB,EAAE,gBAAgB;IAC/D,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAGpB;AAYD,iBAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,qBA8OxC;kBA9OQ,kBAAkB;;;AAkP3B,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -28,7 +28,7 @@ const defaultProps = {
28
28
  autoUploadOnSelect: false,
29
29
  isPrivate: false,
30
30
  isIdea: false,
31
- isSecureSupport: false,
31
+ // isSecureSupport: false,
32
32
  };
33
33
  function WidgetFileUploader(props) {
34
34
  const { t } = useTranslation();
@@ -148,7 +148,7 @@ function WidgetFileUploader(props) {
148
148
  });
149
149
  return (React.createElement(Card, { id: "file-uploader-card", className: "file-diag pf-v6-u-mb-md", onPaste: handlePaste },
150
150
  React.createElement(CardHeader, { "aria-label": t('File uploader') },
151
- React.createElement("h3", { id: "file-uploader-title" }, props.isIdea || props.isSecureSupport ? (React.createElement(Trans, null, "File uploader")) : (React.createElement(Trans, null, "Upload a file for Red Hat to analyze")))),
151
+ React.createElement("h3", { id: "file-uploader-title" }, props.isIdea ? React.createElement(Trans, null, "File uploader") : React.createElement(Trans, null, "Upload a file for Red Hat to analyze"))),
152
152
  React.createElement(CardBody, { "aria-label": t('File upload area'), className: "file-upload-body" },
153
153
  React.createElement(WidgetFileSelector, { isSessionId: props.isSessionId, isPrivate: props.isPrivate, isIdea: props.isIdea, showFileExceed: fileExceedInfo }),
154
154
  !hasSomeSelectedFiles(selectedLocalFiles) ? ((!props.isIdea && props.helperText) || (React.createElement("p", { className: "pf-v6-u-mt-md" },
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  interface IProps extends React.HTMLProps<HTMLButtonElement> {
3
3
  isSessionId: boolean;
4
4
  isPrivate?: boolean;
5
- buttonLabel?: string;
5
+ buttonLabel?: React.ReactNode;
6
6
  isDisabled?: boolean;
7
7
  }
8
8
  declare function FileSelectorButton({ isSessionId, id, className, buttonLabel, isPrivate, isDisabled, ...btnProps }: IProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"FileSelectorButton.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/fileSelectors/FileSelectorButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAO1C,UAAU,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,iBAAS,kBAAkB,CAAC,EACxB,WAAW,EACX,EAAO,EACP,SAA4B,EAC5B,WAA6B,EAC7B,SAAiB,EACjB,UAAkB,EAClB,GAAG,QAAQ,EACd,EAAE,MAAM,qBA8BR;AAED,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"FileSelectorButton.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/fileSelectors/FileSelectorButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAO1C,UAAU,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,iBAAS,kBAAkB,CAAC,EACxB,WAAW,EACX,EAAO,EACP,SAA4B,EAC5B,WAA6B,EAC7B,SAAiB,EACjB,UAAkB,EAClB,GAAG,QAAQ,EACd,EAAE,MAAM,qBA8BR;AAED,eAAe,kBAAkB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { CaseDiagnosticsStatus } from '@cee-eng/hydrajs/@types/api/pcm/preCaseDiagnostics';
2
2
  import { ISlowUploadDetectionConfig } from '@cee-eng/hydrajs/@types/models/attachment';
3
+ import { ApolloQueryClient } from '@rh-support/utils';
3
4
  import { AnalysisStatusConstants, AttachmentReducerDispatchType, IAnalysisResults, ICaseFiles, IFileLocal, IUploadMetadata, UploadStatusConstants } from './AttachmentReducer';
4
5
  export declare const onDrop: (dispatchToAttachmentReducer: AttachmentReducerDispatchType, isSessionId: boolean, isPrivate?: boolean) => (acceptedFiles: File[]) => void;
5
6
  export declare const isUploadingOnSession: (status: string) => status is UploadStatusConstants.uploadingOnSession;
@@ -37,32 +38,32 @@ export declare const isUploadedAndAnalysisFailed: (file: IFileLocal) => boolean;
37
38
  export declare const isUploadedSuccessfully: (file: IFileLocal) => string;
38
39
  export declare const isUploadedAndAnalysisSkipped: (file: IFileLocal) => boolean;
39
40
  export declare const updateUploadMetadata: (dispatch: AttachmentReducerDispatchType, fileIndexToEdit: number, newUploadMetadata: Partial<IUploadMetadata>) => void;
40
- export declare const uploadAllFiles: ({ dispatch, idToUploadTo, caseFiles, isSecureSupport, needsAnalyzing, isSessionId, slowUploadConfig, }: {
41
+ export declare const uploadAllFiles: ({ dispatch, idToUploadTo, caseFiles, needsAnalyzing, isSessionId, slowUploadConfig, apolloClient, caseSalesforceId, }: {
41
42
  dispatch: AttachmentReducerDispatchType;
42
43
  idToUploadTo: string;
43
44
  caseFiles: ICaseFiles;
44
- isSecureSupport: boolean;
45
45
  needsAnalyzing?: boolean;
46
46
  isSessionId?: boolean;
47
47
  slowUploadConfig?: ISlowUploadDetectionConfig;
48
+ apolloClient?: ApolloQueryClient;
49
+ caseSalesforceId?: string;
48
50
  }) => Promise<void>;
49
- export declare const uploadFile: ({ dispatch, idToUploadTo, localFile, originalFile, index, isSecureSupport, needsAnalyzing, isSessionId, slowUploadConfig, }: {
51
+ export declare const uploadFile: ({ dispatch, idToUploadTo, localFile, originalFile, index, needsAnalyzing, isSessionId, slowUploadConfig, apolloClient, caseSalesforceId, }: {
50
52
  dispatch: AttachmentReducerDispatchType;
51
53
  idToUploadTo: string;
52
54
  localFile: IFileLocal;
53
55
  originalFile: File;
54
56
  index: number;
55
- isSecureSupport: boolean;
56
57
  needsAnalyzing?: boolean;
57
58
  isSessionId?: boolean;
58
59
  slowUploadConfig?: ISlowUploadDetectionConfig;
60
+ apolloClient?: ApolloQueryClient;
61
+ caseSalesforceId?: string;
59
62
  }) => Promise<void>;
60
63
  export declare function doSosReportAnalysisForAllFiles(dispatch: any, idToUploadTo: string, localFiles: IFileLocal[], isSessionId: boolean): Promise<void>;
61
64
  export declare function doSosReportAnalysisForFile(dispatch: any, idToUploadTo: string, attachmentId: string, localFile: IFileLocal, isSessionId: boolean, fileIndex: number, fileUploadStatus?: UploadStatusConstants): Promise<void>;
62
65
  export declare function computeAnalysisResults(idToUploadTo: string, attachmentId: string, fileSize: number, isSessionId: boolean, listener: (status: CaseDiagnosticsStatus) => void): Promise<IAnalysisResults>;
63
- export declare function moveSessionAttachmentToCase(dispatch: any, caseNumber: string, sessionId: string, localFile: IFileLocal, fileIndex: number, apolloClient?: {
64
- query: (options: any) => Promise<any>;
65
- }): Promise<void>;
66
+ export declare function moveSessionAttachmentToCase(dispatch: any, caseNumber: string, sessionId: string, localFile: IFileLocal, fileIndex: number, apolloClient?: ApolloQueryClient, caseSalesforceId?: string): Promise<void>;
66
67
  export declare function restoreFilesFromSession(dispatch: any, sessionId: string): Promise<void>;
67
68
  export declare function isFileAnalysisFailedForAllFiles(localFiles: IFileLocal[]): boolean;
68
69
  export declare function isAnyFileAttached(localFiles: IFileLocal[]): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentHelper.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/reducer/AttachmentHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AttachmentHelper.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/reducer/AttachmentHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAEvF,OAAO,EACH,iBAAiB,EAQpB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EACH,uBAAuB,EAEvB,6BAA6B,EAK7B,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,eAAe,EAMf,qBAAqB,EACxB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,MAAM,GACd,6BAA6B,6BAA6B,EAAE,aAAa,OAAO,EAAE,mBAAiB,MACnG,eAAe,IAAI,EAAE,SA+BrB,CAAC;AAiBN,eAAO,MAAM,oBAAoB,GAAI,QAAQ,MAAM,uDAAwD,CAAC;AAC5G,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,oDAAqD,CAAC;AACtG,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,2DAA4D,CAAC;AACpH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,MAAM,wDAAyD,CAAC;AAC9G,eAAO,MAAM,qBAAqB,GAAI,QAAQ,MAAM,wDAAyD,CAAC;AAC9G,eAAO,MAAM,uBAAuB,GAAI,QAAQ,MAAM,kGACiC,CAAC;AACxF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,MAAM,mDAAoD,CAAC;AACxG,eAAO,MAAM,qBAAqB,GAAI,QAAQ,MAAM,0DAA2D,CAAC;AAChH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,uDAAwD,CAAC;AAC1G,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,iDAAkD,CAAC;AAEhG,eAAO,MAAM,oBAAoB,GAAI,QAAQ,MAAM,yDAA0D,CAAC;AAC9G,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,wDAAyD,CAAC;AACxG,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,uDAAwD,CAAC;AAC1G,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,qDAAsD,CAAC;AACtG,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,sDAAuD,CAAC;AAExG,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,uGAAsE,CAAC;AACvH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,+NAC0E,CAAC;AACrH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,yIAAoE,CAAC;AACpH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,qGAAgE,CAAC;AAC9G,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,4CAA6C,CAAC;AAC5F,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,4CAA6C,CAAC;AAE1F,eAAO,MAAM,0BAA0B,GAAI,oBAAoB,UAAU,EAAE,YACmC,CAAC;AAC/G,eAAO,MAAM,0BAA0B,GAAI,oBAAoB,UAAU,EAAE,YACyC,CAAC;AACrH,eAAO,MAAM,4BAA4B,GAAI,oBAAoB,UAAU,EAAE,YASxE,CAAC;AACN,eAAO,MAAM,oBAAoB,GAAI,oBAAoB,UAAU,EAAE,YAAiC,CAAC;AACvG,eAAO,MAAM,qBAAqB,GAAI,oBAAoB,UAAU,EAAE,YACmC,CAAC;AAE1G,eAAO,MAAM,wBAAwB,GAAI,oBAAoB,UAAU,EAAE,YACwC,CAAC;AAElH,eAAO,MAAM,kBAAkB,GAAI,MAAM,UAAU,YACuD,CAAC;AAC3G,eAAO,MAAM,qBAAqB,GAAI,MAAM,UAAU,EAAE,iBAAiB,OAAO,YAOhB,CAAC;AACjE,eAAO,MAAM,eAAe,GAAI,MAAM,UAAU,YAGb,CAAC;AACpC,eAAO,MAAM,qBAAqB,GAAI,MAAM,UAAU,YAGI,CAAC;AAC3D,eAAO,MAAM,2BAA2B,GAAI,MAAM,UAAU,YAC2D,CAAC;AACxH,eAAO,MAAM,sBAAsB,GAAI,MAAM,UAAU,WACoB,CAAC;AAC5E,eAAO,MAAM,4BAA4B,GAAI,MAAM,UAAU,YAEF,CAAC;AAC5D,eAAO,MAAM,oBAAoB,GAC7B,UAAU,6BAA6B,EACvC,iBAAiB,MAAM,EACvB,mBAAmB,OAAO,CAAC,eAAe,CAAC,SAG9C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,uHAUlC;IACC,QAAQ,EAAE,6BAA6B,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,UAAU,CAAC;IAEtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,kBAyBA,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,4IAY9B;IACC,QAAQ,EAAE,6BAA6B,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,UAAU,CAAC;IACtB,YAAY,EAAE,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IAEd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,kBAqKA,CAAC;AAEF,wBAAsB,8BAA8B,CAChD,QAAQ,KAAA,EACR,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,UAAU,EAAE,EACxB,WAAW,EAAE,OAAO,iBAMvB;AAED,wBAAsB,0BAA0B,CAC5C,QAAQ,KAAA,EACR,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,qBAAqB,iBA6D3C;AAED,wBAAsB,sBAAsB,CACxC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,GAClD,OAAO,CAAC,gBAAgB,CAAC,CAwB3B;AAID,wBAAsB,2BAA2B,CAC7C,QAAQ,KAAA,EACR,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,iBAAiB,EAChC,gBAAgB,CAAC,EAAE,MAAM,iBA2E5B;AAED,wBAAsB,uBAAuB,CAAC,QAAQ,KAAA,EAAE,SAAS,EAAE,MAAM,iBA+CxE;AAED,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,UAAU,EAAE,WAEvE;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,WAKzD;AAED,eAAO,MAAM,uBAAuB,GAAI,YAAY,UAAU,KAAG,OAShE,CAAC;AAKF,eAAO,MAAM,2BAA2B,UAOvC,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,oBAAoB,UAAU,EAAE,YAE9E,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,aAAQ,SAUvC,CAAC"}