@rh-support/cases 2.1.37 → 2.1.39
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.map +1 -1
- package/lib/esm/components/case-list/CaseList.js +32 -38
- package/lib/esm/components/case-list/case-list-filters/AccountsBookmarkedGroupFilter.js +1 -1
- package/lib/esm/components/case-list/case-list-table/CaseListTable.js +1 -1
- 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 +36 -26
- package/lib/esm/components/case-list/case-search/SaveCaseSearchModal.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/SaveCaseSearchModal.js +39 -33
- package/lib/esm/scss/_pf-overrides.scss +3 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseList.d.ts","sourceRoot":"","sources":["../../../../src/components/case-list/CaseList.tsx"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAChC,OAAO,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"CaseList.d.ts","sourceRoot":"","sources":["../../../../src/components/case-list/CaseList.tsx"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAChC,OAAO,0BAA0B,CAAC;AA4BlC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAKH,0BAA0B,EAI7B,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAE,mBAAmB,EAAe,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,IAAI,CAAC;AAK1C,OAAO,EAAgB,WAAW,EAA2B,MAAM,uBAAuB,CAAC;AAmC3F,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC3D,YAAY,EAAE,cAAc,EAAE,CAAC;CAClC;AAED,oBAAY,YAAY,GAAG,0BAA0B,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;AAM5F,MAAM,WAAW,gBAAgB;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,eA6frC"}
|
|
@@ -15,7 +15,7 @@ import AngleDoubleLeftIcon from '@patternfly/react-icons/dist/js/icons/angle-dou
|
|
|
15
15
|
import AngleDoubleRightIcon from '@patternfly/react-icons/dist/js/icons/angle-double-right-icon';
|
|
16
16
|
import AngleDoubleUpIcon from '@patternfly/react-icons/dist/js/icons/angle-double-up-icon';
|
|
17
17
|
import { ErrorBoundary, ToastNotification, useBreakpoint, useDocumentTitle, useForceUpdate, usePrevious, } from '@rh-support/components';
|
|
18
|
-
import {
|
|
18
|
+
import { fetchAllStatuses, fetchCaseGroupsForSSO, fetchCaseSeverities, fetchCaseTypes, fetchProducts, GlobalMetadataDispatchContext, GlobalMetadataStateContext, setUserPreferences, updateUserPreferences, UserPreferencesKeys, } from '@rh-support/react-context';
|
|
19
19
|
import { getStringifiedParams, getUrlParsedParams, haventLoadedMetadata, haventLoadedProductsMetadata, pendoTrackEvent, solrResponseToFacetFields, solrResponseToPivotFields, } from '@rh-support/utils';
|
|
20
20
|
import get from 'lodash/get';
|
|
21
21
|
import isEmpty from 'lodash/isEmpty';
|
|
@@ -49,8 +49,7 @@ export function CaseList(props) {
|
|
|
49
49
|
const { caseList, pivotValues, isFetching, filterValuesFromFacetResponse, currentQuery } = useCaseListStateContext();
|
|
50
50
|
const CaseListDispatch = useCaseListDispatchContext();
|
|
51
51
|
const breakPoint = useBreakpoint();
|
|
52
|
-
const { globalMetadataState, globalMetadataState: { caseGroups, loggedInUserJwtToken, loggedInUserRights, loggedInUsersAccount, userPreferences, managedAccounts, bookmarkedAccounts, bookmarkedGroupAccounts, allCaseTypes, allCaseSeverities, allCaseStatuses, allProducts,
|
|
53
|
-
const globalDispatchContext = useGlobalDispatchContext();
|
|
52
|
+
const { globalMetadataState, globalMetadataState: { caseGroups, loggedInUserJwtToken, loggedInUserRights, loggedInUsersAccount, userPreferences, managedAccounts, bookmarkedAccounts, bookmarkedGroupAccounts, allCaseTypes, allCaseSeverities, allCaseStatuses, allProducts, }, } = useContext(GlobalMetadataStateContext);
|
|
54
53
|
const location = useLocation();
|
|
55
54
|
const searchParams = getUrlParsedParams(location.search);
|
|
56
55
|
const queryFromUrl = searchParams[FILTER_URL_QUERY_SEARCH_PARAM];
|
|
@@ -309,9 +308,6 @@ export function CaseList(props) {
|
|
|
309
308
|
isCaseListFilterPanelExanded && isXLScreen && isBasicSearchMode && toggleFilterSection(true);
|
|
310
309
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
311
310
|
}, [isBasicSearchMode]);
|
|
312
|
-
const onConfirmTraditionalSupportAgreement = () => {
|
|
313
|
-
updateCaseListTraditionalSupportAgreed(globalDispatchContext, true);
|
|
314
|
-
};
|
|
315
311
|
const displayRHCDAlert = () => {
|
|
316
312
|
const openClosedCopy = `Only showing cases that were ${RHCDValue} during the selected time range specified in
|
|
317
313
|
Customer Dashboard. Case counts may vary slightly based on data retention and availability
|
|
@@ -331,36 +327,34 @@ export function CaseList(props) {
|
|
|
331
327
|
isCaseListFilterPanelExanded && (isXLScreen ? toggleFilterSection(true) : toggleFilterSection(false));
|
|
332
328
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
333
329
|
}, [breakPoint]);
|
|
334
|
-
return (React.createElement(
|
|
335
|
-
React.createElement(
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
React.createElement("
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
React.createElement("section", { className: "case-search-table" },
|
|
365
|
-
React.createElement(CaseListTable, { caseList: caseList, caseGroups: caseGroups.data || [], loggedInUserRights: loggedInUserRights.data, sortInfo: filterState.sortInfo, paginationInfo: filterState.paginationInfo, isCaseListPageLoading: isFetching, hasError: hasError, isSolrDown: isSolrSearchDown }))))));
|
|
330
|
+
return (React.createElement("article", { id: "rh-support-cases", className: "cases-main" },
|
|
331
|
+
isSolrSearchDown && (React.createElement("div", null,
|
|
332
|
+
React.createElement(Alert, { isInline: true, variant: AlertVariant.warning, title: React.createElement(Trans, null,
|
|
333
|
+
"Case search is working with limited functionality. Please check",
|
|
334
|
+
' ',
|
|
335
|
+
React.createElement("a", { href: "https://status.redhat.com", target: "_blank", rel: "noreferrer", "data-tracking-id": "caselist-redirect-status-page" }, "status page"),
|
|
336
|
+
' ',
|
|
337
|
+
"for details.") }))),
|
|
338
|
+
React.createElement("section", { className: "case-search-top" },
|
|
339
|
+
!isEmpty(RHCDValue) && isRHCDAlertShown && React.createElement("div", { className: "push-bottom" }, displayRHCDAlert()),
|
|
340
|
+
React.createElement("div", { className: "search-wrapper" },
|
|
341
|
+
React.createElement("div", { className: "open-case" },
|
|
342
|
+
React.createElement(NewCaseButton, { routeProps: props.routeProps })),
|
|
343
|
+
React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading case search input') } },
|
|
344
|
+
React.createElement(CaseSearch, { defaultSavedSearchName: defaultSavedSearchName }))),
|
|
345
|
+
isBasicSearchMode && (React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading filter chips') } },
|
|
346
|
+
React.createElement(CaseListFilterChips, { productVersionPivotValues: get(pivotValues, SolrPivotKeys.product_version, []), isSolrSearchDown: isSolrSearchDown })))),
|
|
347
|
+
React.createElement("section", { className: "case-search-bottom" },
|
|
348
|
+
isBasicSearchMode && (React.createElement("aside", { className: `case-search-filters ${((_a = filterSectionRef.current) === null || _a === void 0 ? void 0 : _a.expanded) ? '' : 'collapsed'}` },
|
|
349
|
+
React.createElement("h2", { className: "filter-header" }, ((_b = filterSectionRef.current) === null || _b === void 0 ? void 0 : _b.expanded) ? (React.createElement(React.Fragment, null,
|
|
350
|
+
React.createElement(Button, { variant: "link", isActive: true, title: t('Collapse filter section'), onClick: onToggleFilterBtnClick, iconPosition: "right", icon: isXLScreen ? React.createElement(AngleDoubleLeftIcon, null) : React.createElement(AngleDoubleUpIcon, null) },
|
|
351
|
+
React.createElement("span", null,
|
|
352
|
+
React.createElement(Trans, null, "Filters"))))) : (React.createElement(Button, { variant: "link", isActive: false, title: t('Expand filter section'), onClick: onToggleFilterBtnClick, iconPosition: "right", icon: isXLScreen ? React.createElement(AngleDoubleRightIcon, null) : React.createElement(AngleDoubleDownIcon, null) }, isXLScreen ? null : (React.createElement("span", null,
|
|
353
|
+
React.createElement(Trans, null, "Filters")))))),
|
|
354
|
+
React.createElement("div", { className: "filter-wrapper" },
|
|
355
|
+
React.createElement("pfe-collapse-panel", { id: "case-filters-panel", "pfe-animation": "false", ref: filterSectionRef },
|
|
356
|
+
React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading filters') } },
|
|
357
|
+
React.createElement(CaseListFilters, { filterValues: filterValuesFromFacetResponse, allCaseTypes: allCaseTypes, allCaseStatuses: allCaseStatuses, allCaseSeverities: allCaseSeverities, allProducts: allProducts, isSolrSearchDown: isSolrSearchDown })))))),
|
|
358
|
+
React.createElement("section", { className: "case-search-table" },
|
|
359
|
+
React.createElement(CaseListTable, { caseList: caseList, caseGroups: caseGroups.data || [], loggedInUserRights: loggedInUserRights.data, sortInfo: filterState.sortInfo, paginationInfo: filterState.paginationInfo, isCaseListPageLoading: isFetching, hasError: hasError, isSolrDown: isSolrSearchDown })))));
|
|
366
360
|
}
|
|
@@ -99,5 +99,5 @@ export function AccountsBookmarkedGroupFilter(props) {
|
|
|
99
99
|
}
|
|
100
100
|
return (React.createElement("div", { className: "pf-v5-c-select" },
|
|
101
101
|
React.createElement("label", { htmlFor: "case-list-group-filter" }, canAccessManagedAccounts ? t('Accounts') : t(filterNamesMap[SolrKeys.accountNumber])),
|
|
102
|
-
React.createElement(Select, { variant: SelectVariant.typeaheadMulti, onToggle: (_event, open) => onBookmarksToggle(open), onSelect: onBookmarksSelect, onClear: onBookmarksClear, isOpen: isOpen, onFilter: onBookmarksFilter, placeholderText: getDropdownBtnPlaceholder(t(canAccessManagedAccounts ? '
|
|
102
|
+
React.createElement(Select, { variant: SelectVariant.typeaheadMulti, onToggle: (_event, open) => onBookmarksToggle(open), onSelect: onBookmarksSelect, onClear: onBookmarksClear, isOpen: isOpen, onFilter: onBookmarksFilter, placeholderText: getDropdownBtnPlaceholder(t(canAccessManagedAccounts ? 'Select an account' : 'Search for a bookmark'), canAccessManagedAccounts ? selectedAccounts : selectedBookmarks, '', dropdownOptions.length, canAccessManagedAccounts ? t('All accounts') : t('All bookmarks')), "data-tracking-id": "accounts-filter", id: "case-list-group-filter" }, getBookmarksOptions(dropdownOptions))));
|
|
103
103
|
}
|
|
@@ -136,7 +136,7 @@ export function CaseListTable(props) {
|
|
|
136
136
|
show: isColumnVisible(CaseListColumnIds.group),
|
|
137
137
|
},
|
|
138
138
|
];
|
|
139
|
-
const visibleCaseListColumns = columns.filter((column) =>
|
|
139
|
+
const visibleCaseListColumns = columns.filter((column) => visibleColumns.includes(column.id));
|
|
140
140
|
const allRows = caseListData.map((row, index) => row.case_number);
|
|
141
141
|
const selectAllRows = () => {
|
|
142
142
|
!isEqual(selectedCases, allRows) ? setSelectedCases(allRows) : setSelectedCases([]);
|
|
@@ -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;AAGrC,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAiBlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAQxD,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;CACrC;AAYD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,MAAM,
|
|
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;AAiBlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAQxD,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;CACrC;AAYD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,MAAM,eA2YzD"}
|
|
@@ -46,6 +46,7 @@ export default function DownloadCSVFileModal(props) {
|
|
|
46
46
|
alternateId: false,
|
|
47
47
|
type: false,
|
|
48
48
|
caseClosedDate: false,
|
|
49
|
+
group: false,
|
|
49
50
|
});
|
|
50
51
|
function getKey(key, isSecureSupport) {
|
|
51
52
|
return isSecureSupport ? SFDCKeys[key] : SolrKeys[key];
|
|
@@ -119,6 +120,11 @@ export default function DownloadCSVFileModal(props) {
|
|
|
119
120
|
label: 'Closed date',
|
|
120
121
|
transform: formatDateTime,
|
|
121
122
|
},
|
|
123
|
+
{
|
|
124
|
+
checkbox: checkboxes.group,
|
|
125
|
+
key: getKey('groupName', loggedInUsersAccount.data.secureSupport),
|
|
126
|
+
label: 'Group',
|
|
127
|
+
},
|
|
122
128
|
], [checkboxes, loggedInUsersAccount.data.secureSupport]);
|
|
123
129
|
useEffect(() => {
|
|
124
130
|
const updatedCsvHeaders = loggedInUsersAccount.data.secureSupport
|
|
@@ -141,9 +147,8 @@ export default function DownloadCSVFileModal(props) {
|
|
|
141
147
|
setGeneratedCsvHeaders(updatedCsvHeaders);
|
|
142
148
|
}, [loggedInUsersAccount.data.secureSupport, checkboxes, headerDefinitions]);
|
|
143
149
|
const isFetchingCSVData = isFetching || isFetchingSFDC;
|
|
144
|
-
const isOrgAdmin = loggedInUserRights.data.isOrgAdmin();
|
|
145
150
|
const partnerSearch = loggedInUserRights.data.hasManagedAccounts();
|
|
146
|
-
const splitExtensionName = downloadCSVFileName.split('.')[0];
|
|
151
|
+
const splitExtensionName = downloadCSVFileName.split('.')[0].replace(/ +/g, ''); // To split and trim value before saving PDF
|
|
147
152
|
const onCancel = () => {
|
|
148
153
|
onClose && onClose();
|
|
149
154
|
};
|
|
@@ -156,16 +161,15 @@ export default function DownloadCSVFileModal(props) {
|
|
|
156
161
|
const handleCheckboxChange = (key) => {
|
|
157
162
|
setCheckboxes((prevCheckboxes) => (Object.assign(Object.assign({}, prevCheckboxes), { [key]: !prevCheckboxes[key] })));
|
|
158
163
|
};
|
|
159
|
-
//
|
|
160
|
-
const
|
|
164
|
+
const checkboxValues = Object.values(checkboxes).slice(1); // as we don't want selectAll value
|
|
165
|
+
const allCheckBoxNotSelected = checkboxValues.includes(false);
|
|
161
166
|
// For SOLR
|
|
162
167
|
const onExportCSVClick = () => __awaiter(this, void 0, void 0, function* () {
|
|
163
168
|
try {
|
|
164
169
|
const res = yield request(createQueryForCSVDownload(filterState, loggedInUserRights.data, loggedInUsersAccount.data), partnerSearch, null, loggedInUsersAccount.data.secureSupport);
|
|
165
|
-
const headers = isOrgAdmin ? [...csvHeadersSolr, groupHeaderSOLR] : generatedCsvHeaders;
|
|
166
170
|
// To map the values in csv to new support type
|
|
167
171
|
const updatedCsvData = res.response.docs.map((row) => (Object.assign(Object.assign({}, row), { case_type: toNewCaseTypeSwitcher(row.case_type) })));
|
|
168
|
-
downloadCSV(updatedCsvData,
|
|
172
|
+
downloadCSV(updatedCsvData, generatedCsvHeaders, splitExtensionName ? `${splitExtensionName}.csv` : 'CaseList.csv');
|
|
169
173
|
onCancel();
|
|
170
174
|
ToastNotification.addSuccessMessage(t('File downloaded successfully!'));
|
|
171
175
|
}
|
|
@@ -174,8 +178,6 @@ export default function DownloadCSVFileModal(props) {
|
|
|
174
178
|
ToastNotification.addDangerMessage(t('File could not be downloaded. Please try again! '));
|
|
175
179
|
}
|
|
176
180
|
});
|
|
177
|
-
// Group header for SFDC
|
|
178
|
-
const groupHeaderSFDC = { label: 'Group', key: SFDCKeys.groupName };
|
|
179
181
|
// For SFDC
|
|
180
182
|
const onExportCSVClickSecureSupport = () => __awaiter(this, void 0, void 0, function* () {
|
|
181
183
|
try {
|
|
@@ -183,10 +185,9 @@ export default function DownloadCSVFileModal(props) {
|
|
|
183
185
|
setIsFetchingSFDC(true);
|
|
184
186
|
const sfdcResponse = yield publicApi.caseList.getCaseListFromSFDC(sfdcFilter, false, true);
|
|
185
187
|
setIsFetchingSFDC(false);
|
|
186
|
-
const headers = isOrgAdmin ? [...csvHeadersSFDC, groupHeaderSFDC] : csvHeadersSFDC;
|
|
187
188
|
// To map the values in csv to new support type
|
|
188
189
|
const updatedCsvData = sfdcResponse.cases.map((row) => (Object.assign(Object.assign({}, row), { caseType: toNewCaseTypeSwitcher(row.caseType) })));
|
|
189
|
-
downloadCSV(updatedCsvData,
|
|
190
|
+
downloadCSV(updatedCsvData, csvHeadersSFDC, splitExtensionName ? `${splitExtensionName}.csv` : 'CaseList.csv');
|
|
190
191
|
onCancel();
|
|
191
192
|
ToastNotification.addSuccessMessage(t('File downloaded successfully!'));
|
|
192
193
|
}
|
|
@@ -196,24 +197,22 @@ export default function DownloadCSVFileModal(props) {
|
|
|
196
197
|
ToastNotification.addDangerMessage(t('Could not export CSV'));
|
|
197
198
|
}
|
|
198
199
|
});
|
|
199
|
-
|
|
200
|
-
const
|
|
200
|
+
const handleSelectAll = () => {
|
|
201
|
+
const newSelectAllState = !checkboxes.selectAll;
|
|
201
202
|
const updatedCheckboxes = {
|
|
202
|
-
ownerName:
|
|
203
|
-
modifiedBy:
|
|
204
|
-
severity:
|
|
205
|
-
status:
|
|
206
|
-
createdBy:
|
|
207
|
-
productVersion:
|
|
208
|
-
accountNumber:
|
|
209
|
-
alternateId:
|
|
210
|
-
type:
|
|
211
|
-
caseClosedDate:
|
|
203
|
+
ownerName: newSelectAllState,
|
|
204
|
+
modifiedBy: newSelectAllState,
|
|
205
|
+
severity: newSelectAllState,
|
|
206
|
+
status: newSelectAllState,
|
|
207
|
+
createdBy: newSelectAllState,
|
|
208
|
+
productVersion: newSelectAllState,
|
|
209
|
+
accountNumber: newSelectAllState,
|
|
210
|
+
alternateId: newSelectAllState,
|
|
211
|
+
type: newSelectAllState,
|
|
212
|
+
caseClosedDate: newSelectAllState,
|
|
213
|
+
group: newSelectAllState,
|
|
212
214
|
};
|
|
213
|
-
setCheckboxes((prevCheckboxes) => (Object.assign(
|
|
214
|
-
}, [checkboxes.selectAll]);
|
|
215
|
-
const handleSelectAll = () => {
|
|
216
|
-
setCheckboxes((prevCheckboxes) => (Object.assign(Object.assign({}, prevCheckboxes), { selectAll: !prevCheckboxes.selectAll })));
|
|
215
|
+
setCheckboxes((prevCheckboxes) => (Object.assign({ selectAll: !prevCheckboxes.selectAll }, updatedCheckboxes)));
|
|
217
216
|
};
|
|
218
217
|
const csvHeadersOne = [
|
|
219
218
|
{ label: 'Owner', key: 'ownerName' },
|
|
@@ -221,6 +220,7 @@ export default function DownloadCSVFileModal(props) {
|
|
|
221
220
|
{ label: 'Created by', key: 'createdBy' },
|
|
222
221
|
{ label: 'Account number', key: 'accountNumber' },
|
|
223
222
|
{ label: 'Case type', key: 'type' },
|
|
223
|
+
{ label: 'Group', key: 'group' },
|
|
224
224
|
];
|
|
225
225
|
const csvHeadersTwo = [
|
|
226
226
|
{ label: 'Modified by', key: 'modifiedBy' },
|
|
@@ -269,5 +269,15 @@ export default function DownloadCSVFileModal(props) {
|
|
|
269
269
|
React.createElement(Button, { key: "submit", icon: isFetchingCSVData ? React.createElement(Spinner, { size: "md" }) : React.createElement(DownloadIcon, null), variant: "primary", "data-tracking-id": "download-csv-modal-submit", onClick: loggedInUsersAccount.data.secureSupport ? onExportCSVClickSecureSupport : onExportCSVClick, isDisabled: isDisabled || isFetchingCSVData }, t('Download')),
|
|
270
270
|
React.createElement(Button, { key: "back", variant: "secondary", onClick: onCancel, isDisabled: isDisabled || isFetchingCSVData, "data-tracking-id": "download-csv-modal-cancel" }, t('Cancel')),
|
|
271
271
|
];
|
|
272
|
+
// To handle select all checkbox when any of the column checkbox is checked or unchecked
|
|
273
|
+
useEffect(() => {
|
|
274
|
+
allCheckBoxNotSelected
|
|
275
|
+
? setCheckboxes((prevCheckboxes) => (Object.assign(Object.assign({}, prevCheckboxes), { selectAll: false })))
|
|
276
|
+
: setCheckboxes((prevCheckboxes) => (Object.assign({}, prevCheckboxes)));
|
|
277
|
+
if (!checkboxes.selectAll && !allCheckBoxNotSelected) {
|
|
278
|
+
handleSelectAll(); // To check select all checkbox
|
|
279
|
+
}
|
|
280
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
281
|
+
}, [allCheckBoxNotSelected, checkboxes.selectAll]);
|
|
272
282
|
return (React.createElement(Modal, { title: t('Download CSV file'), description: downloadCSVModalDescription(), className: "download-csv-modal", variant: ModalVariant.large, isOpen: onModalshow, onClose: onCancel, actions: modalActions }, downloadCSVModalBody()));
|
|
273
283
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SaveCaseSearchModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/SaveCaseSearchModal.tsx"],"names":[],"mappings":"AAgCA,UAAU,MAAM;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC/B;AAOD,wBAAgB,mBAAmB,CAAC,EAChC,WAAW,EACX,WAAW,EACX,QAAQ,EACR,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,GAClB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SaveCaseSearchModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/SaveCaseSearchModal.tsx"],"names":[],"mappings":"AAgCA,UAAU,MAAM;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC/B;AAOD,wBAAgB,mBAAmB,CAAC,EAChC,WAAW,EACX,WAAW,EACX,QAAQ,EACR,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,GAClB,EAAE,MAAM,eA4SR"}
|
|
@@ -31,6 +31,7 @@ export function SaveCaseSearchModal({ isModalOpen, modalToggle, isAdding, select
|
|
|
31
31
|
const [isUpdating, setIsUpdating] = useState(false);
|
|
32
32
|
const [isDuplicateNameError, setIsDuplicateNameError] = useState(false);
|
|
33
33
|
const [saveButtonIsClicked, setSaveButtonIsClicked] = useState(false);
|
|
34
|
+
const [queryStr, setQueryStr] = useState('');
|
|
34
35
|
const filterState = useContext(CaseListFilterStateContext);
|
|
35
36
|
const { filterQueryInfo, filterInfo, sortInfo } = filterState;
|
|
36
37
|
const { globalMetadataState } = useContext(GlobalMetadataStateContext);
|
|
@@ -137,39 +138,45 @@ export function SaveCaseSearchModal({ isModalOpen, modalToggle, isAdding, select
|
|
|
137
138
|
let queryStr = '';
|
|
138
139
|
let sort = '';
|
|
139
140
|
let dir = '';
|
|
140
|
-
if (
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
141
|
+
if (!hydraUserPreferences.isFetching) {
|
|
142
|
+
if (isAdding) {
|
|
143
|
+
// new saved search
|
|
144
|
+
queryStr =
|
|
145
|
+
currentSearchType === CaseSearchQueryType.BASIC
|
|
146
|
+
? createUserFriendlyQueryFromFilterState(filterInfo, currentCaseSearchString)
|
|
147
|
+
: currentCaseSearchString;
|
|
148
|
+
const sortInfo = filterState.sortInfo;
|
|
149
|
+
const sortField = sortInfo === null || sortInfo === void 0 ? void 0 : sortInfo.column;
|
|
150
|
+
sort = (caseTableColumSortNamesMap === null || caseTableColumSortNamesMap === void 0 ? void 0 : caseTableColumSortNamesMap[sortField]) || sortField || '';
|
|
151
|
+
dir = directionMap[sortInfo === null || sortInfo === void 0 ? void 0 : sortInfo.direction] || '';
|
|
152
|
+
}
|
|
153
|
+
else if (selectedSearchNameToEdit && previousBookmarkedSearchesObj[selectedSearchNameToEdit]) {
|
|
154
|
+
// already saved seach
|
|
155
|
+
queryStr =
|
|
156
|
+
currentSearchType === CaseSearchQueryType.BASIC
|
|
157
|
+
? createUserFriendlyQueryFromFilterState(previousBookmarkedSearchesObj[selectedSearchNameToEdit].filterState, previousBookmarkedSearchesObj[selectedSearchNameToEdit].queryString)
|
|
158
|
+
: previousBookmarkedSearchesObj[selectedSearchNameToEdit].queryString;
|
|
159
|
+
const sortInfo = (_a = previousBookmarkedSearchesObj[selectedSearchNameToEdit]) === null || _a === void 0 ? void 0 : _a.sortState;
|
|
160
|
+
const sortField = sortInfo === null || sortInfo === void 0 ? void 0 : sortInfo.column;
|
|
161
|
+
sort = (caseTableColumSortNamesMap === null || caseTableColumSortNamesMap === void 0 ? void 0 : caseTableColumSortNamesMap[sortField]) || sortField || '';
|
|
162
|
+
dir = directionMap[sortInfo === null || sortInfo === void 0 ? void 0 : sortInfo.direction] || '';
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
// while saving search name is in progress and modal is open,
|
|
166
|
+
// localSavedSearchName in previousBookmarkedSearchesObj is used to populate query inputbox
|
|
167
|
+
queryStr = previousBookmarkedSearchesObj[localSavedSearchName] || '';
|
|
168
|
+
const sortInfo = (_b = previousBookmarkedSearchesObj[localSavedSearchName]) === null || _b === void 0 ? void 0 : _b.sortState;
|
|
169
|
+
const sortField = sortInfo === null || sortInfo === void 0 ? void 0 : sortInfo.column;
|
|
170
|
+
sort = (caseTableColumSortNamesMap === null || caseTableColumSortNamesMap === void 0 ? void 0 : caseTableColumSortNamesMap[sortField]) || sortField || '';
|
|
171
|
+
dir = directionMap[sortInfo === null || sortInfo === void 0 ? void 0 : sortInfo.direction] || '';
|
|
172
|
+
}
|
|
173
|
+
setQueryStr(queryStr ? `${queryStr} Sort by: ${sort}, ${dir}` : '');
|
|
170
174
|
}
|
|
171
|
-
return queryStr ? `${queryStr} Sort by: ${sort}, ${dir}` : '';
|
|
172
175
|
};
|
|
176
|
+
useEffect(() => {
|
|
177
|
+
getQueryStr();
|
|
178
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
179
|
+
}, [hydraUserPreferences]);
|
|
173
180
|
useEffect(() => {
|
|
174
181
|
var _a;
|
|
175
182
|
setLocalSavedSearchName(selectedSearchNameToEdit);
|
|
@@ -187,7 +194,6 @@ export function SaveCaseSearchModal({ isModalOpen, modalToggle, isAdding, select
|
|
|
187
194
|
e.stopPropagation();
|
|
188
195
|
setLocalDefaultChecked(!localDefaultChecked);
|
|
189
196
|
} }),
|
|
190
|
-
' ',
|
|
191
197
|
"Set as default"),
|
|
192
198
|
React.createElement(React.Fragment, null, !isAdding && (React.createElement(Button, { key: "delete", variant: ButtonVariant.link, isDanger: true, "data-tracking-id": "case-list-bookmark-search-deleted", onClick: deleteSavedSearch, style: { marginLeft: 'auto' } },
|
|
193
199
|
React.createElement(Trans, null, "Remove")))),
|
|
@@ -202,5 +208,5 @@ export function SaveCaseSearchModal({ isModalOpen, modalToggle, isAdding, select
|
|
|
202
208
|
? 'error'
|
|
203
209
|
: 'default' })),
|
|
204
210
|
React.createElement(FormGroup, { label: React.createElement("span", { className: "save-for-later-label-query" }, t('Search and filter query')), isRequired: true, fieldId: "filter-query", className: "form-group pf-v5-u-mt-lg save-for-later-query" },
|
|
205
|
-
React.createElement(TextArea, { isRequired: true,
|
|
211
|
+
React.createElement(TextArea, { isRequired: true, type: "text", id: "filter-query", name: "filter-query", "aria-describedby": "filter-query-helper", value: queryStr, isDisabled: true, resizeOrientation: "vertical" })))));
|
|
206
212
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/cases",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.39",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"@patternfly/patternfly": "5.1.0",
|
|
45
45
|
"@patternfly/react-core": "5.1.1",
|
|
46
46
|
"@patternfly/react-table": "5.1.1",
|
|
47
|
-
"@rh-support/components": "2.1.
|
|
48
|
-
"@rh-support/react-context": "2.1.
|
|
47
|
+
"@rh-support/components": "2.1.33",
|
|
48
|
+
"@rh-support/react-context": "2.1.36",
|
|
49
49
|
"@rh-support/types": "2.0.2",
|
|
50
|
-
"@rh-support/user-permissions": "2.1.
|
|
51
|
-
"@rh-support/utils": "2.1.
|
|
50
|
+
"@rh-support/user-permissions": "2.1.23",
|
|
51
|
+
"@rh-support/utils": "2.1.16",
|
|
52
52
|
"i18next": "^19.0.1",
|
|
53
53
|
"localforage": "^1.10.0",
|
|
54
54
|
"lodash": "^4.17.21",
|
|
@@ -90,5 +90,5 @@
|
|
|
90
90
|
"defaults and supports es6-module",
|
|
91
91
|
"maintained node versions"
|
|
92
92
|
],
|
|
93
|
-
"gitHead": "
|
|
93
|
+
"gitHead": "6f4a93926c86b6af2df3f900f199261c5c3656f5"
|
|
94
94
|
}
|