@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.
- package/lib/esm/components/case-list/CaseList.d.ts +7 -0
- package/lib/esm/components/case-list/CaseList.d.ts.map +1 -1
- package/lib/esm/components/case-list/CaseList.js +108 -143
- package/lib/esm/components/case-list/CaseListContext.d.ts.map +1 -1
- package/lib/esm/components/case-list/CaseListContext.js +2 -5
- package/lib/esm/components/case-list/CaseListFilterReducer.d.ts +4 -6
- package/lib/esm/components/case-list/CaseListFilterReducer.d.ts.map +1 -1
- package/lib/esm/components/case-list/CaseListFilterReducer.js +12 -3
- package/lib/esm/components/case-list/CaseListReducer.d.ts +10 -22
- package/lib/esm/components/case-list/CaseListReducer.d.ts.map +1 -1
- package/lib/esm/components/case-list/CaseListReducer.js +7 -25
- package/lib/esm/components/case-list/case-list-filters/AccountsFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/AccountsFilter.js +11 -18
- package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.js +5 -4
- package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts +7 -1
- package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.js +15 -7
- package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts +5 -2
- package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/CaseListFilters.js +14 -14
- package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts +3 -1
- package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.js +2 -2
- package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts +4 -5
- package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/ProductsFilter.js +54 -15
- package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts +3 -0
- package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/SeverityFilter.js +44 -18
- package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts +3 -0
- package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/StatusFilter.js +44 -14
- package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts +3 -1
- package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-filters/VersionsFilter.js +32 -61
- package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts +3 -7
- package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-table/CaseListTable.js +58 -69
- package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts +5 -0
- package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.js +68 -38
- package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.js +15 -5
- package/lib/esm/components/case-list/case-list-table/SeverityLabel.js +1 -1
- package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.js +3 -2
- package/lib/esm/components/case-list/case-search/AdvanceSearch.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/AdvanceSearch.js +1 -1
- package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.js +0 -1
- package/lib/esm/components/case-list/case-search/CaseSearch.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/CaseSearch.js +6 -6
- package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +1 -2
- package/lib/esm/css/caseList.css +22 -99
- package/lib/esm/enums/case.d.ts +1 -2
- package/lib/esm/enums/case.d.ts.map +1 -1
- package/lib/esm/enums/case.js +1 -14
- package/lib/esm/hooks/useExportCaseListCSV.d.ts.map +1 -1
- package/lib/esm/hooks/useExportCaseListCSV.js +9 -1
- package/lib/esm/test-utils/mockData.js +1 -1
- package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
- package/lib/esm/utils/caseSearchUtils.js +6 -28
- package/lib/esm/utils/constants.d.ts +1 -2
- package/lib/esm/utils/constants.d.ts.map +1 -1
- package/lib/esm/utils/constants.js +3 -14
- package/lib/esm/utils/mockSolrResponse.js +1 -1
- package/package.json +6 -7
- package/lib/esm/utils/caseListGraphQLUtils.d.ts +0 -28
- package/lib/esm/utils/caseListGraphQLUtils.d.ts.map +0 -1
- package/lib/esm/utils/caseListGraphQLUtils.js +0 -244
- package/lib/esm/utils/caseListMapper.d.ts +0 -6
- package/lib/esm/utils/caseListMapper.d.ts.map +0 -1
- package/lib/esm/utils/caseListMapper.js +0 -36
- package/lib/esm/utils/caseListVariablesBuilder.d.ts +0 -14
- package/lib/esm/utils/caseListVariablesBuilder.d.ts.map +0 -1
- package/lib/esm/utils/caseListVariablesBuilder.js +0 -193
- package/lib/esm/utils/statusUtils.d.ts +0 -3
- package/lib/esm/utils/statusUtils.d.ts.map +0 -1
- package/lib/esm/utils/statusUtils.js +0 -22
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
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
|
-
//
|
|
218
|
-
//
|
|
219
|
-
paginationCount = 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
|
-
|
|
344
|
-
React.createElement(
|
|
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
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
React.createElement(
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
React.createElement(
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
React.createElement(
|
|
403
|
-
|
|
404
|
-
|
|
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;
|
|
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 {
|
|
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 {
|
|
22
|
-
import {
|
|
23
|
-
const
|
|
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
|
|
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 =
|
|
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
|
|
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
|
-
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
const
|
|
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":"
|
|
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
|
|
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, "
|
|
31
|
-
|
|
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
|
}
|
|
@@ -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,
|
|
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,
|
|
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),
|
|
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,
|
|
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,
|
|
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"}
|