@rh-support/cases 2.4.10-beta.6 → 2.5.1

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 (130) hide show
  1. package/README.md +2 -0
  2. package/lib/esm/components/case/NewCaseButton.d.ts +2 -1
  3. package/lib/esm/components/case/NewCaseButton.d.ts.map +1 -1
  4. package/lib/esm/components/case-list/CaseList.d.ts +4 -3
  5. package/lib/esm/components/case-list/CaseList.d.ts.map +1 -1
  6. package/lib/esm/components/case-list/CaseList.js +42 -44
  7. package/lib/esm/components/case-list/CaseListContext.d.ts +1 -1
  8. package/lib/esm/components/case-list/CaseListContext.d.ts.map +1 -1
  9. package/lib/esm/components/case-list/CaseListFilterContext.d.ts +1 -1
  10. package/lib/esm/components/case-list/CaseListFilterContext.d.ts.map +1 -1
  11. package/lib/esm/components/case-list/CaseListFilterHelpers.d.ts.map +1 -1
  12. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts +6 -3
  13. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts.map +1 -1
  14. package/lib/esm/components/case-list/CaseListFilterReducer.js +3 -0
  15. package/lib/esm/components/case-list/CaseListReducer.d.ts +2 -2
  16. package/lib/esm/components/case-list/CaseListReducer.d.ts.map +1 -1
  17. package/lib/esm/components/case-list/case-list-filters/AccountsBookmarkedGroupFilter.d.ts +3 -2
  18. package/lib/esm/components/case-list/case-list-filters/AccountsBookmarkedGroupFilter.d.ts.map +1 -1
  19. package/lib/esm/components/case-list/case-list-filters/AccountsBookmarkedGroupFilter.js +25 -11
  20. package/lib/esm/components/case-list/case-list-filters/AccountsFilter.d.ts +2 -1
  21. package/lib/esm/components/case-list/case-list-filters/AccountsFilter.d.ts.map +1 -1
  22. package/lib/esm/components/case-list/case-list-filters/AccountsFilter.js +10 -5
  23. package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.d.ts +2 -1
  24. package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.d.ts.map +1 -1
  25. package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.js +19 -4
  26. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts +2 -1
  27. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts.map +1 -1
  28. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.js +1 -1
  29. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts +2 -1
  30. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts.map +1 -1
  31. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilter.d.ts +12 -1
  32. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilter.d.ts.map +1 -1
  33. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilter.js +138 -163
  34. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilterChip.d.ts +2 -1
  35. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilterChip.d.ts.map +1 -1
  36. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilterChip.js +1 -1
  37. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.d.ts +2 -1
  38. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.d.ts.map +1 -1
  39. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.js +157 -27
  40. package/lib/esm/components/case-list/case-list-filters/InternalSsoNameFilter.d.ts +3 -0
  41. package/lib/esm/components/case-list/case-list-filters/InternalSsoNameFilter.d.ts.map +1 -0
  42. package/lib/esm/components/case-list/case-list-filters/InternalSsoNameFilter.js +207 -0
  43. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts +2 -1
  44. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts.map +1 -1
  45. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.js +1 -1
  46. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts +2 -1
  47. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts.map +1 -1
  48. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.js +7 -5
  49. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts +2 -1
  50. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts.map +1 -1
  51. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.js +4 -4
  52. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts +2 -1
  53. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts.map +1 -1
  54. package/lib/esm/components/case-list/case-list-filters/StatusFilter.js +4 -4
  55. package/lib/esm/components/case-list/case-list-filters/TypeFilter.d.ts +2 -1
  56. package/lib/esm/components/case-list/case-list-filters/TypeFilter.d.ts.map +1 -1
  57. package/lib/esm/components/case-list/case-list-filters/TypeFilter.js +3 -3
  58. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts +2 -1
  59. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts.map +1 -1
  60. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.js +35 -4
  61. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts +2 -1
  62. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts.map +1 -1
  63. package/lib/esm/components/case-list/case-list-table/CaseListTable.js +211 -113
  64. package/lib/esm/components/case-list/case-list-table/CloseCaseBtn.d.ts +2 -1
  65. package/lib/esm/components/case-list/case-list-table/CloseCaseBtn.d.ts.map +1 -1
  66. package/lib/esm/components/case-list/case-list-table/CloseCaseBtn.js +7 -2
  67. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts +19 -0
  68. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts.map +1 -0
  69. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.js +296 -0
  70. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.scss +27 -0
  71. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.d.ts +3 -1
  72. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.d.ts.map +1 -1
  73. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.js +19 -96
  74. package/lib/esm/components/case-list/case-list-table/SeverityLabel.d.ts +2 -1
  75. package/lib/esm/components/case-list/case-list-table/SeverityLabel.d.ts.map +1 -1
  76. package/lib/esm/components/case-list/case-list-table/table-column-selector/TableColumnSelector.d.ts +9 -0
  77. package/lib/esm/components/case-list/case-list-table/table-column-selector/TableColumnSelector.d.ts.map +1 -0
  78. package/lib/esm/components/case-list/case-list-table/table-column-selector/TableColumnSelector.js +53 -0
  79. package/lib/esm/components/case-list/case-list-table/table-column-selector/TableColumnSelector.scss +7 -0
  80. package/lib/esm/components/case-list/case-search/AdvanceSearch.d.ts +2 -1
  81. package/lib/esm/components/case-list/case-search/AdvanceSearch.d.ts.map +1 -1
  82. package/lib/esm/components/case-list/case-search/AdvanceSearch.js +18 -13
  83. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.d.ts +2 -1
  84. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.d.ts.map +1 -1
  85. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.js +7 -6
  86. package/lib/esm/components/case-list/case-search/CaseSearch.d.ts +2 -1
  87. package/lib/esm/components/case-list/case-search/CaseSearch.d.ts.map +1 -1
  88. package/lib/esm/components/case-list/case-search/CaseSearch.js +2 -2
  89. package/lib/esm/components/case-list/case-search/SaveCaseSearchModal.d.ts +2 -1
  90. package/lib/esm/components/case-list/case-search/SaveCaseSearchModal.d.ts.map +1 -1
  91. package/lib/esm/components/case-list/case-search/SaveCaseSearchModal.js +48 -40
  92. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +1 -1
  93. package/lib/esm/components/escalations/EscalationForm.d.ts +1 -1
  94. package/lib/esm/components/escalations/EscalationForm.d.ts.map +1 -1
  95. package/lib/esm/components/escalations/EscalationForm.js +18 -9
  96. package/lib/esm/components/escalations/PartnerEscalation.d.ts +2 -1
  97. package/lib/esm/components/escalations/PartnerEscalation.d.ts.map +1 -1
  98. package/lib/esm/components/index.d.ts +2 -8
  99. package/lib/esm/components/index.d.ts.map +1 -1
  100. package/lib/esm/components/index.js +5 -8
  101. package/lib/esm/css/caseList.css +85 -64
  102. package/lib/esm/css/caseSearch.css +1 -1
  103. package/lib/esm/css/escalation.css +4 -4
  104. package/lib/esm/enums/cache.d.ts +1 -1
  105. package/lib/esm/enums/cache.d.ts.map +1 -1
  106. package/lib/esm/enums/case.js +1 -1
  107. package/lib/esm/enums/filters.d.ts +1 -1
  108. package/lib/esm/enums/filters.d.ts.map +1 -1
  109. package/lib/esm/enums/filters.js +1 -1
  110. package/lib/esm/i18n/template-es.js +1 -1
  111. package/lib/esm/index.d.ts +0 -2
  112. package/lib/esm/index.d.ts.map +1 -1
  113. package/lib/esm/index.js +0 -2
  114. package/lib/esm/models/caseList.d.ts +5 -2
  115. package/lib/esm/models/caseList.d.ts.map +1 -1
  116. package/lib/esm/scss/_main.scss +11 -11
  117. package/lib/esm/scss/_pf-overrides.scss +40 -4
  118. package/lib/esm/scss/index.scss +0 -1
  119. package/lib/esm/test-utils/testSetup.d.ts +1 -1
  120. package/lib/esm/test-utils/testSetup.d.ts.map +1 -1
  121. package/lib/esm/test-utils/testSetup.js +1 -1
  122. package/lib/esm/test-utils/testUtils.d.ts +1 -1
  123. package/lib/esm/test-utils/testUtils.js +1 -1
  124. package/lib/esm/utils/caseListUtils.js +3 -3
  125. package/lib/esm/utils/caseSearchUtils.d.ts +3 -3
  126. package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
  127. package/lib/esm/utils/caseSearchUtils.js +18 -5
  128. package/lib/esm/utils/constants.js +1 -1
  129. package/lib/esm/utils/routeUtils.js +2 -1
  130. package/package.json +35 -32
@@ -24,7 +24,7 @@ export const FILTER_URL_QUERY_SEARCH_PARAM = 'query';
24
24
  export const FILTER_URL_CURRENT_PAGE_SEARCH_PARAM = 'p';
25
25
  export const FILTER_URL_PAGE_SIZE_SEARCH_PARAM = 'size';
26
26
  export const FILTER_URL_QUERY_TYPE = 'searchType';
27
- function createSolrQueryFromFilterState(filterState, loggedInUser) {
27
+ function createSolrQueryFromFilterState(filterState, loggedInUser, selectedCases = []) {
28
28
  const { paginationInfo: { pageSize, currentPage }, sortInfo: { column, direction }, filterInfo, filterQueryInfo, } = filterState;
29
29
  const rows = pageSize;
30
30
  const queryString = (filterQueryInfo.queryString || '*:*').trim();
@@ -66,6 +66,7 @@ function createSolrQueryFromFilterState(filterState, loggedInUser) {
66
66
  .fq(SolrKeys.accountNumber, filteredAccounts)
67
67
  .fq(SolrKeys.escalation, escalationValue)
68
68
  .fq(SolrKeys.type, filterInfo[SolrKeys.type], [SolrTags.c_type])
69
+ .fq(SolrKeys.caseNumber, selectedCases)
69
70
  .beginOr()
70
71
  .fq(SolrKeys.createdBySsoUsername, filterInfo[SolrKeys.createdBySsoUsername])
71
72
  .fq(SolrKeys.caseContactSSO, filterInfo[SolrKeys.caseContactSSO])
@@ -197,15 +198,16 @@ function getStringOrBooleanValue(val) {
197
198
  return val;
198
199
  return val === 'true' ? true : val === 'false' ? false : `"${val}"`;
199
200
  }
200
- function createQueryForCSVDownload(filterState, loggedInUserRights, loggedInUsersAccount, startValue = 0, limitValue = 1000) {
201
+ function createQueryForCSVDownload(filterState, loggedInUserRights, loggedInUsersAccount, selectedCases = [], startValue = 0, limitValue = 1000) {
202
+ const newSelectedCases = selectedCases.slice(0, limitValue);
201
203
  if (loggedInUsersAccount.secureSupport) {
202
- const sfdcFilter = createSFDCQueryFromFilterState(filterState, loggedInUserRights, loggedInUsersAccount);
204
+ const sfdcFilter = createSFDCQueryFromFilterState(filterState, loggedInUserRights, loggedInUsersAccount, newSelectedCases);
203
205
  sfdcFilter.offset = startValue;
204
206
  sfdcFilter.maxResults = limitValue;
205
207
  return sfdcFilter;
206
208
  }
207
209
  else {
208
- const query = createSolrQueryFromFilterState(filterState, loggedInUserRights);
210
+ const query = createSolrQueryFromFilterState(filterState, loggedInUserRights, newSelectedCases);
209
211
  const { start, rows } = query, solrQuery = __rest(query, ["start", "rows"]);
210
212
  solrQuery.start = startValue;
211
213
  solrQuery.rows = limitValue;
@@ -226,7 +228,7 @@ function objectFlip(obj, camelCaseKey = false) {
226
228
  return ret;
227
229
  }, {});
228
230
  }
229
- function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserAccount) {
231
+ function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserAccount, selectedCases = []) {
230
232
  const { paginationInfo: { pageSize, currentPage }, sortInfo: { column, direction }, filterInfo, filterQueryInfo, } = filterState;
231
233
  const maxResults = pageSize;
232
234
  const offset = (currentPage - 1) * pageSize;
@@ -236,6 +238,8 @@ function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserA
236
238
  const filteredSeverity = filterInfo[SolrKeys.severity];
237
239
  const filteredProduct = filterInfo[ProductVersionKey];
238
240
  const includeClosed = filteredStatus.length === 0 ? true : filteredStatus.includes(CaseStatus.Closed);
241
+ const filteredCaseOwner = filterInfo[SolrKeys.caseOwner];
242
+ const filteredCaseCreatedBySSO = filterInfo[SolrKeys.createdBySsoUsername];
239
243
  // https://projects.engineering.redhat.com/browse/CPCCM-8069?focusedCommentId=2426553&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-2426553
240
244
  // Truth table in Comment here decsribes how combination of statuses work in sfdc.
241
245
  // below we remove the closed status from the selected status array because we have already set the include_closed flag on the line before this comment
@@ -259,6 +263,9 @@ function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserA
259
263
  else if (!isEmpty(queryString)) {
260
264
  sfdcFilter['keyword'] = queryString;
261
265
  }
266
+ if (selectedCases.length > 0) {
267
+ sfdcFilter['caseNumbers'] = [...(sfdcFilter['caseNumbers'] || []), ...selectedCases];
268
+ }
262
269
  if ((filteredStatus || []).length === 1) {
263
270
  sfdcFilter['status'] = filteredStatus[0];
264
271
  }
@@ -274,6 +281,12 @@ function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserA
274
281
  if (filteredAccounts.length === 1 && filteredAccounts[0] !== loggedInUser.getAccountNumber()) {
275
282
  sfdcFilter['accountNumber'] = filteredAccounts[0];
276
283
  }
284
+ if ((filteredCaseOwner || []).length === 1) {
285
+ sfdcFilter['ownerSSOName'] = filteredCaseOwner[0];
286
+ }
287
+ if ((filteredCaseCreatedBySSO || []).length === 1) {
288
+ sfdcFilter['createdBySSOName'] = filteredCaseCreatedBySSO[0];
289
+ }
277
290
  return sfdcFilter;
278
291
  }
279
292
  function mapSFDCCaseListToSolrCaseList(response = []) {
@@ -5,7 +5,7 @@ export const filterNamesMap = {
5
5
  [SolrKeys.severity]: 'Severity',
6
6
  [SolrKeys.group]: 'Groups',
7
7
  [SolrKeys.accountNumber]: 'Bookmarks',
8
- [SolrKeys.caseSummary]: 'Summary',
8
+ [SolrKeys.caseSummary]: 'Title',
9
9
  [SolrKeys.escalation]: 'Escalated',
10
10
  [SolrKeys.contactName]: 'Owner',
11
11
  [SolrKeys.product]: 'Products',
@@ -1,3 +1,4 @@
1
- export default class RouteUtils {
1
+ class RouteUtils {
2
2
  }
3
3
  RouteUtils.casesBasePath = '';
4
+ export default RouteUtils;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/cases",
3
- "version": "2.4.10-beta.6",
3
+ "version": "2.5.1",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -26,52 +26,55 @@
26
26
  "lib/**/*"
27
27
  ],
28
28
  "peerDependencies": {
29
- "@cee-eng/hydrajs": "4.16.43",
30
- "@patternfly/patternfly": "4.196.7",
31
- "@patternfly/pfe-collapse": "1.12.3",
32
- "@patternfly/react-core": "4.264.0",
33
- "@patternfly/react-table": "4.111.33",
34
- "i18next": "^19.0.1",
29
+ "@cee-eng/hydrajs": "4.17.36",
30
+ "@patternfly/patternfly": "5.4.0",
31
+ "@patternfly/react-core": "5.4.0",
32
+ "@patternfly/react-table": "5.4.0",
35
33
  "localforage": "^1.10.0",
36
34
  "lodash": "^4.17.21",
37
- "react": "17.0.2",
38
- "react-dom": "17.0.2",
39
- "react-i18next": "^11.2.5",
35
+ "react": "18.2.0",
36
+ "react-dom": "18.2.0",
37
+ "react-i18next": "^15.0.1",
40
38
  "react-router-dom": "^5.1.2",
41
39
  "solr-query-builder": "1.0.1"
42
40
  },
43
41
  "dependencies": {
44
- "@cee-eng/hydrajs": "4.16.43",
45
- "@patternfly/patternfly": "4.196.7",
46
- "@patternfly/pfe-collapse": "1.12.3",
47
- "@patternfly/react-core": "4.264.0",
48
- "@patternfly/react-table": "4.111.33",
49
- "@rh-support/components": "2.4.10-beta.6",
50
- "@rh-support/react-context": "2.4.10-beta.6",
51
- "@rh-support/types": "2.0.2",
52
- "@rh-support/user-permissions": "2.4.10-beta.6",
53
- "@rh-support/utils": "2.4.10-beta.6",
54
- "i18next": "^19.0.1",
42
+ "@cee-eng/hydrajs": "4.17.36",
43
+ "@patternfly/patternfly": "5.4.0",
44
+ "@patternfly/react-core": "5.4.0",
45
+ "@patternfly/react-table": "5.4.0",
46
+ "@rh-support/components": "2.5.1",
47
+ "@rh-support/react-context": "2.5.1",
48
+ "@rh-support/types": "2.0.5",
49
+ "@rh-support/user-permissions": "2.5.0",
50
+ "@rh-support/utils": "2.5.0",
55
51
  "localforage": "^1.10.0",
56
52
  "lodash": "^4.17.21",
57
53
  "pegjs": "^0.10.0",
58
- "react": "17.0.2",
59
- "react-dom": "17.0.2",
60
- "react-i18next": "^11.2.5",
54
+ "react": "18.2.0",
55
+ "react-dom": "18.2.0",
56
+ "react-i18next": "^15.0.1",
61
57
  "react-router-dom": "^5.1.2",
62
58
  "solr-query-builder": "1.0.1"
63
59
  },
64
60
  "devDependencies": {
65
- "@testing-library/jest-dom": "^5.16.5",
66
- "@testing-library/react": "^12.0.0",
67
- "@testing-library/user-event": "^13.1.9",
61
+ "@testing-library/jest-dom": "^6.2.0",
62
+ "@testing-library/react": "^14.1.2",
63
+ "@testing-library/user-event": "^14.5.1",
68
64
  "@types/i18next": "^12.1.0",
65
+ "@types/jest": "^29.5.11",
69
66
  "@types/lodash": "^4.14.136",
70
- "@types/react": "^17.0.14",
71
- "@types/react-dom": "^17.0.9",
72
- "@types/react-i18next": "^8.1.0",
67
+ "@types/node": "^20.11.5",
68
+ "@types/react": "^18.2.20",
69
+ "@types/react-dom": "^18.2.18",
73
70
  "@types/react-router-dom": "^5.1.2",
74
- "faker": "^5.5.3"
71
+ "faker": "^5.5.3",
72
+ "jest": "^29.7.0",
73
+ "jest-environment-jsdom": "^29.7.0"
74
+ },
75
+ "overrides": {
76
+ "@types/react": "^18.2.20",
77
+ "@types/react-dom": "^18.2.18"
75
78
  },
76
79
  "scripts": {
77
80
  "build:watch": "../../node_modules/.bin/tsc -w -p config/tsconfig.json & npm run watch:css",
@@ -93,5 +96,5 @@
93
96
  "defaults and supports es6-module",
94
97
  "maintained node versions"
95
98
  ],
96
- "gitHead": "f4caba45a2ffbc0cb441fdd30630769b447931d1"
99
+ "gitHead": "78f51b2cfd60107a49503d13542ba46d29df4d04"
97
100
  }