@rh-support/cases 2.6.182 → 2.6.186

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 (81) hide show
  1. package/lib/esm/components/case-list/CaseList.d.ts +7 -0
  2. package/lib/esm/components/case-list/CaseList.d.ts.map +1 -1
  3. package/lib/esm/components/case-list/CaseList.js +108 -143
  4. package/lib/esm/components/case-list/CaseListContext.d.ts.map +1 -1
  5. package/lib/esm/components/case-list/CaseListContext.js +2 -5
  6. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts +4 -6
  7. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts.map +1 -1
  8. package/lib/esm/components/case-list/CaseListFilterReducer.js +12 -3
  9. package/lib/esm/components/case-list/CaseListReducer.d.ts +10 -22
  10. package/lib/esm/components/case-list/CaseListReducer.d.ts.map +1 -1
  11. package/lib/esm/components/case-list/CaseListReducer.js +7 -25
  12. package/lib/esm/components/case-list/case-list-filters/AccountsFilter.d.ts.map +1 -1
  13. package/lib/esm/components/case-list/case-list-filters/AccountsFilter.js +11 -18
  14. package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.d.ts.map +1 -1
  15. package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.js +5 -4
  16. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts +7 -1
  17. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts.map +1 -1
  18. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.js +15 -7
  19. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts +5 -2
  20. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts.map +1 -1
  21. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.js +14 -14
  22. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts +3 -1
  23. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts.map +1 -1
  24. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.js +2 -2
  25. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts +4 -5
  26. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts.map +1 -1
  27. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.js +54 -15
  28. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts +3 -0
  29. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts.map +1 -1
  30. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.js +44 -18
  31. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts +3 -0
  32. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts.map +1 -1
  33. package/lib/esm/components/case-list/case-list-filters/StatusFilter.js +44 -14
  34. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts +3 -1
  35. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts.map +1 -1
  36. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.js +32 -61
  37. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts +3 -7
  38. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts.map +1 -1
  39. package/lib/esm/components/case-list/case-list-table/CaseListTable.js +58 -69
  40. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts +5 -0
  41. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts.map +1 -1
  42. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.js +68 -38
  43. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.d.ts.map +1 -1
  44. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.js +15 -5
  45. package/lib/esm/components/case-list/case-list-table/SeverityLabel.js +1 -1
  46. package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.d.ts.map +1 -1
  47. package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.js +3 -2
  48. package/lib/esm/components/case-list/case-search/AdvanceSearch.d.ts.map +1 -1
  49. package/lib/esm/components/case-list/case-search/AdvanceSearch.js +1 -1
  50. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.d.ts.map +1 -1
  51. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.js +0 -1
  52. package/lib/esm/components/case-list/case-search/CaseSearch.d.ts.map +1 -1
  53. package/lib/esm/components/case-list/case-search/CaseSearch.js +6 -6
  54. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.d.ts.map +1 -1
  55. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +1 -2
  56. package/lib/esm/css/caseList.css +22 -99
  57. package/lib/esm/enums/case.d.ts +1 -2
  58. package/lib/esm/enums/case.d.ts.map +1 -1
  59. package/lib/esm/enums/case.js +1 -14
  60. package/lib/esm/hooks/useExportCaseListCSV.d.ts.map +1 -1
  61. package/lib/esm/hooks/useExportCaseListCSV.js +9 -1
  62. package/lib/esm/test-utils/mockData.js +1 -1
  63. package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
  64. package/lib/esm/utils/caseSearchUtils.js +6 -28
  65. package/lib/esm/utils/constants.d.ts +1 -2
  66. package/lib/esm/utils/constants.d.ts.map +1 -1
  67. package/lib/esm/utils/constants.js +3 -14
  68. package/lib/esm/utils/mockSolrResponse.js +1 -1
  69. package/package.json +6 -7
  70. package/lib/esm/utils/caseListGraphQLUtils.d.ts +0 -28
  71. package/lib/esm/utils/caseListGraphQLUtils.d.ts.map +0 -1
  72. package/lib/esm/utils/caseListGraphQLUtils.js +0 -244
  73. package/lib/esm/utils/caseListMapper.d.ts +0 -6
  74. package/lib/esm/utils/caseListMapper.d.ts.map +0 -1
  75. package/lib/esm/utils/caseListMapper.js +0 -36
  76. package/lib/esm/utils/caseListVariablesBuilder.d.ts +0 -14
  77. package/lib/esm/utils/caseListVariablesBuilder.d.ts.map +0 -1
  78. package/lib/esm/utils/caseListVariablesBuilder.js +0 -193
  79. package/lib/esm/utils/statusUtils.d.ts +0 -3
  80. package/lib/esm/utils/statusUtils.d.ts.map +0 -1
  81. package/lib/esm/utils/statusUtils.js +0 -22
@@ -1,10 +1,9 @@
1
- import { Alert, AlertVariant, Bullseye, Button, EmptyState, EmptyStateBody, EmptyStateFooter, EmptyStateVariant, Spinner, } from '@patternfly/react-core';
2
- import RedoAltIcon from '@patternfly/react-icons/dist/js/icons/redo-alt-icon';
1
+ import { Bullseye, Button, EmptyState, EmptyStateBody, EmptyStateFooter, EmptyStateVariant, PaginationVariant, Spinner, } from '@patternfly/react-core';
3
2
  import SearchIcon from '@patternfly/react-icons/dist/js/icons/search-icon';
4
3
  import { Table, TableVariant, Tbody, Td, Th, Thead, Tr, Visibility } from '@patternfly/react-table';
5
- import { TableComponent } from '@rh-support/components';
4
+ import { TableComponent, TablePagination } from '@rh-support/components';
6
5
  import { GlobalMetadataDispatchContext, updateUserPreferences, useGlobalStateContext, UserPreferencesKeys, } from '@rh-support/react-context';
7
- import { dtmTrackEventCaseStepEncountered, formatDate, toNewCaseTypeSwitcher } from '@rh-support/utils';
6
+ import { dtmTrackEventCaseStepEncountered, formatDate, scrollIntoView, toNewCaseTypeSwitcher } from '@rh-support/utils';
8
7
  import find from 'lodash/find';
9
8
  import flatMap from 'lodash/flatMap';
10
9
  import includes from 'lodash/includes';
@@ -16,7 +15,7 @@ import { Trans, useTranslation } from 'react-i18next';
16
15
  import { Link } from 'react-router-dom';
17
16
  import { CaseListColumnIds } from '../../../enums/case';
18
17
  import { CaseListFilterDispatchContext, CaseListFilterStateContext } from '../CaseListFilterContext';
19
- import { clearFilters, resetFilterToDefaultState, updateSort } from '../CaseListFilterReducer';
18
+ import { clearFilters, resetFilterToDefaultState, updatePagination, updateSort, } from '../CaseListFilterReducer';
20
19
  import SeverityLabel from './SeverityLabel';
21
20
  import { TableColumnSelector } from './table-column-selector/TableColumnSelector';
22
21
  import { TableActionsDropdown } from './TableActionsDropdown';
@@ -37,7 +36,7 @@ const EMPTY_STATE_NO_FILTERS_ERROR = (React.createElement(React.Fragment, null,
37
36
  React.createElement("a", { href: "https://status.redhat.com/", target: "_blank", rel: "noopener noreferrer" }, "status page"),
38
37
  "to see if there are any known issues"));
39
38
  export function CaseListTable(props) {
40
- var _a, _b;
39
+ var _a, _b, _c, _d, _e, _f;
41
40
  const [selectedColumns, setSelectedColumns] = useState([]);
42
41
  const { t } = useTranslation();
43
42
  const [selectedCases, setSelectedCases] = useState([]);
@@ -50,7 +49,7 @@ export function CaseListTable(props) {
50
49
  const [activeSortIndex, setActiveSortIndex] = useState();
51
50
  const [activeSortDirection, setActiveSortDirection] = useState();
52
51
  const [sortedCaseListData, setSortedCaseListData] = useState(caseListData);
53
- const { globalMetadataState: { hydraUserPreferences, loggedInUserRights }, } = useGlobalStateContext();
52
+ const { globalMetadataState: { navBarRef, hydraUserPreferences, loggedInUserRights }, } = useGlobalStateContext();
54
53
  const dispatch = useContext(CaseListFilterDispatchContext);
55
54
  const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
56
55
  const { filterInfo, filterQueryInfo } = useContext(CaseListFilterStateContext);
@@ -156,6 +155,12 @@ export function CaseListTable(props) {
156
155
  console.error('Could not save selected columns in cache');
157
156
  }
158
157
  };
158
+ const onPerPageSelect = (paginationInfo) => {
159
+ updatePagination(dispatch, paginationInfo);
160
+ };
161
+ const onSetPage = (paginationInfo) => {
162
+ updatePagination(dispatch, paginationInfo);
163
+ };
159
164
  const onRowClick = (ev, row) => {
160
165
  // we dont want to call onRowClick if user changes the checkbox value
161
166
  if (ev.target.tagName === 'INPUT') {
@@ -214,11 +219,15 @@ export function CaseListTable(props) {
214
219
  if (props.isCaseListPageLoading)
215
220
  return 0;
216
221
  let paginationCount = (_b = (_a = props.caseList) === null || _a === void 0 ? void 0 : _a.numFound) !== null && _b !== void 0 ? _b : 0;
217
- // Salesforce has a limit of 4000 cases per page
218
- // So we need to limit the number of cases returned to 4000
219
- paginationCount = paginationCount > 4000 ? 4000 : paginationCount;
222
+ // solr return 400 if we fetch the elements after 10000 limit
223
+ // so we need to restrict the user from FE too
224
+ paginationCount = paginationCount > 10000 ? 10000 : paginationCount;
220
225
  return paginationCount;
221
226
  };
227
+ const onBottomPaginationSetPage = (paginationInfo) => {
228
+ onSetPage(paginationInfo);
229
+ scrollIntoView(tableToolbarRef, { navBarRef, timeout: 0, onlyIfNotInViewport: true, offset: 30 });
230
+ };
222
231
  const getSortableRowValues = (row) => {
223
232
  const { case_number, case_summary, case_contactName, case_lastModifiedDate, case_severity, case_status, case_createdDate, case_accountNumber, case_alternate_id, case_type, case_closedDate, case_folderName, case_lastModifiedByName, case_createdByName, case_version, id, case_customer_escalation, case_product, } = row;
224
233
  return [
@@ -340,15 +349,8 @@ export function CaseListTable(props) {
340
349
  React.createElement("div", { className: "toolbar-actions pf-v6-l-flex" },
341
350
  React.createElement(TableColumnSelector, { onColumnSelectorChange: onColumnSelectorChange, cachedColumns: selectedColumns }),
342
351
  React.createElement(TableActionsDropdown, { caseList: caseListData, selectedCases: selectedCases, onCasesCloseSuccess: onCasesCloseSuccess, currentFilteredCaseList: props.caseList })),
343
- !props.isCaseListPageLoading && caseListData.length > 0 && (React.createElement("span", { className: "case-count-indicator" },
344
- React.createElement("strong", null, caseListData.length),
345
- " ",
346
- React.createElement(Trans, null, "of"),
347
- ' ',
348
- React.createElement("strong", null,
349
- getItemCount(),
350
- " ",
351
- React.createElement(Trans, null, "loaded"))))),
352
+ React.createElement("span", { className: "toolbar-pagination" },
353
+ React.createElement(TablePagination, { perPage: (_c = props.paginationInfo) === null || _c === void 0 ? void 0 : _c.pageSize, currentPage: (_d = props.paginationInfo) === null || _d === void 0 ? void 0 : _d.currentPage, onPerPageSelect: onPerPageSelect, onSetPage: onSetPage, variant: PaginationVariant.top, itemCount: getItemCount() }))),
352
354
  React.createElement("div", { className: "pf-v6-c-scroll-inner-wrapper" },
353
355
  React.createElement(Table, { variant: TableVariant.compact, "aria-label": "case-list", className: "case-list-table" },
354
356
  React.createElement(Thead, null,
@@ -365,54 +367,41 @@ export function CaseListTable(props) {
365
367
  ? '0px'
366
368
  : undefined,
367
369
  }, id: column.id, sort: column.sortable ? onSort(index) : undefined, key: column.id }, column.title))))),
368
- React.createElement(Tbody, null, !props.isCaseListPageLoading && (caseListData || []).length < 1 ? (noResultFoundRow) : props.isCaseListPageLoading ? (loadingRowDefault) : (React.createElement(React.Fragment, null, sortedCaseListData === null || sortedCaseListData === void 0 ? void 0 :
369
- sortedCaseListData.map((row, rowIndex) => (React.createElement(Tr, { onRowClick: (event) => (onRowClick ? onRowClick(event, row) : ''), key: row === null || row === void 0 ? void 0 : row.case_number },
370
- React.createElement(Td, { className: "pf-v6-u-pl-md", select: {
371
- rowIndex: rowIndex,
372
- onSelect: (_event, _idx) => onRowSelect(_event, row === null || row === void 0 ? void 0 : row.case_number),
373
- isSelected: selectedCases.includes(row === null || row === void 0 ? void 0 : row.case_number),
374
- } }),
375
- React.createElement(Td, { dataLabel: "Case ID", id: row.case_number, scope: "row" },
376
- React.createElement("div", { className: "case-number-section" },
377
- React.createElement(Link, { to: `/case/${row.case_number}`, onClick: () => dtmTrackEventCaseStepEncountered('review', row.case_number, row.case_product, row.case_version) },
378
- React.createElement("span", { className: "case-number" }, row.case_number)),
379
- row.case_customer_escalation ? (React.createElement("div", { className: "escalation-label" },
380
- React.createElement(Trans, null, "Escalated"))) : (''))),
381
- React.createElement(Td, { dataLabel: "Title" }, row.case_summary),
382
- React.createElement(Td, { className: !isColumnVisible('contactName') ? Visibility.hidden : '', dataLabel: "Owner" }, row.case_contactName),
383
- React.createElement(Td, { className: !isColumnVisible('lastModifiedDate') ? Visibility.hidden : '', dataLabel: "Modified by" },
384
- React.createElement("span", { className: "modified-name" }, row.case_lastModifiedByName),
385
- row.case_lastModifiedDate ? formatDate(row.case_lastModifiedDate) : ''),
386
- React.createElement(Td, { className: !isColumnVisible('severity') ? Visibility.hidden : '', dataLabel: "Severity" },
387
- React.createElement(SeverityLabel, { sevValue: row.case_severity })),
388
- React.createElement(Td, { className: !isColumnVisible('status') ? Visibility.hidden : '', dataLabel: "Status" }, row.case_status),
389
- React.createElement(Td, { className: !isColumnVisible('createdDate') ? Visibility.hidden : '', dataLabel: "Created by" },
390
- React.createElement("span", { className: "created-name" }, row.case_createdByName),
391
- row.case_createdDate ? formatDate(row.case_createdDate) : ''),
392
- React.createElement(Td, { className: !isColumnVisible('product') ? Visibility.hidden : '', dataLabel: "Product and Version" },
393
- row.case_product,
394
- React.createElement("span", { style: { display: 'block' } }, row.case_version)),
395
- React.createElement(Td, { className: !isColumnVisible('accountNumber') ? Visibility.hidden : '', dataLabel: "Account number" }, row.case_accountNumber),
396
- React.createElement(Td, { className: !isColumnVisible('alternateCaseId') ? Visibility.hidden : '', "data-label": "Personal reference number" }, row.case_alternate_id ? row.case_alternate_id : ''),
397
- React.createElement(Td, { className: !isColumnVisible('type') ? Visibility.hidden : '', "data-label": "Support type" }, row.case_type),
398
- React.createElement(Td, { className: !isColumnVisible('closedDate') ? Visibility.hidden : '', "data-label": "Closed date" }, row.case_closedDate ? formatDate(row.case_closedDate) : ''),
399
- React.createElement(Td, { className: !isColumnVisible('folderName') ? Visibility.hidden : '', "data-label": "Group" }, row.case_folderName ? row.case_folderName : '')))),
400
- (props.hasNextPage || props.isLoadingMore || props.loadMoreError) && (React.createElement(Tr, { key: "skeleton-loader-row", className: "skeleton-loader-row" },
401
- React.createElement(Td, { className: "pf-v6-u-pl-md" },
402
- React.createElement("div", { ref: props.sentinelRef, className: "skeleton-sentinel" },
403
- React.createElement("span", { className: "skeleton-bar skeleton-bar--checkbox" }))),
404
- visibleCaseListColumns.map((col) => (React.createElement(Td, { key: `skeleton-${col.id}` },
405
- React.createElement("span", { className: "skeleton-bar" }))))))))))),
406
- props.loadMoreError && props.loadMoreRetryCount <= 1 && (React.createElement("div", { className: "infinite-scroll-footer-message" },
407
- React.createElement(Button, { className: "infinite-scroll-retry-btn", variant: "secondary", onClick: props.onRetryLoadMore, icon: React.createElement(RedoAltIcon, null) },
408
- React.createElement(Trans, null, "try loading again")))),
409
- props.loadMoreError && props.loadMoreRetryCount > 1 && (React.createElement("div", { className: "infinite-scroll-footer-message" },
410
- React.createElement(Alert, { className: "infinite-scroll-alert pf-v6-u-font-weight-bold", variant: AlertVariant.danger, isInline: true, isPlain: true, title: React.createElement("span", null,
411
- React.createElement(Trans, null, "We're having trouble loading your cases. Please refresh or"),
412
- ' ',
413
- React.createElement(Button, { variant: "link", isInline: true, onClick: props.onRetryLoadMore },
414
- React.createElement(Trans, null, "try again")),
415
- ".") }))),
416
- !props.hasNextPage && !props.isLoadingMore && !props.loadMoreError && caseListData.length > 0 && (React.createElement("div", { className: "infinite-scroll-footer-message infinite-scroll-footer-text pf-v6-u-font-weight-bold pf-v6-u-color-200" },
417
- React.createElement(Trans, null, "No more cases to load"))))));
370
+ React.createElement(Tbody, null, !props.isCaseListPageLoading && (caseListData || []).length < 1
371
+ ? noResultFoundRow
372
+ : props.isCaseListPageLoading
373
+ ? loadingRowDefault
374
+ : sortedCaseListData === null || sortedCaseListData === void 0 ? void 0 : sortedCaseListData.map((row, index) => (React.createElement(Tr, { onRowClick: (event) => (onRowClick ? onRowClick(event, row) : ''), key: row === null || row === void 0 ? void 0 : row.case_number },
375
+ React.createElement(Td, { className: "pf-v6-u-pl-md", select: {
376
+ rowIndex: index,
377
+ onSelect: (_event, index) => onRowSelect(_event, row === null || row === void 0 ? void 0 : row.case_number),
378
+ isSelected: selectedCases.includes(row === null || row === void 0 ? void 0 : row.case_number),
379
+ } }),
380
+ React.createElement(Td, { dataLabel: "Case ID", id: row.case_number, scope: "row" },
381
+ React.createElement("div", { className: "case-number-section" },
382
+ React.createElement(Link, { to: `/case/${row.case_number}`, onClick: () => dtmTrackEventCaseStepEncountered('review', row.case_number, row.case_product, row.case_version) },
383
+ React.createElement("span", { className: "case-number" }, row.case_number)),
384
+ row.case_customer_escalation ? (React.createElement("div", { className: "escalation-label" },
385
+ React.createElement(Trans, null, "Escalated"))) : (''))),
386
+ React.createElement(Td, { dataLabel: "Title" }, row.case_summary),
387
+ React.createElement(Td, { className: !isColumnVisible('contactName') ? Visibility.hidden : '', dataLabel: "Owner" }, row.case_contactName),
388
+ React.createElement(Td, { className: !isColumnVisible('lastModifiedDate') ? Visibility.hidden : '', dataLabel: "Modified by" },
389
+ React.createElement("span", { className: "modified-name" }, row.case_lastModifiedByName),
390
+ row.case_lastModifiedDate ? formatDate(row.case_lastModifiedDate) : ''),
391
+ React.createElement(Td, { className: !isColumnVisible('severity') ? Visibility.hidden : '', dataLabel: "Severity" },
392
+ React.createElement(SeverityLabel, { sevValue: row.case_severity })),
393
+ React.createElement(Td, { className: !isColumnVisible('status') ? Visibility.hidden : '', dataLabel: "Status" }, row.case_status),
394
+ React.createElement(Td, { className: !isColumnVisible('createdDate') ? Visibility.hidden : '', dataLabel: "Created by" },
395
+ React.createElement("span", { className: "created-name" }, row.case_createdByName),
396
+ row.case_createdDate ? formatDate(row.case_createdDate) : ''),
397
+ React.createElement(Td, { className: !isColumnVisible('product') ? Visibility.hidden : '', dataLabel: "Product and Version" },
398
+ row.case_product,
399
+ React.createElement("span", { style: { display: 'block' } }, row.case_version)),
400
+ React.createElement(Td, { className: !isColumnVisible('accountNumber') ? Visibility.hidden : '', dataLabel: "Account number" }, row.case_accountNumber),
401
+ React.createElement(Td, { className: !isColumnVisible('alternateCaseId') ? Visibility.hidden : '', "data-label": "Personal reference number" }, row.case_alternate_id ? row.case_alternate_id : ''),
402
+ React.createElement(Td, { className: !isColumnVisible('type') ? Visibility.hidden : '', "data-label": "Support type" }, row.case_type),
403
+ React.createElement(Td, { className: !isColumnVisible('closedDate') ? Visibility.hidden : '', "data-label": "Closed date" }, row.case_closedDate ? formatDate(row.case_closedDate) : ''),
404
+ React.createElement(Td, { className: !isColumnVisible('folderName') ? Visibility.hidden : '', "data-label": "Group" }, row.case_folderName ? row.case_folderName : ''))))))),
405
+ React.createElement("footer", { className: "toolbar-pagination", "data-tracking-id": "case-list-table-pagination" },
406
+ React.createElement(TablePagination, { perPage: (_e = props === null || props === void 0 ? void 0 : props.paginationInfo) === null || _e === void 0 ? void 0 : _e.pageSize, currentPage: (_f = props === null || props === void 0 ? void 0 : props.paginationInfo) === null || _f === void 0 ? void 0 : _f.currentPage, onPerPageSelect: onPerPageSelect, onSetPage: onBottomPaginationSetPage, variant: PaginationVariant.bottom, itemCount: getItemCount() })))));
418
407
  }
@@ -1,10 +1,15 @@
1
1
  import './DownloadCSVFileModal.scss';
2
+ import { IAccount } from '@cee-eng/hydrajs/@types/models/account';
3
+ import { IApiResponseDetails } from '@rh-support/types/shared';
4
+ import { UserAuth } from '@rh-support/user-permissions';
2
5
  import React from 'react';
3
6
  import { ICaseListFilterState } from '../CaseListFilterReducer';
4
7
  interface IProps {
5
8
  isDisabled?: boolean;
6
9
  onModalshow: boolean;
7
10
  onClose: () => void;
11
+ loggedInUserRights: IApiResponseDetails<UserAuth>;
12
+ loggedInUsersAccount: IApiResponseDetails<Partial<IAccount>>;
8
13
  filterState: ICaseListFilterState;
9
14
  selectedCases: string[];
10
15
  filteredCaseCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"DownloadCSVFileModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/DownloadCSVFileModal.tsx"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AAyBrC,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,UAAU,MAAM;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,oBAAoB,CAAC;IAClC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAWD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,MAAM,qBA8WzD"}
1
+ {"version":3,"file":"DownloadCSVFileModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/DownloadCSVFileModal.tsx"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AAGrC,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAqBlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,UAAU,MAAM;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAClD,oBAAoB,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAE,oBAAoB,CAAC;IAClC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAoBD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,MAAM,qBA4ZzD"}
@@ -8,19 +8,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import './DownloadCSVFileModal.scss';
11
- import { useApolloClient } from '@apollo/client/react';
11
+ import { publicApi } from '@cee-eng/hydrajs';
12
12
  import { Button, Checkbox, Form, FormGroup, Grid, GridItem, InputGroup, Modal, ModalBody, ModalFooter, ModalHeader, ModalVariant, Spinner, TextInput, ValidatedOptions, } from '@patternfly/react-core';
13
13
  import DownloadIcon from '@patternfly/react-icons/dist/js/icons/download-icon';
14
14
  import TimesCircleIcon from '@patternfly/react-icons/dist/js/icons/times-circle-icon';
15
- import { ToastNotification } from '@rh-support/components';
15
+ import { ToastNotification, useFetch } from '@rh-support/components';
16
16
  import { downloadCSV, formatDateTime, toNewCaseTypeSwitcher } from '@rh-support/utils';
17
17
  import { isEmpty } from 'lodash';
18
18
  import React, { useEffect, useMemo, useState } from 'react';
19
19
  import { useTranslation } from 'react-i18next';
20
- import { SolrKeys } from '../../../enums/filters';
21
- import { getCaseListFromGraphQL } from '../../../utils/caseListGraphQLUtils';
22
- import { mapSfdcStatusToPortalStatus } from '../../../utils/statusUtils';
23
- const csvHeaders = [
20
+ import { SFDCKeys, SolrKeys } from '../../../enums/filters';
21
+ import { getCaseListFromSolr } from '../../../utils/caseListUtils';
22
+ import { createQueryForCSVDownload } from '../../../utils/caseSearchUtils';
23
+ const csvHeadersSolr = [
24
24
  { label: 'Case number', key: SolrKeys.caseNumber },
25
25
  {
26
26
  label: 'Case link',
@@ -28,12 +28,20 @@ const csvHeaders = [
28
28
  },
29
29
  { label: 'Title', key: SolrKeys.caseSummary },
30
30
  ];
31
+ const csvHeadersSFDC = [
32
+ { label: 'Case number', key: SFDCKeys.caseNumber },
33
+ {
34
+ label: 'Case link',
35
+ key: 'case_link',
36
+ },
37
+ { label: 'Title', key: SFDCKeys.caseSummary },
38
+ ];
31
39
  export default function DownloadCSVFileModal(props) {
32
- const { onClose, onModalshow, isDisabled, filterState, selectedCases, filteredCaseCount } = props;
40
+ const { onClose, onModalshow, isDisabled, loggedInUserRights, loggedInUsersAccount, filterState, selectedCases, filteredCaseCount, } = props;
33
41
  const { t } = useTranslation();
34
- const apolloClient = useApolloClient();
35
- const [isFetching, setIsFetching] = useState(false);
42
+ const { isFetching, request } = useFetch(getCaseListFromSolr, { propgateErrors: true });
36
43
  const [downloadCSVFileName, setDownloadCSVFileName] = useState('CaseList.csv');
44
+ const [isFetchingSFDC, setIsFetchingSFDC] = useState(false);
37
45
  const [checkboxes, setCheckboxes] = useState({
38
46
  selectAll: false,
39
47
  ownerName: false,
@@ -49,87 +57,87 @@ export default function DownloadCSVFileModal(props) {
49
57
  group: false,
50
58
  });
51
59
  const [isSaveClicked, setIsSavedClicked] = useState(false);
52
- function getKey(key) {
53
- return SolrKeys[key];
60
+ function getKey(key, isSecureSupport) {
61
+ return isSecureSupport ? SFDCKeys[key] : SolrKeys[key];
54
62
  }
63
+ const isSecureSupportUser = loggedInUsersAccount.data.secureSupport;
55
64
  const headerDefinitions = useMemo(() => [
56
65
  {
57
66
  checkbox: checkboxes.ownerName,
58
- key: getKey('ownerName'),
67
+ key: getKey('ownerName', isSecureSupportUser),
59
68
  label: 'Owner name',
60
69
  },
61
70
  {
62
71
  checkbox: checkboxes.severity,
63
- key: getKey('severity'),
72
+ key: getKey('severity', isSecureSupportUser),
64
73
  label: 'Severity',
65
74
  },
66
75
  {
67
76
  checkbox: checkboxes.createdBy,
68
- key: getKey('createdBy'),
77
+ key: getKey('createdBy', isSecureSupportUser),
69
78
  label: 'Created by',
70
79
  },
71
80
  {
72
81
  checkbox: checkboxes.createdBy,
73
- key: getKey('createdDate'),
82
+ key: getKey('createdDate', isSecureSupportUser),
74
83
  label: 'Created date',
75
84
  transform: formatDateTime,
76
85
  },
77
86
  {
78
87
  checkbox: checkboxes.accountNumber,
79
- key: getKey('accountNumber'),
88
+ key: getKey('accountNumber', isSecureSupportUser),
80
89
  label: 'Account number',
81
90
  },
82
91
  {
83
92
  checkbox: checkboxes.type,
84
- key: getKey('type'),
93
+ key: getKey(isSecureSupportUser ? 'caseType' : 'type', isSecureSupportUser),
85
94
  label: 'Support type',
86
95
  },
87
96
  {
88
97
  checkbox: checkboxes.modifiedBy,
89
- key: getKey('modifiedBy'),
98
+ key: getKey('modifiedBy', isSecureSupportUser),
90
99
  label: 'Modified by',
91
100
  },
92
101
  {
93
102
  checkbox: checkboxes.modifiedBy,
94
- key: getKey('modifiedDate'),
103
+ key: getKey('modifiedDate', isSecureSupportUser),
95
104
  label: 'Modified date',
96
105
  transform: formatDateTime,
97
106
  },
98
107
  {
99
108
  checkbox: checkboxes.status,
100
- key: getKey('status'),
109
+ key: getKey('status', isSecureSupportUser),
101
110
  label: 'Status',
102
- transform: mapSfdcStatusToPortalStatus,
103
111
  },
104
112
  {
105
113
  checkbox: checkboxes.productVersion,
106
- key: getKey('product'),
114
+ key: getKey('product', isSecureSupportUser),
107
115
  label: 'Product',
108
116
  },
109
117
  {
110
118
  checkbox: checkboxes.productVersion,
111
- key: getKey('version'),
119
+ key: getKey('version', isSecureSupportUser),
112
120
  label: 'Version',
113
121
  },
114
122
  {
115
123
  checkbox: checkboxes.alternateId,
116
- key: getKey('alternateId'),
124
+ key: getKey('alternateId', isSecureSupportUser),
117
125
  label: 'Alternate ID',
118
126
  },
119
127
  {
120
128
  checkbox: checkboxes.caseClosedDate,
121
- key: getKey('caseClosedDate'),
129
+ key: getKey('caseClosedDate', isSecureSupportUser),
122
130
  label: 'Closed date',
123
131
  transform: formatDateTime,
124
132
  },
125
133
  {
126
134
  checkbox: checkboxes.group,
127
- key: getKey('groupName'),
135
+ key: getKey('groupName', isSecureSupportUser),
128
136
  label: 'Group',
129
137
  },
130
- ], [checkboxes]);
138
+ ], [checkboxes, isSecureSupportUser]);
131
139
  const getHeaders = () => {
132
- const updatedCsvHeaders = [...csvHeaders];
140
+ const updatedCsvHeaders = isSecureSupportUser ? csvHeadersSFDC : csvHeadersSolr;
133
141
  headerDefinitions.forEach((headerDefinition) => {
134
142
  const { checkbox, key, label, transform } = headerDefinition;
135
143
  const index = updatedCsvHeaders.findIndex((header) => header.key === key);
@@ -146,8 +154,9 @@ export default function DownloadCSVFileModal(props) {
146
154
  });
147
155
  return updatedCsvHeaders;
148
156
  };
149
- const isFetchingCSVData = isFetching;
150
- const splitExtensionName = downloadCSVFileName.split('.')[0].replace(/ +/g, '');
157
+ const isFetchingCSVData = isFetching || isFetchingSFDC;
158
+ const partnerSearch = loggedInUserRights.data.hasManagedAccounts();
159
+ const splitExtensionName = downloadCSVFileName.split('.')[0].replace(/ +/g, ''); // To split and trim value before saving PDF
151
160
  const onCancel = () => {
152
161
  onClose && onClose();
153
162
  setIsSavedClicked(false);
@@ -164,16 +173,15 @@ export default function DownloadCSVFileModal(props) {
164
173
  };
165
174
  const checkboxValues = Object.values(checkboxes).slice(1); // as we don't want selectAll value
166
175
  const allCheckBoxNotSelected = checkboxValues.includes(false);
176
+ // For SOLR
167
177
  const onExportCSVClick = () => __awaiter(this, void 0, void 0, function* () {
168
178
  try {
169
179
  setIsSavedClicked(true);
170
180
  if (!isEmpty(splitExtensionName)) {
171
- setIsFetching(true);
172
- const hasSelectedCases = selectedCases.length > 0;
173
- const csvLimit = hasSelectedCases ? selectedCases.length : 1000;
174
- const result = yield getCaseListFromGraphQL(filterState, apolloClient, csvLimit, undefined, hasSelectedCases ? selectedCases : undefined);
175
- setIsFetching(false);
176
- const updatedCsvData = result.caseListResponse.response.docs.map((row) => (Object.assign(Object.assign({}, row), { case_type: toNewCaseTypeSwitcher(row.case_type), case_link: `https://${window.location.host}${window.location.pathname}/#/case/${row.case_number}` })));
181
+ const query = createQueryForCSVDownload(filterState, loggedInUserRights.data, loggedInUsersAccount.data, selectedCases);
182
+ const res = yield request(query, partnerSearch, null, isSecureSupportUser);
183
+ // To map the values in csv to new support type
184
+ const updatedCsvData = res.response.docs.map((row) => (Object.assign(Object.assign({}, row), { case_type: toNewCaseTypeSwitcher(row.case_type), case_link: `https://${window.location.host}${window.location.pathname}/#/case/${row.case_number}` })));
177
185
  downloadCSV(updatedCsvData, getHeaders(), splitExtensionName ? `${splitExtensionName}.csv` : 'CaseList.csv');
178
186
  onCancel();
179
187
  ToastNotification.addSuccessMessage(t('File downloaded successfully!'));
@@ -181,11 +189,33 @@ export default function DownloadCSVFileModal(props) {
181
189
  }
182
190
  }
183
191
  catch (e) {
184
- setIsFetching(false);
185
192
  onCancel();
186
193
  ToastNotification.addDangerMessage(t('File could not be downloaded. Please try again! '));
187
194
  }
188
195
  });
196
+ // For SFDC
197
+ const onExportCSVClickSecureSupport = () => __awaiter(this, void 0, void 0, function* () {
198
+ try {
199
+ setIsSavedClicked(true);
200
+ if (!isEmpty(splitExtensionName)) {
201
+ const sfdcFilter = createQueryForCSVDownload(filterState, loggedInUserRights.data, loggedInUsersAccount.data, selectedCases);
202
+ setIsFetchingSFDC(true);
203
+ const sfdcResponse = yield publicApi.caseList.getCaseListFromSFDC(sfdcFilter, false, true);
204
+ setIsFetchingSFDC(false);
205
+ // To map the values in csv to new support type
206
+ const updatedCsvData = sfdcResponse.cases.map((row) => (Object.assign(Object.assign({}, row), { caseType: toNewCaseTypeSwitcher(row.caseType), case_link: `https://${window.location.host}${window.location.pathname}/#/case/${row.caseNumber}` })));
207
+ downloadCSV(updatedCsvData, getHeaders(), splitExtensionName ? `${splitExtensionName}.csv` : 'CaseList.csv');
208
+ onCancel();
209
+ ToastNotification.addSuccessMessage(t('File downloaded successfully!'));
210
+ setIsSavedClicked(false);
211
+ }
212
+ }
213
+ catch (e) {
214
+ setIsFetchingSFDC(false);
215
+ onCancel();
216
+ ToastNotification.addDangerMessage(t('Could not export CSV'));
217
+ }
218
+ });
189
219
  const handleSelectAll = () => {
190
220
  const newSelectAllState = !checkboxes.selectAll;
191
221
  const updatedCheckboxes = {
@@ -264,6 +294,6 @@ export default function DownloadCSVFileModal(props) {
264
294
  React.createElement("p", null, downloadCSVModalDescription(selectedCases.length || filteredCaseCount)),
265
295
  downloadCSVModalBody()),
266
296
  React.createElement(ModalFooter, null,
267
- React.createElement(Button, { key: "submit", icon: isFetchingCSVData ? React.createElement(Spinner, { size: "md", "aria-label": "loading" }) : React.createElement(DownloadIcon, null), variant: "primary", "data-tracking-id": "download-csv-modal-submit", onClick: onExportCSVClick, isDisabled: (isSaveClicked && isEmpty(splitExtensionName)) || isDisabled || isFetchingCSVData }, t('Download')),
297
+ React.createElement(Button, { key: "submit", icon: isFetchingCSVData ? React.createElement(Spinner, { size: "md", "aria-label": "loading" }) : React.createElement(DownloadIcon, null), variant: "primary", "data-tracking-id": "download-csv-modal-submit", onClick: isSecureSupportUser ? onExportCSVClickSecureSupport : onExportCSVClick, isDisabled: (isSaveClicked && isEmpty(splitExtensionName)) || isDisabled || isFetchingCSVData }, t('Download')),
268
298
  React.createElement(Button, { key: "back", variant: "secondary", onClick: onCancel, isDisabled: isDisabled || isFetchingCSVData, "data-tracking-id": "download-csv-modal-cancel" }, t('Cancel')))));
269
299
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExportCaseListCSV.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/ExportCaseListCSV.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAA+B,MAAM,OAAO,CAAC;AAGpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAI7D,UAAU,MAAM;IACZ,uBAAuB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC1D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAID,wBAAgB,iBAAiB,CAAC,EAAE,uBAAuB,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,MAAM,qBAoDxG"}
1
+ {"version":3,"file":"ExportCaseListCSV.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/ExportCaseListCSV.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAA+B,MAAM,OAAO,CAAC;AAGpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAK7D,UAAU,MAAM;IACZ,uBAAuB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC1D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAID,wBAAgB,iBAAiB,CAAC,EAAE,uBAAuB,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,MAAM,qBAqExG"}
@@ -1,6 +1,9 @@
1
- import { Button } from '@patternfly/react-core';
1
+ import { Button, Spinner } from '@patternfly/react-core';
2
+ import { useFetch } from '@rh-support/components';
3
+ import { GlobalMetadataStateContext } from '@rh-support/react-context';
2
4
  import React, { useContext, useState } from 'react';
3
5
  import { Trans, useTranslation } from 'react-i18next';
6
+ import { getCaseListFromSolr } from '../../../utils/caseListUtils';
4
7
  import { CaseListFilterStateContext } from '../CaseListFilterContext';
5
8
  import DownloadCSVFileModal from './DownloadCSVFileModal';
6
9
  const MAX_LIMIT = 1000;
@@ -10,10 +13,14 @@ export function ExportCaseListCSV({ currentFilteredCaseList, selectedCases, isEx
10
13
  const btnToolTip = t('Export the current list of cases to CSV. Please note that exporting a large number of cases may take a while.');
11
14
  const maxLengthTooltip = t('Export the current list of cases to CSV. Please note that only the top {{limit}} cases will be exported and that it may take awhile.', { limit: MAX_LIMIT });
12
15
  const currentFilteredCaseCount = (_a = currentFilteredCaseList === null || currentFilteredCaseList === void 0 ? void 0 : currentFilteredCaseList.numFound) !== null && _a !== void 0 ? _a : 0;
16
+ const { isFetching } = useFetch(getCaseListFromSolr, { propgateErrors: true });
13
17
  const [openUpdateSeverityModal, setOpenUpdateSeverityModal] = useState(false);
14
- const isBtnDisabled = currentFilteredCaseCount === 0;
18
+ const isFetchingCSVData = isFetching;
19
+ const isBtnDisabled = isFetchingCSVData || currentFilteredCaseCount === 0;
15
20
  let btnTitle = currentFilteredCaseCount >= MAX_LIMIT ? maxLengthTooltip : btnToolTip;
16
21
  const filterState = useContext(CaseListFilterStateContext);
22
+ const { globalMetadataState: { loggedInUserRights, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
23
+ // To show tooltip if export csv is disabled when SOLR is down
17
24
  const getTooltipContent = () => {
18
25
  let tooltipText = t('Export Cases');
19
26
  if (isExportCsvDisabled) {
@@ -21,12 +28,15 @@ export function ExportCaseListCSV({ currentFilteredCaseList, selectedCases, isEx
21
28
  }
22
29
  return tooltipText;
23
30
  };
31
+ // To check if export csv button is disabled
24
32
  const isExportButtonDisabled = isBtnDisabled || isExportCsvDisabled;
33
+ // To toggle download csv modal
25
34
  const toggleDownloadCSVModal = () => {
26
35
  setOpenUpdateSeverityModal((openUpdateSeverityModal) => !openUpdateSeverityModal);
27
36
  };
28
37
  return (React.createElement("span", { title: (isExportCsvDisabled && getTooltipContent()) || '' },
29
- React.createElement(Button, { variant: "tertiary", onClick: toggleDownloadCSVModal, title: btnTitle, "data-tracking-id": "case-list-toolbar-export-csv", isDisabled: isExportButtonDisabled },
30
- React.createElement(Trans, null, "Export CSV")),
31
- React.createElement(DownloadCSVFileModal, { filterState: filterState, isDisabled: isExportButtonDisabled, onModalshow: openUpdateSeverityModal, onClose: toggleDownloadCSVModal, selectedCases: selectedCases, filteredCaseCount: currentFilteredCaseCount })));
38
+ React.createElement(Button, { variant: "tertiary", onClick: toggleDownloadCSVModal, title: btnTitle, "data-tracking-id": "case-list-toolbar-export-csv", isDisabled: isExportButtonDisabled }, isFetchingCSVData ? (React.createElement(React.Fragment, null,
39
+ React.createElement(Trans, null, "Exporting CSV"),
40
+ React.createElement(Spinner, { size: "md", "aria-label": "loading", className: "export-csv-loader pf-v6-u-ml-xs" }))) : (React.createElement(Trans, null, "Export CSV"))),
41
+ React.createElement(DownloadCSVFileModal, { filterState: filterState, loggedInUserRights: loggedInUserRights, loggedInUsersAccount: loggedInUsersAccount, isDisabled: isExportButtonDisabled, onModalshow: openUpdateSeverityModal, onClose: toggleDownloadCSVModal, selectedCases: selectedCases, filteredCaseCount: currentFilteredCaseCount })));
32
42
  }
@@ -12,7 +12,7 @@ export default function SeverityLabel({ sevValue }) {
12
12
  return 'danger';
13
13
  case '2 (High)':
14
14
  return 'warning';
15
- case '3 (Medium)':
15
+ case '3 (Normal)':
16
16
  return 'info';
17
17
  case '4 (Low)':
18
18
  return 'custom';
@@ -1 +1 @@
1
- {"version":3,"file":"TableActionsDropdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/TableActionsDropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,kBAAkB,EAAgB,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAwB,MAAM,qCAAqC,CAAC;AASlG,UAAU,MAAO,SAAQ,kBAAkB,EAAE,qBAAqB;CAAG;AAErE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,qBAoHjD"}
1
+ {"version":3,"file":"TableActionsDropdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/TableActionsDropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,kBAAkB,EAAgB,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAwB,MAAM,qCAAqC,CAAC;AASlG,UAAU,MAAO,SAAQ,kBAAkB,EAAE,qBAAqB;CAAG;AAErE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,qBA0HjD"}
@@ -3,7 +3,7 @@ import ExclamationCircleIcon from '@patternfly/react-icons/dist/js/icons/exclama
3
3
  import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
4
4
  import WarningTriangleIcon from '@patternfly/react-icons/dist/js/icons/warning-triangle-icon';
5
5
  import { SingleSelectDropdown } from '@rh-support/components';
6
- import { CloseCaseModal } from '@rh-support/react-context';
6
+ import { CloseCaseModal, GlobalMetadataStateContext } from '@rh-support/react-context';
7
7
  import React, { useContext } from 'react';
8
8
  import { useTranslation } from 'react-i18next';
9
9
  import { useCloseCase } from '../../../hooks/useCloseCase';
@@ -22,6 +22,7 @@ export function TableActionsDropdown(props) {
22
22
  const currentFilteredCaseCount = (_a = currentFilteredCaseList === null || currentFilteredCaseList === void 0 ? void 0 : currentFilteredCaseList.numFound) !== null && _a !== void 0 ? _a : 0;
23
23
  const filterState = useContext(CaseListFilterStateContext);
24
24
  const { isExportButtonDisabled, openUpdateSeverityModal, showError: showExportCSVError, getTooltipContent: getExportCSVTooltipContent, toggleDownloadCSVModal, } = useExportCaseListCSV(props);
25
+ const { globalMetadataState: { loggedInUserRights, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
25
26
  const { isModalOpen, isPostingComment, showError, showWarning, getTooltipContent, onCancel, onConfirm, onBtnClick, } = useCloseCase(props);
26
27
  let closeCaseIconStatus = 'danger';
27
28
  if (showWarning) {
@@ -69,6 +70,6 @@ export function TableActionsDropdown(props) {
69
70
  };
70
71
  return (React.createElement(React.Fragment, null,
71
72
  isModalOpen && React.createElement(CloseCaseModal, { onClose: onCancel, onConfirm: onConfirm, isUpdating: !!isPostingComment }),
72
- React.createElement(DownloadCSVFileModal, { filterState: filterState, isDisabled: isExportButtonDisabled, onModalshow: openUpdateSeverityModal, onClose: toggleDownloadCSVModal, selectedCases: selectedCases, filteredCaseCount: currentFilteredCaseCount }),
73
+ React.createElement(DownloadCSVFileModal, { filterState: filterState, loggedInUserRights: loggedInUserRights, loggedInUsersAccount: loggedInUsersAccount, isDisabled: isExportButtonDisabled, onModalshow: openUpdateSeverityModal, onClose: toggleDownloadCSVModal, selectedCases: selectedCases, filteredCaseCount: currentFilteredCaseCount }),
73
74
  React.createElement(SingleSelectDropdown, { hideToggleIcons: true, selected: { value: null, label: '' }, onSelect: onSelect, options: toolbarDropdownItems, id: "table-actions-dropdown", placeholder: t('Actions'), badge: React.createElement(Badge, null, selectedCases.length) })));
74
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AdvanceSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/AdvanceSearch.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAGvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAIhE,UAAU,MAAM;IACZ,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,0BAA0B,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAOD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,qBA2S1C"}
1
+ {"version":3,"file":"AdvanceSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/AdvanceSearch.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAGvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAIhE,UAAU,MAAM;IACZ,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,0BAA0B,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAOD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,qBA0S1C"}
@@ -176,7 +176,7 @@ export function AdvanceSearch(props) {
176
176
  });
177
177
  const toggle = (toggleRef) => (React.createElement(MenuToggle, { variant: "typeahead", onClick: () => setIsOpen((open) => !open), onKeyDown: onInputKeyDown, innerRef: toggleRef, isExpanded: isOpen, isFullWidth: true },
178
178
  React.createElement(TextInputGroup, { isPlain: true },
179
- React.createElement(TextInputGroupMain, { value: inputString, onChange: (event, value) => onQueryStringChange(value), onClick: () => setIsOpen((open) => !open), onFocus: () => setIsOpen(true), ref: searchInputRef, placeholder: t('i18nEnterSolrQuery', 'Enter SOLR query, for example: severity:"1 (Urgent)" and status:"Waiting on Customer"'), className: "pf-v6-u-pr-2xl", type: "text", "aria-invalid": isQueryInValid ? true : false, autoComplete: "off", id: "advance-search-typeahead", "aria-label": t('Enter search query'), "aria-describedby": "advance-query-error-helper" }),
179
+ React.createElement(TextInputGroupMain, { value: inputString, onChange: (event, value) => onQueryStringChange(value), onClick: () => setIsOpen((open) => !open), ref: searchInputRef, placeholder: t('i18nEnterSolrQuery', 'Enter SOLR query, for example: severity:"1 (Urgent)" and status:"Waiting on Customer"'), className: "pf-v6-u-pr-2xl", type: "text", "aria-invalid": isQueryInValid ? true : false, autoComplete: "off", id: "advance-search-typeahead", "aria-label": t('Enter search query'), "aria-describedby": "advance-query-error-helper" }),
180
180
  inputString && (React.createElement(TextInputGroupUtilities, null,
181
181
  React.createElement(Button, { icon: inputString && isParsingSuccessful ? (React.createElement(Flex, { justifyContent: { default: 'justifyContentSpaceBetween' } },
182
182
  React.createElement(FlexItem, null,
@@ -1 +1 @@
1
- {"version":3,"file":"BookmarkedSearchesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/BookmarkedSearchesSelector.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAGvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAahE,UAAU,MAAM;IACZ,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,mBAAmB,CAAC;IACvC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,qBA0TvD"}
1
+ {"version":3,"file":"BookmarkedSearchesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/BookmarkedSearchesSelector.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAGvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAahE,UAAU,MAAM;IACZ,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,mBAAmB,CAAC;IACvC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,qBAyTvD"}
@@ -163,7 +163,6 @@ export function BookmarkedSearchesSelector(props) {
163
163
  !isEmpty(props.defaultSavedSearchName) && setSelectedSearch(props.defaultSavedSearchName);
164
164
  }, [props.defaultSavedSearchName]);
165
165
  const renderSavedSearchItems = Object.keys(bookmarkedSearches)
166
- .filter((key) => { var _a; return ((_a = bookmarkedSearches[key]) === null || _a === void 0 ? void 0 : _a.type) !== 'advanced'; })
167
166
  .sort()
168
167
  .map((bookmarkedSearch) => {
169
168
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"CaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/CaseSearch.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAkB5E,UAAU,MAAM;IACZ,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,qBAmMvC"}
1
+ {"version":3,"file":"CaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/CaseSearch.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAkB5E,UAAU,MAAM;IACZ,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,qBA6LvC"}