@rh-support/cases 2.6.186 → 2.6.187

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 (134) hide show
  1. package/lib/esm/components/case-list/CaseList.d.ts +0 -7
  2. package/lib/esm/components/case-list/CaseList.d.ts.map +1 -1
  3. package/lib/esm/components/case-list/CaseList.js +195 -113
  4. package/lib/esm/components/case-list/CaseListContext.d.ts.map +1 -1
  5. package/lib/esm/components/case-list/CaseListContext.js +5 -2
  6. package/lib/esm/components/case-list/CaseListFilterContext.d.ts.map +1 -1
  7. package/lib/esm/components/case-list/CaseListFilterContext.js +2 -1
  8. package/lib/esm/components/case-list/CaseListFilterHelpers.d.ts +3 -2
  9. package/lib/esm/components/case-list/CaseListFilterHelpers.d.ts.map +1 -1
  10. package/lib/esm/components/case-list/CaseListFilterHelpers.js +19 -6
  11. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts +35 -4
  12. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts.map +1 -1
  13. package/lib/esm/components/case-list/CaseListFilterReducer.js +4 -12
  14. package/lib/esm/components/case-list/CaseListReducer.d.ts +22 -10
  15. package/lib/esm/components/case-list/CaseListReducer.d.ts.map +1 -1
  16. package/lib/esm/components/case-list/CaseListReducer.js +25 -7
  17. package/lib/esm/components/case-list/case-list-filters/AccountsFilter.d.ts.map +1 -1
  18. package/lib/esm/components/case-list/case-list-filters/AccountsFilter.js +18 -11
  19. package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.d.ts.map +1 -1
  20. package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.js +6 -2
  21. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts +1 -7
  22. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts.map +1 -1
  23. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.js +12 -16
  24. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts +2 -5
  25. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts.map +1 -1
  26. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.js +12 -13
  27. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilterChip.d.ts.map +1 -1
  28. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilterChip.js +3 -0
  29. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.d.ts +11 -1
  30. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.d.ts.map +1 -1
  31. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.js +116 -71
  32. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts +1 -3
  33. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts.map +1 -1
  34. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.js +2 -2
  35. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts +5 -4
  36. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts.map +1 -1
  37. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.js +15 -54
  38. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts +0 -3
  39. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts.map +1 -1
  40. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.js +18 -44
  41. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts +0 -3
  42. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts.map +1 -1
  43. package/lib/esm/components/case-list/case-list-filters/StatusFilter.js +14 -44
  44. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts +1 -3
  45. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts.map +1 -1
  46. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.js +60 -59
  47. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts +7 -3
  48. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts.map +1 -1
  49. package/lib/esm/components/case-list/case-list-table/CaseListTable.js +77 -60
  50. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts +0 -5
  51. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts.map +1 -1
  52. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.js +38 -68
  53. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.d.ts.map +1 -1
  54. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.js +5 -15
  55. package/lib/esm/components/case-list/case-list-table/SeverityLabel.js +1 -1
  56. package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.d.ts.map +1 -1
  57. package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.js +2 -3
  58. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts +8 -0
  59. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts.map +1 -0
  60. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.js +8 -0
  61. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.d.ts.map +1 -1
  62. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.js +1 -0
  63. package/lib/esm/components/case-list/case-search/CaseSearch.d.ts.map +1 -1
  64. package/lib/esm/components/case-list/case-search/CaseSearch.js +55 -24
  65. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts +10 -0
  66. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts.map +1 -0
  67. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.js +29 -0
  68. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts +10 -0
  69. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts.map +1 -0
  70. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.js +16 -0
  71. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts +9 -0
  72. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts.map +1 -0
  73. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.js +21 -0
  74. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts +12 -0
  75. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts.map +1 -0
  76. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.js +31 -0
  77. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts +10 -0
  78. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts.map +1 -0
  79. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.js +10 -0
  80. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts +10 -0
  81. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts.map +1 -0
  82. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.js +92 -0
  83. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts +9 -0
  84. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts.map +1 -0
  85. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.js +20 -0
  86. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts +9 -0
  87. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts.map +1 -0
  88. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.js +28 -0
  89. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts +9 -0
  90. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts.map +1 -0
  91. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.js +241 -0
  92. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts +11 -0
  93. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts.map +1 -0
  94. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.js +23 -0
  95. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.d.ts.map +1 -1
  96. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +2 -1
  97. package/lib/esm/css/caseList.css +111 -22
  98. package/lib/esm/css/caseSearch.css +114 -0
  99. package/lib/esm/enums/case.d.ts +2 -1
  100. package/lib/esm/enums/case.d.ts.map +1 -1
  101. package/lib/esm/enums/case.js +14 -1
  102. package/lib/esm/enums/caseSearch.d.ts +1 -0
  103. package/lib/esm/enums/caseSearch.d.ts.map +1 -1
  104. package/lib/esm/enums/caseSearch.js +1 -1
  105. package/lib/esm/hooks/useExportCaseListCSV.d.ts.map +1 -1
  106. package/lib/esm/hooks/useExportCaseListCSV.js +1 -9
  107. package/lib/esm/hooks/useFilterStateOnLoad.d.ts +1 -1
  108. package/lib/esm/hooks/useFilterStateOnLoad.d.ts.map +1 -1
  109. package/lib/esm/test-utils/mockData.js +1 -1
  110. package/lib/esm/utils/advanceSearchFormMapper.d.ts +11 -0
  111. package/lib/esm/utils/advanceSearchFormMapper.d.ts.map +1 -0
  112. package/lib/esm/utils/advanceSearchFormMapper.js +71 -0
  113. package/lib/esm/utils/advanceSearchUtils.d.ts +24 -0
  114. package/lib/esm/utils/advanceSearchUtils.d.ts.map +1 -0
  115. package/lib/esm/utils/advanceSearchUtils.js +149 -0
  116. package/lib/esm/utils/caseListGraphQLUtils.d.ts +28 -0
  117. package/lib/esm/utils/caseListGraphQLUtils.d.ts.map +1 -0
  118. package/lib/esm/utils/caseListGraphQLUtils.js +280 -0
  119. package/lib/esm/utils/caseListMapper.d.ts +6 -0
  120. package/lib/esm/utils/caseListMapper.d.ts.map +1 -0
  121. package/lib/esm/utils/caseListMapper.js +36 -0
  122. package/lib/esm/utils/caseListVariablesBuilder.d.ts +15 -0
  123. package/lib/esm/utils/caseListVariablesBuilder.d.ts.map +1 -0
  124. package/lib/esm/utils/caseListVariablesBuilder.js +399 -0
  125. package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
  126. package/lib/esm/utils/caseSearchUtils.js +26 -1
  127. package/lib/esm/utils/constants.d.ts +4 -1
  128. package/lib/esm/utils/constants.d.ts.map +1 -1
  129. package/lib/esm/utils/constants.js +20 -2
  130. package/lib/esm/utils/mockSolrResponse.js +1 -1
  131. package/lib/esm/utils/statusUtils.d.ts +4 -0
  132. package/lib/esm/utils/statusUtils.d.ts.map +1 -0
  133. package/lib/esm/utils/statusUtils.js +36 -0
  134. package/package.json +8 -8
@@ -0,0 +1,399 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { GET_CONTACT_BY_SSO, GET_GROUP_IDS_BY_NAME, GET_USER_IDS_BY_FEDERATION, getTechnicalSupportRecordTypeId, } from '@rh-support/utils';
11
+ import { CaseListColumnIds, caseListSortColumnIdsToGraphQLMap } from '../enums/case';
12
+ import { SolrKeys, SolrPivotKeys } from '../enums/filters';
13
+ import { parseAdvanceSearchDate } from './advanceSearchUtils';
14
+ import { expandStatusGroupsToApiValues } from './statusUtils';
15
+ export function getOwnerFederationIdsToResolve(filterState) {
16
+ const { filterInfo } = filterState;
17
+ if (!filterInfo)
18
+ return [];
19
+ const ownerSso = filterInfo[SolrKeys.caseOwner];
20
+ const contactSso = filterInfo[SolrKeys.caseContactSSO];
21
+ const contactSsoSet = new Set(contactSso || []);
22
+ const filteredOwnerSso = (ownerSso || []).filter((sso) => !contactSsoSet.has(sso));
23
+ return [...new Set(filteredOwnerSso)];
24
+ }
25
+ function buildOrderByFromSortInfo(sortInfo) {
26
+ var _a;
27
+ if (!(sortInfo === null || sortInfo === void 0 ? void 0 : sortInfo.column))
28
+ return { LastModifiedDate: { order: 'DESC' } };
29
+ const order = ((_a = sortInfo.direction) === null || _a === void 0 ? void 0 : _a.toUpperCase()) || 'DESC';
30
+ if (sortInfo.column === CaseListColumnIds.group) {
31
+ return { Group__r: { Name: { order } } };
32
+ }
33
+ const gqlField = caseListSortColumnIdsToGraphQLMap[sortInfo.column];
34
+ if (!gqlField)
35
+ return { LastModifiedDate: { order: 'DESC' } };
36
+ return { [gqlField]: { order } };
37
+ }
38
+ function flattenAccountNumbers(accountFilters) {
39
+ const numbers = [];
40
+ accountFilters.forEach((item) => {
41
+ if (Array.isArray(item.key)) {
42
+ numbers.push(...item.key);
43
+ }
44
+ else if (item.key) {
45
+ numbers.push(item.key);
46
+ }
47
+ });
48
+ return [...new Set(numbers)];
49
+ }
50
+ function buildStatusFilter(statuses) {
51
+ if (!(statuses === null || statuses === void 0 ? void 0 : statuses.length))
52
+ return undefined;
53
+ const expandedStatuses = expandStatusGroupsToApiValues(statuses);
54
+ return { Status: { in: expandedStatuses } };
55
+ }
56
+ function buildProductFilter(products) {
57
+ const conditions = [];
58
+ const parentProductIds = [];
59
+ const childProductIds = [];
60
+ products.forEach((product) => {
61
+ const versions = product[SolrKeys.version];
62
+ if (versions === null || versions === void 0 ? void 0 : versions.length) {
63
+ let hasVersionIds = false;
64
+ versions.forEach((version) => {
65
+ if (version.productId) {
66
+ childProductIds.push(version.productId);
67
+ hasVersionIds = true;
68
+ }
69
+ });
70
+ if (!hasVersionIds && product.productId) {
71
+ parentProductIds.push(product.productId);
72
+ }
73
+ }
74
+ else if (product.productId) {
75
+ parentProductIds.push(product.productId);
76
+ }
77
+ });
78
+ if (childProductIds.length) {
79
+ conditions.push({ ProductId: { in: childProductIds } });
80
+ }
81
+ if (parentProductIds.length) {
82
+ conditions.push({ Product: { ParentProduct__c: { in: parentProductIds } } });
83
+ }
84
+ return conditions;
85
+ }
86
+ function buildGroupFilter(groups) {
87
+ var _a;
88
+ const groupIds = (_a = groups === null || groups === void 0 ? void 0 : groups.map((group) => group.key).filter(Boolean)) !== null && _a !== void 0 ? _a : [];
89
+ if (!groupIds.length)
90
+ return undefined;
91
+ if (groupIds.length === 1) {
92
+ return { Group__c: { eq: groupIds[0] } };
93
+ }
94
+ return { Group__c: { in: groupIds } };
95
+ }
96
+ function buildDateTimeRangeFilter(fieldName, range) {
97
+ var _a, _b, _c, _d;
98
+ if (!range) {
99
+ return undefined;
100
+ }
101
+ const operators = {};
102
+ const startTrimmed = (_b = (_a = range.startDate) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '';
103
+ const endTrimmed = (_d = (_c = range.endDate) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : '';
104
+ if (startTrimmed && parseAdvanceSearchDate(startTrimmed)) {
105
+ operators.gte = { value: `${startTrimmed}T00:00:00.000Z` };
106
+ }
107
+ if (endTrimmed && parseAdvanceSearchDate(endTrimmed)) {
108
+ operators.lte = { value: `${endTrimmed}T23:59:59.999Z` };
109
+ }
110
+ if (!Object.keys(operators).length) {
111
+ return undefined;
112
+ }
113
+ return { [fieldName]: operators };
114
+ }
115
+ /**
116
+ * Builds a ContactId / OwnerId filter from looked-up IDs.
117
+ * Used for Owner and Assigned To — those fields need IDs, not nested name/SSO filters.
118
+ */
119
+ function buildIdFilter(fieldName, ids, filterRequested = false) {
120
+ if (!(ids === null || ids === void 0 ? void 0 : ids.length)) {
121
+ // User searched, but nobody matched — return empty so the API finds no cases.
122
+ return filterRequested ? { [fieldName]: { in: [] } } : undefined;
123
+ }
124
+ const uniqueIds = [...new Set(ids)];
125
+ if (uniqueIds.length === 1) {
126
+ return { [fieldName]: { eq: uniqueIds[0] } };
127
+ }
128
+ return { [fieldName]: { in: uniqueIds } };
129
+ }
130
+ function buildSalesforceSupportUserMatch(value) {
131
+ return {
132
+ or: [{ FederationIdentifier: { eq: value } }, { Name: { like: `%${value}%` } }],
133
+ };
134
+ }
135
+ function buildSalesforceSupportUserReferenceFilter(fieldName, values) {
136
+ if (!(values === null || values === void 0 ? void 0 : values.length)) {
137
+ return undefined;
138
+ }
139
+ if (values.length === 1) {
140
+ return { [fieldName]: buildSalesforceSupportUserMatch(values[0]) };
141
+ }
142
+ return {
143
+ or: values.map((value) => ({
144
+ [fieldName]: buildSalesforceSupportUserMatch(value),
145
+ })),
146
+ };
147
+ }
148
+ function buildKeywordSearchFilter(queryString) {
149
+ if (!queryString)
150
+ return undefined;
151
+ const keyword = queryString.replace(/\*$/g, '').trim();
152
+ if (!keyword)
153
+ return undefined;
154
+ const caseNumberPattern = /^\d{8}$/;
155
+ if (caseNumberPattern.test(keyword)) {
156
+ return { CaseNumber__c: { eq: keyword } };
157
+ }
158
+ const likeValue = `%${keyword}%`;
159
+ return {
160
+ or: [{ Subject: { like: likeValue } }, { CaseNumber__c: { like: likeValue } }],
161
+ };
162
+ }
163
+ /**
164
+ * Owner (case contact): find Contact IDs by SSO or name.
165
+ * We need this because the case query cannot filter by contact name/SSO directly.
166
+ */
167
+ function resolveContactIdsBySearchTerms(searchTerms, apolloClient) {
168
+ return __awaiter(this, void 0, void 0, function* () {
169
+ var _a, _b, _c;
170
+ if (!(searchTerms === null || searchTerms === void 0 ? void 0 : searchTerms.length)) {
171
+ return [];
172
+ }
173
+ const contactIds = [];
174
+ for (const searchTerm of searchTerms) {
175
+ if (!searchTerm) {
176
+ continue;
177
+ }
178
+ try {
179
+ const { data } = yield apolloClient.query({
180
+ query: GET_CONTACT_BY_SSO,
181
+ variables: {
182
+ searchTerm,
183
+ namePattern: `%${searchTerm}%`,
184
+ },
185
+ fetchPolicy: 'cache-first',
186
+ });
187
+ const edges = ((_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.salesforce_support_uiapi) === null || _a === void 0 ? void 0 : _a.query) === null || _b === void 0 ? void 0 : _b.SalesforceSupportContact) === null || _c === void 0 ? void 0 : _c.edges) || [];
188
+ edges.forEach((edge) => {
189
+ var _a, _b, _c;
190
+ const ssoUsername = (_b = (_a = edge.node) === null || _a === void 0 ? void 0 : _a.SSOUserName__c) === null || _b === void 0 ? void 0 : _b.value;
191
+ if (((_c = edge.node) === null || _c === void 0 ? void 0 : _c.Id) && ssoUsername) {
192
+ contactIds.push(edge.node.Id);
193
+ }
194
+ });
195
+ }
196
+ catch (error) {
197
+ console.error('[GraphQL] Failed to resolve contact IDs by SSO or name:', error);
198
+ }
199
+ }
200
+ return [...new Set(contactIds)];
201
+ });
202
+ }
203
+ /**
204
+ * Assigned To (user): find user IDs by federation ID or name.
205
+ * Fallback when IDs were not already resolved earlier.
206
+ */
207
+ function resolveOwnerUserIdsBySearchTerms(searchTerms, apolloClient) {
208
+ return __awaiter(this, void 0, void 0, function* () {
209
+ var _a, _b, _c;
210
+ if (!(searchTerms === null || searchTerms === void 0 ? void 0 : searchTerms.length)) {
211
+ return [];
212
+ }
213
+ const userIds = [];
214
+ for (const searchTerm of searchTerms) {
215
+ if (!searchTerm) {
216
+ continue;
217
+ }
218
+ try {
219
+ const { data } = yield apolloClient.query({
220
+ query: GET_USER_IDS_BY_FEDERATION,
221
+ variables: {
222
+ searchTerm,
223
+ namePattern: `%${searchTerm}%`,
224
+ },
225
+ fetchPolicy: 'cache-first',
226
+ });
227
+ const edges = ((_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.salesforce_support_uiapi) === null || _a === void 0 ? void 0 : _a.query) === null || _b === void 0 ? void 0 : _b.SalesforceSupportUser) === null || _c === void 0 ? void 0 : _c.edges) || [];
228
+ edges.forEach((edge) => {
229
+ var _a, _b, _c;
230
+ const federationId = (_b = (_a = edge.node) === null || _a === void 0 ? void 0 : _a.FederationIdentifier) === null || _b === void 0 ? void 0 : _b.value;
231
+ if (((_c = edge.node) === null || _c === void 0 ? void 0 : _c.Id) && federationId) {
232
+ userIds.push(edge.node.Id);
233
+ }
234
+ });
235
+ }
236
+ catch (error) {
237
+ console.error('[GraphQL] Failed to resolve owner user IDs by federation ID or name:', error);
238
+ }
239
+ }
240
+ return [...new Set(userIds)];
241
+ });
242
+ }
243
+ /**
244
+ * Assigned To (group/queue): find group IDs by name.
245
+ * OwnerId can be either a user or a group.
246
+ */
247
+ function resolveOwnerGroupIdsBySearchTerms(searchTerms, apolloClient) {
248
+ return __awaiter(this, void 0, void 0, function* () {
249
+ var _a, _b, _c;
250
+ if (!(searchTerms === null || searchTerms === void 0 ? void 0 : searchTerms.length)) {
251
+ return [];
252
+ }
253
+ const groupIds = [];
254
+ for (const searchTerm of searchTerms) {
255
+ if (!searchTerm) {
256
+ continue;
257
+ }
258
+ try {
259
+ const { data } = yield apolloClient.query({
260
+ query: GET_GROUP_IDS_BY_NAME,
261
+ variables: {
262
+ namePattern: `%${searchTerm}%`,
263
+ },
264
+ fetchPolicy: 'cache-first',
265
+ });
266
+ const edges = ((_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.salesforce_support_uiapi) === null || _a === void 0 ? void 0 : _a.query) === null || _b === void 0 ? void 0 : _b.SalesforceSupportGroup) === null || _c === void 0 ? void 0 : _c.edges) || [];
267
+ edges.forEach((edge) => {
268
+ var _a;
269
+ if ((_a = edge.node) === null || _a === void 0 ? void 0 : _a.Id) {
270
+ groupIds.push(edge.node.Id);
271
+ }
272
+ });
273
+ }
274
+ catch (error) {
275
+ console.error('[GraphQL] Failed to resolve owner group IDs by name:', error);
276
+ }
277
+ }
278
+ return [...new Set(groupIds)];
279
+ });
280
+ }
281
+ /** Assigned To: merge user IDs and group IDs into one OwnerId list. */
282
+ function resolveOwnerIdsBySearchTerms(searchTerms, apolloClient) {
283
+ return __awaiter(this, void 0, void 0, function* () {
284
+ const [userIds, groupIds] = yield Promise.all([
285
+ resolveOwnerUserIdsBySearchTerms(searchTerms, apolloClient),
286
+ resolveOwnerGroupIdsBySearchTerms(searchTerms, apolloClient),
287
+ ]);
288
+ return [...new Set([...userIds, ...groupIds])];
289
+ });
290
+ }
291
+ export function createGraphQLVariablesFromFilterState(filterState, apolloClient, resolvedUserIds) {
292
+ return __awaiter(this, void 0, void 0, function* () {
293
+ const { paginationInfo, sortInfo, filterInfo, filterQueryInfo } = filterState;
294
+ const first = (paginationInfo === null || paginationInfo === void 0 ? void 0 : paginationInfo.pageSize) || 10;
295
+ const orderBy = buildOrderByFromSortInfo(sortInfo);
296
+ const andConditions = [];
297
+ if (filterInfo) {
298
+ const statusFilter = buildStatusFilter(filterInfo[SolrKeys.status]);
299
+ if (statusFilter)
300
+ andConditions.push(statusFilter);
301
+ const severities = filterInfo[SolrKeys.severity];
302
+ if (severities === null || severities === void 0 ? void 0 : severities.length) {
303
+ andConditions.push({ Priority: { in: severities } });
304
+ }
305
+ const accounts = filterInfo[SolrKeys.accountNumber];
306
+ if (accounts === null || accounts === void 0 ? void 0 : accounts.length) {
307
+ const accountNumbers = flattenAccountNumbers(accounts);
308
+ if (accountNumbers.length) {
309
+ andConditions.push({ Account_Number__c: { in: accountNumbers } });
310
+ }
311
+ }
312
+ const products = filterInfo[SolrPivotKeys.product_version];
313
+ if (products === null || products === void 0 ? void 0 : products.length) {
314
+ const productConditions = buildProductFilter(products);
315
+ if (productConditions.length === 1) {
316
+ andConditions.push(productConditions[0]);
317
+ }
318
+ else if (productConditions.length > 1) {
319
+ andConditions.push({ or: productConditions });
320
+ }
321
+ }
322
+ const types = filterInfo[SolrKeys.type];
323
+ if (types === null || types === void 0 ? void 0 : types.length) {
324
+ andConditions.push({ Type: { in: types } });
325
+ }
326
+ const createdByValues = filterInfo[SolrKeys.createdBySsoUsername];
327
+ const contactValues = filterInfo[SolrKeys.caseContactSSO];
328
+ const assignedToValues = getOwnerFederationIdsToResolve(filterState);
329
+ const alternateIds = filterInfo[SolrKeys.alternateId];
330
+ const openshiftClusterIds = filterInfo[SolrKeys.openshiftClusterId];
331
+ const modifiedByValues = filterInfo[SolrKeys.modifiedBy];
332
+ // Problem: GraphQL will not let us filter cases by Owner name/SSO or Assigned To name
333
+ // nested under Contact/Owner. So for those fields we look up IDs first, then filter by ID.
334
+ // Created By / Last Modified By are fine — they support nested name filters directly.
335
+ const contactIds = yield resolveContactIdsBySearchTerms(contactValues, apolloClient);
336
+ const ownerUserIds = (resolvedUserIds === null || resolvedUserIds === void 0 ? void 0 : resolvedUserIds.ownerUserIds) ||
337
+ (assignedToValues.length ? yield resolveOwnerIdsBySearchTerms(assignedToValues, apolloClient) : []);
338
+ const contactIdFilter = buildIdFilter('ContactId', contactIds, Boolean(contactValues === null || contactValues === void 0 ? void 0 : contactValues.length));
339
+ if (contactIdFilter) {
340
+ andConditions.push(contactIdFilter);
341
+ }
342
+ const ownerIdFilter = buildIdFilter('OwnerId', ownerUserIds, assignedToValues.length > 0);
343
+ if (ownerIdFilter) {
344
+ andConditions.push(ownerIdFilter);
345
+ }
346
+ const createdByFilter = buildSalesforceSupportUserReferenceFilter('CreatedBy', createdByValues);
347
+ if (createdByFilter) {
348
+ andConditions.push(createdByFilter);
349
+ }
350
+ const lastModifiedByFilter = buildSalesforceSupportUserReferenceFilter('LastModifiedBy', modifiedByValues);
351
+ if (lastModifiedByFilter) {
352
+ andConditions.push(lastModifiedByFilter);
353
+ }
354
+ if (alternateIds === null || alternateIds === void 0 ? void 0 : alternateIds.length) {
355
+ andConditions.push({ AlternateCaseId__c: { in: alternateIds } });
356
+ }
357
+ if (openshiftClusterIds === null || openshiftClusterIds === void 0 ? void 0 : openshiftClusterIds.length) {
358
+ andConditions.push({ OpenshiftClusterID__c: { in: openshiftClusterIds } });
359
+ }
360
+ const { advanceSearchDateRanges } = filterState;
361
+ if (advanceSearchDateRanges) {
362
+ const createdDateFilter = buildDateTimeRangeFilter('CreatedDate', advanceSearchDateRanges.createdDateRange);
363
+ const lastModifiedDateFilter = buildDateTimeRangeFilter('LastModifiedDate', advanceSearchDateRanges.lastModifiedDateRange);
364
+ const closedDateFilter = buildDateTimeRangeFilter('ClosedDate', advanceSearchDateRanges.closedDateRange);
365
+ if (createdDateFilter)
366
+ andConditions.push(createdDateFilter);
367
+ if (lastModifiedDateFilter)
368
+ andConditions.push(lastModifiedDateFilter);
369
+ if (closedDateFilter)
370
+ andConditions.push(closedDateFilter);
371
+ }
372
+ const groups = filterInfo[SolrKeys.group];
373
+ const groupFilter = buildGroupFilter(groups);
374
+ if (groupFilter)
375
+ andConditions.push(groupFilter);
376
+ }
377
+ const escalation = filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrKeys.escalation];
378
+ const technicalSupportId = getTechnicalSupportRecordTypeId();
379
+ if (technicalSupportId) {
380
+ andConditions.push({ RecordTypeId: { eq: technicalSupportId } });
381
+ }
382
+ if (escalation === null || escalation === void 0 ? void 0 : escalation.length) {
383
+ andConditions.push({ IsEscalated: { eq: true } });
384
+ }
385
+ if (filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.queryString) {
386
+ const keywordFilter = buildKeywordSearchFilter(filterQueryInfo.queryString);
387
+ if (keywordFilter)
388
+ andConditions.push(keywordFilter);
389
+ }
390
+ let where;
391
+ if (andConditions.length === 1) {
392
+ where = andConditions[0];
393
+ }
394
+ else if (andConditions.length > 1) {
395
+ where = { and: andConditions };
396
+ }
397
+ return { first, where, orderBy };
398
+ });
399
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"caseSearchUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseSearchUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAkBxD,OAAO,EACH,oBAAoB,EACpB,WAAW,EAId,MAAM,+CAA+C,CAAC;AAOvD,OAAO,EAEH,mBAAmB,EAEtB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,6BAA6B,UAAU,CAAC;AACrD,eAAO,MAAM,oCAAoC,MAAM,CAAC;AACxD,eAAO,MAAM,iCAAiC,SAAS,CAAC;AACxD,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,aAAa,GAAE,MAAM,EAAO,OAgE/B;AAED,iBAAS,sCAAsC,CAC3C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,OAAe,UA2BnC;AAED,iBAAS,oDAAoD,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,UA+DlH;AAkBD,iBAAS,wCAAwC,CAC7C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,eAAe,QAAK,UA6BvB;AASD,iBAAS,yBAAyB,CAC9B,WAAW,EAAE,oBAAoB,EACjC,kBAAkB,EAAE,QAAQ,EAC5B,oBAAoB,KAAA,EACpB,aAAa,GAAE,MAAM,EAAO,EAC5B,UAAU,SAAI,EACd,UAAU,SAAO,OAoBpB;AAkBD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,EACtC,aAAa,GAAE,MAAM,EAAO,GAC7B,OAAO,CAAC,eAAe,CAAC,CAkE1B;AAED,iBAAS,6BAA6B,CAAC,QAAQ,GAAE,qBAAqB,EAAO,GAAG,qBAAqB,EAAE,CAEtG;AAoBD,iBAAS,6BAA6B,CAAC,WAAW,EAAE,oBAAoB,UAUvE;AAED,iBAAS,6BAA6B,CAClC,QAAQ,EAAE,MAAM,EAChB,mBAAmB,EAAE,oBAAoB,EACzC,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,GAAE,mBAA+C,wBAsD9D;AAGD,iBAAS,kCAAkC,CACvC,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,oBAAoB,EACzC,kBAAkB,EAAE,oBAAoB,EACxC,WAAW,GAAE,MAAW,EACxB,IAAI,GAAE,mBAA+C,wBA6DxD;AA0KD,OAAO,EACH,8BAA8B,EAC9B,sCAAsC,EACtC,oDAAoD,EACpD,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,wCAAwC,EACxC,kCAAkC,GACrC,CAAC"}
1
+ {"version":3,"file":"caseSearchUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseSearchUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAkBxD,OAAO,EACH,oBAAoB,EACpB,WAAW,EAId,MAAM,+CAA+C,CAAC;AAOvD,OAAO,EAEH,mBAAmB,EAEtB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,6BAA6B,UAAU,CAAC;AACrD,eAAO,MAAM,oCAAoC,MAAM,CAAC;AACxD,eAAO,MAAM,iCAAiC,SAAS,CAAC;AACxD,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,aAAa,GAAE,MAAM,EAAO,OAgE/B;AAED,iBAAS,sCAAsC,CAC3C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,OAAe,UA2BnC;AAED,iBAAS,oDAAoD,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,UA+DlH;AAkBD,iBAAS,wCAAwC,CAC7C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,eAAe,QAAK,UA6BvB;AASD,iBAAS,yBAAyB,CAC9B,WAAW,EAAE,oBAAoB,EACjC,kBAAkB,EAAE,QAAQ,EAC5B,oBAAoB,KAAA,EACpB,aAAa,GAAE,MAAM,EAAO,EAC5B,UAAU,SAAI,EACd,UAAU,SAAO,OAoBpB;AAkBD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,EACtC,aAAa,GAAE,MAAM,EAAO,GAC7B,OAAO,CAAC,eAAe,CAAC,CAkE1B;AAED,iBAAS,6BAA6B,CAAC,QAAQ,GAAE,qBAAqB,EAAO,GAAG,qBAAqB,EAAE,CAEtG;AAoBD,iBAAS,6BAA6B,CAAC,WAAW,EAAE,oBAAoB,UAUvE;AAED,iBAAS,6BAA6B,CAClC,QAAQ,EAAE,MAAM,EAChB,mBAAmB,EAAE,oBAAoB,EACzC,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,GAAE,mBAA+C,wBA0D9D;AAGD,iBAAS,kCAAkC,CACvC,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,oBAAoB,EACzC,kBAAkB,EAAE,oBAAoB,EACxC,WAAW,GAAE,MAAW,EACxB,IAAI,GAAE,mBAA+C,wBAiExD;AA0LD,OAAO,EACH,8BAA8B,EAC9B,sCAAsC,EACtC,oDAAoD,EACpD,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,wCAAwC,EACxC,kCAAkC,GACrC,CAAC"}
@@ -328,6 +328,7 @@ function createURLQueryFromFilterState(filterState) {
328
328
  return finalQuery;
329
329
  }
330
330
  function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize, currentPage, searchType = CaseSearchQueryType.BASIC) {
331
+ var _a;
331
332
  const { paginationInfo: defaultPaginationInfo, sortInfo: defaultSortInfo, filterInfo: defaultFilterInfo, filterQueryInfo: defaultFilterQueryInfo, } = initialCaseFilterState;
332
333
  const [filters = '', sortQuery] = (urlQuery || '').split(/orderBy/i);
333
334
  const paginationInfoFromUrl = {
@@ -341,7 +342,7 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
341
342
  sortInfo = { column, direction: direction };
342
343
  }
343
344
  const filterInfo = {};
344
- const _a = parseSolrQuery(filters), { keyword: queryString = [''] } = _a, restFilters = __rest(_a, ["keyword"]);
345
+ const _b = parseSolrQuery(filters), { keyword: queryString = [''] } = _b, restFilters = __rest(_b, ["keyword"]);
345
346
  const filterQueryInfo = merge({}, defaultFilterQueryInfo, {
346
347
  queryString: queryString[0].replace(/\\"/g, '"'),
347
348
  type: searchType,
@@ -358,6 +359,9 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
358
359
  }
359
360
  }
360
361
  });
362
+ if ((_a = filterInfo[SolrPivotKeys.product_version]) === null || _a === void 0 ? void 0 : _a.length) {
363
+ enrichProductFilterWithIds(filterInfo[SolrPivotKeys.product_version], globalMetadataState);
364
+ }
361
365
  const parsedQuery = filterQueryInfo.type === CaseSearchQueryType.ADVANCED
362
366
  ? createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo, filterQueryInfo.queryString)
363
367
  : '';
@@ -371,6 +375,7 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
371
375
  }
372
376
  // advanced query
373
377
  function createFilterStateFromAdvancedQuery(queryString, globalMetadataState, currentFilterState, parsedQuery = '', type = CaseSearchQueryType.BASIC) {
378
+ var _a;
374
379
  const filterObj = parseSolrQuery(queryString);
375
380
  const newFilterInfo = {};
376
381
  let advanceToBasicQuery = [];
@@ -423,6 +428,9 @@ function createFilterStateFromAdvancedQuery(queryString, globalMetadataState, cu
423
428
  }
424
429
  delete newFilterInfo[SolrKeys.version];
425
430
  }
431
+ if ((_a = newFilterInfo[SolrPivotKeys.product_version]) === null || _a === void 0 ? void 0 : _a.length) {
432
+ enrichProductFilterWithIds(newFilterInfo[SolrPivotKeys.product_version], globalMetadataState);
433
+ }
426
434
  const filterState = Object.assign(Object.assign({}, currentFilterState), { filterQueryInfo: Object.assign(Object.assign({}, currentFilterState.filterQueryInfo), { queryString: advanceToBasicQuery.join(' AND '), parsedQuery,
427
435
  type }), filterInfo: Object.assign(Object.assign({}, initialCaseFilterState.filterInfo), newFilterInfo) });
428
436
  return filterState;
@@ -556,4 +564,21 @@ function generateProductVersionPivotValue(values) {
556
564
  };
557
565
  });
558
566
  }
567
+ /**
568
+ * Enriches product filter objects (from URL) with their parent Product2 IDs
569
+ * by matching product names against the allProducts metadata loaded at startup.
570
+ * This allows buildProductFilter to use ParentProduct__c when version IDs aren't yet resolved.
571
+ */
572
+ function enrichProductFilterWithIds(products, globalMetadataState) {
573
+ var _a, _b;
574
+ const allProductsList = ((_b = (_a = globalMetadataState === null || globalMetadataState === void 0 ? void 0 : globalMetadataState.allProducts) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.productsResult) || [];
575
+ products.forEach((prod) => {
576
+ if (prod.productId)
577
+ return;
578
+ const matched = allProductsList.find((p) => p.name === prod.value || p.product === prod.value);
579
+ if (matched === null || matched === void 0 ? void 0 : matched.productId) {
580
+ prod.productId = matched.productId;
581
+ }
582
+ });
583
+ }
559
584
  export { createSolrQueryFromFilterState, createUserFriendlyQueryFromFilterState, createUserFriendlyQueryFromFilterStateAdvancedSearch, createQueryForCSVDownload, createSFDCQueryFromFilterState, mapSFDCCaseListToSolrCaseList, createURLQueryFromFilterState, createFilterStateFromUrlQuery, createAdvancedSearchQueryFromFilterState, createFilterStateFromAdvancedQuery, };
@@ -1,3 +1,5 @@
1
+ export declare const PORTAL_STATUS_GROUPS: Record<string, string[]>;
2
+ export declare const PORTAL_DISPLAY_STATUSES: string[];
1
3
  export declare const filterNamesMap: {
2
4
  readonly case_status: any;
3
5
  readonly case_severity: any;
@@ -16,7 +18,8 @@ export declare const filterNamesMap: {
16
18
  readonly case_createdby_sso_username: any;
17
19
  readonly case_contact_sso_username: any;
18
20
  readonly case_type: any;
19
- readonly case_private: any;
21
+ readonly case_alternate_id: any;
22
+ readonly case_openshift_cluster_id: any;
20
23
  readonly usernameFilterTitle: any;
21
24
  };
22
25
  export declare const UpdatedCaseDataEvent = "PCM-Next > case-list-data-background-refresh";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;CA0D1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,iDAAiD,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAazD,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAAoC,CAAC;AAIzE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;CA6D1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,iDAAiD,CAAC"}
@@ -1,5 +1,20 @@
1
1
  import i18n from 'i18next';
2
2
  import { SolrKeys } from '../enums/filters';
3
+ export const PORTAL_STATUS_GROUPS = {
4
+ 'In Progress': [
5
+ 'New',
6
+ 'In Progress',
7
+ 'Needs New Owner',
8
+ 'Waiting on Collab',
9
+ 'Waiting on Engineering',
10
+ 'Waiting on Sales',
11
+ 'Waiting on 3rd Party Vendor',
12
+ 'Waiting on Red Hat',
13
+ ],
14
+ 'Waiting on Customer': ['Waiting on Customer Action Required', 'Waiting on Customer Solution Delivered'],
15
+ Closed: ['Closed'],
16
+ };
17
+ export const PORTAL_DISPLAY_STATUSES = Object.keys(PORTAL_STATUS_GROUPS);
3
18
  // used for adding title text for different solr fields
4
19
  // test
5
20
  export const filterNamesMap = {
@@ -54,8 +69,11 @@ export const filterNamesMap = {
54
69
  get [SolrKeys.type]() {
55
70
  return i18n.t('Support type');
56
71
  },
57
- get [SolrKeys.isPrivate]() {
58
- return i18n.t('Private');
72
+ get [SolrKeys.alternateId]() {
73
+ return i18n.t('Personal reference number');
74
+ },
75
+ get [SolrKeys.openshiftClusterId]() {
76
+ return i18n.t('Cluster ID');
59
77
  },
60
78
  get usernameFilterTitle() {
61
79
  return i18n.t('Username');
@@ -319,7 +319,7 @@ export const mockSolrResponse = {
319
319
  'dfisher dummy test',
320
320
  0,
321
321
  ],
322
- case_severity: ['1 (Urgent)', 2335, '2 (High)', 158, '3 (Normal)', 5984, '4 (Low)', 9338],
322
+ case_severity: ['1 (Urgent)', 2335, '2 (High)', 158, '3 (Medium)', 5984, '4 (Low)', 9338],
323
323
  case_status: ['Closed', 6348, 'Waiting on Customer', 8, 'Waiting on Red Hat', 11459],
324
324
  },
325
325
  facet_ranges: {},
@@ -0,0 +1,4 @@
1
+ export declare function expandStatusGroupsToApiValues(selectedStatuses: string[]): string[];
2
+ export declare function mapSfdcStatusToPortalStatus(sfdcStatus: string): string;
3
+ export declare function resolvePortalStatusToApiValue(portalStatus: string, currentApiStatus?: string | null): string;
4
+ //# sourceMappingURL=statusUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statusUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/statusUtils.ts"],"names":[],"mappings":"AAEA,wBAAgB,6BAA6B,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAWlF;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAOtE;AAED,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAgB5G"}
@@ -0,0 +1,36 @@
1
+ import { PORTAL_STATUS_GROUPS } from './constants';
2
+ export function expandStatusGroupsToApiValues(selectedStatuses) {
3
+ const expanded = [];
4
+ selectedStatuses.forEach((status) => {
5
+ const group = PORTAL_STATUS_GROUPS[status];
6
+ if (group) {
7
+ expanded.push(...group);
8
+ }
9
+ else {
10
+ expanded.push(status);
11
+ }
12
+ });
13
+ return expanded;
14
+ }
15
+ export function mapSfdcStatusToPortalStatus(sfdcStatus) {
16
+ for (const [portalStatus, sfdcStatuses] of Object.entries(PORTAL_STATUS_GROUPS)) {
17
+ if (sfdcStatuses.includes(sfdcStatus)) {
18
+ return portalStatus;
19
+ }
20
+ }
21
+ return sfdcStatus;
22
+ }
23
+ export function resolvePortalStatusToApiValue(portalStatus, currentApiStatus) {
24
+ const group = PORTAL_STATUS_GROUPS[portalStatus];
25
+ if (!group) {
26
+ return portalStatus;
27
+ }
28
+ const currentPortalStatus = currentApiStatus ? mapSfdcStatusToPortalStatus(currentApiStatus) : null;
29
+ if (currentPortalStatus === portalStatus && currentApiStatus && group.includes(currentApiStatus)) {
30
+ return currentApiStatus;
31
+ }
32
+ if (portalStatus === 'In Progress') {
33
+ return 'In Progress';
34
+ }
35
+ return group[0];
36
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/cases",
3
- "version": "2.6.186",
3
+ "version": "2.6.187",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -22,7 +22,6 @@
22
22
  "lib/**/*"
23
23
  ],
24
24
  "peerDependencies": {
25
- "@cee-eng/hydrajs": "4.18.111",
26
25
  "@patternfly/patternfly": "6.2.1",
27
26
  "@patternfly/react-core": "6.2.1",
28
27
  "@patternfly/react-table": "6.2.1",
@@ -35,21 +34,22 @@
35
34
  "solr-query-builder": "1.0.1"
36
35
  },
37
36
  "dependencies": {
38
- "@cee-eng/hydrajs": "4.18.111",
37
+ "@cee-eng/hydrajs": "^4.18.113",
39
38
  "@patternfly/patternfly": "6.2.1",
40
39
  "@patternfly/react-core": "6.2.1",
41
40
  "@patternfly/react-table": "6.2.1",
42
- "@rh-support/components": "2.5.182",
43
- "@rh-support/react-context": "2.5.276",
41
+ "@rh-support/components": "2.5.183",
42
+ "@rh-support/react-context": "2.5.277",
44
43
  "@rh-support/types": "2.0.26",
45
- "@rh-support/user-permissions": "2.5.128",
46
- "@rh-support/utils": "2.5.92",
44
+ "@rh-support/user-permissions": "2.5.129",
45
+ "@rh-support/utils": "2.5.111",
47
46
  "localforage": "^1.10.0",
48
47
  "lodash": "^4.17.21",
49
48
  "pegjs": "^0.10.0",
50
49
  "react": "18.2.0",
51
50
  "react-dom": "18.2.0",
52
51
  "react-i18next": "15.6.0",
52
+ "react-intersection-observer": "^10.0.3",
53
53
  "react-router-dom": "^5.1.2",
54
54
  "solr-query-builder": "1.0.1"
55
55
  },
@@ -92,5 +92,5 @@
92
92
  "defaults and supports es6-module",
93
93
  "maintained node versions"
94
94
  ],
95
- "gitHead": "5a3a62786c13896575f6db3805b3a0dc0bd1299f"
95
+ "gitHead": "deb5936155a3b68fc98e231dde9819da0967876b"
96
96
  }