@rh-support/cases 2.6.233 → 2.6.236

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 (171) hide show
  1. package/lib/esm/components/case/NewCaseButton.js +1 -1
  2. package/lib/esm/components/case-list/CaseList.d.ts +7 -0
  3. package/lib/esm/components/case-list/CaseList.d.ts.map +1 -1
  4. package/lib/esm/components/case-list/CaseList.js +137 -374
  5. package/lib/esm/components/case-list/CaseListContext.d.ts.map +1 -1
  6. package/lib/esm/components/case-list/CaseListContext.js +2 -5
  7. package/lib/esm/components/case-list/CaseListFilterContext.d.ts.map +1 -1
  8. package/lib/esm/components/case-list/CaseListFilterContext.js +1 -2
  9. package/lib/esm/components/case-list/CaseListFilterHelpers.d.ts +2 -3
  10. package/lib/esm/components/case-list/CaseListFilterHelpers.d.ts.map +1 -1
  11. package/lib/esm/components/case-list/CaseListFilterHelpers.js +6 -19
  12. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts +4 -36
  13. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts.map +1 -1
  14. package/lib/esm/components/case-list/CaseListFilterReducer.js +12 -6
  15. package/lib/esm/components/case-list/CaseListReducer.d.ts +10 -22
  16. package/lib/esm/components/case-list/CaseListReducer.d.ts.map +1 -1
  17. package/lib/esm/components/case-list/CaseListReducer.js +7 -25
  18. package/lib/esm/components/case-list/case-list-filters/AccountsFilter.d.ts.map +1 -1
  19. package/lib/esm/components/case-list/case-list-filters/AccountsFilter.js +11 -18
  20. package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.d.ts.map +1 -1
  21. package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.js +4 -20
  22. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts +7 -1
  23. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts.map +1 -1
  24. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.js +16 -12
  25. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts +5 -2
  26. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts.map +1 -1
  27. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.js +13 -14
  28. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilter.d.ts.map +1 -1
  29. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilter.js +14 -21
  30. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilterChip.d.ts.map +1 -1
  31. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilterChip.js +0 -3
  32. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.d.ts +1 -11
  33. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.d.ts.map +1 -1
  34. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.js +70 -90
  35. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts +3 -1
  36. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts.map +1 -1
  37. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.js +2 -2
  38. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts +4 -5
  39. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts.map +1 -1
  40. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.js +54 -15
  41. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts +3 -0
  42. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts.map +1 -1
  43. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.js +44 -18
  44. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts +3 -0
  45. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts.map +1 -1
  46. package/lib/esm/components/case-list/case-list-filters/StatusFilter.js +49 -23
  47. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts +3 -1
  48. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts.map +1 -1
  49. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.js +59 -60
  50. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts +3 -10
  51. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts.map +1 -1
  52. package/lib/esm/components/case-list/case-list-table/CaseListTable.js +84 -98
  53. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts +5 -0
  54. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts.map +1 -1
  55. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.js +70 -51
  56. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.d.ts.map +1 -1
  57. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.js +15 -5
  58. package/lib/esm/components/case-list/case-list-table/SeverityLabel.js +1 -1
  59. package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.d.ts.map +1 -1
  60. package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.js +3 -2
  61. package/lib/esm/components/case-list/case-list-table/table-column-selector/TableColumnSelector.d.ts.map +1 -1
  62. package/lib/esm/components/case-list/case-list-table/table-column-selector/TableColumnSelector.js +0 -1
  63. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.d.ts.map +1 -1
  64. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.js +2 -15
  65. package/lib/esm/components/case-list/case-search/CaseSearch.d.ts.map +1 -1
  66. package/lib/esm/components/case-list/case-search/CaseSearch.js +24 -55
  67. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.d.ts.map +1 -1
  68. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +1 -2
  69. package/lib/esm/css/caseList.css +23 -188
  70. package/lib/esm/css/caseSearch.css +0 -114
  71. package/lib/esm/enums/case.d.ts +5 -13
  72. package/lib/esm/enums/case.d.ts.map +1 -1
  73. package/lib/esm/enums/case.js +3 -23
  74. package/lib/esm/enums/caseSearch.d.ts +0 -3
  75. package/lib/esm/enums/caseSearch.d.ts.map +1 -1
  76. package/lib/esm/enums/caseSearch.js +1 -2
  77. package/lib/esm/enums/filters.d.ts +1 -5
  78. package/lib/esm/enums/filters.d.ts.map +1 -1
  79. package/lib/esm/enums/filters.js +0 -4
  80. package/lib/esm/hooks/useCloseCase.d.ts.map +1 -1
  81. package/lib/esm/hooks/useCloseCase.js +21 -38
  82. package/lib/esm/hooks/useExportCaseListCSV.d.ts.map +1 -1
  83. package/lib/esm/hooks/useExportCaseListCSV.js +9 -1
  84. package/lib/esm/hooks/useFilterStateOnLoad.d.ts +1 -1
  85. package/lib/esm/hooks/useFilterStateOnLoad.d.ts.map +1 -1
  86. package/lib/esm/hooks/useFilterStateOnLoad.js +5 -7
  87. package/lib/esm/index.js +0 -1
  88. package/lib/esm/models/caseList.d.ts +0 -1
  89. package/lib/esm/models/caseList.d.ts.map +1 -1
  90. package/lib/esm/test-utils/mockData.d.ts +0 -1
  91. package/lib/esm/test-utils/mockData.d.ts.map +1 -1
  92. package/lib/esm/test-utils/mockData.js +1 -2
  93. package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
  94. package/lib/esm/utils/caseSearchUtils.js +2 -39
  95. package/lib/esm/utils/constants.d.ts +1 -5
  96. package/lib/esm/utils/constants.d.ts.map +1 -1
  97. package/lib/esm/utils/constants.js +2 -10
  98. package/lib/esm/utils/mockSolrResponse.js +1 -1
  99. package/package.json +8 -10
  100. package/lib/esm/components/case-list/case-list-filters/CaseLabelsFilter.d.ts +0 -3
  101. package/lib/esm/components/case-list/case-list-filters/CaseLabelsFilter.d.ts.map +0 -1
  102. package/lib/esm/components/case-list/case-list-filters/CaseLabelsFilter.js +0 -178
  103. package/lib/esm/components/case-list/case-list-table/ArchivedCaseLabel.d.ts +0 -3
  104. package/lib/esm/components/case-list/case-list-table/ArchivedCaseLabel.d.ts.map +0 -1
  105. package/lib/esm/components/case-list/case-list-table/ArchivedCaseLabel.js +0 -8
  106. package/lib/esm/components/case-list/case-list-table/CaseListLabelGroup.d.ts +0 -9
  107. package/lib/esm/components/case-list/case-list-table/CaseListLabelGroup.d.ts.map +0 -1
  108. package/lib/esm/components/case-list/case-list-table/CaseListLabelGroup.js +0 -105
  109. package/lib/esm/components/case-list/case-list-table/CaseListTableRow.d.ts +0 -33
  110. package/lib/esm/components/case-list/case-list-table/CaseListTableRow.d.ts.map +0 -1
  111. package/lib/esm/components/case-list/case-list-table/CaseListTableRow.js +0 -51
  112. package/lib/esm/components/case-list/case-list-table/CaseListTableSkeletonRow.d.ts +0 -9
  113. package/lib/esm/components/case-list/case-list-table/CaseListTableSkeletonRow.d.ts.map +0 -1
  114. package/lib/esm/components/case-list/case-list-table/CaseListTableSkeletonRow.js +0 -10
  115. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts +0 -8
  116. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts.map +0 -1
  117. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.js +0 -8
  118. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts +0 -10
  119. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts.map +0 -1
  120. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.js +0 -29
  121. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts +0 -10
  122. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts.map +0 -1
  123. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.js +0 -16
  124. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts +0 -9
  125. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts.map +0 -1
  126. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.js +0 -21
  127. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts +0 -12
  128. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts.map +0 -1
  129. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.js +0 -31
  130. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts +0 -10
  131. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts.map +0 -1
  132. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.js +0 -10
  133. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts +0 -10
  134. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts.map +0 -1
  135. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.js +0 -92
  136. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts +0 -9
  137. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts.map +0 -1
  138. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.js +0 -20
  139. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts +0 -9
  140. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts.map +0 -1
  141. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.js +0 -28
  142. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts +0 -9
  143. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts.map +0 -1
  144. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.js +0 -241
  145. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts +0 -11
  146. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts.map +0 -1
  147. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.js +0 -23
  148. package/lib/esm/hooks/useCaseLabels.d.ts +0 -14
  149. package/lib/esm/hooks/useCaseLabels.d.ts.map +0 -1
  150. package/lib/esm/hooks/useCaseLabels.js +0 -50
  151. package/lib/esm/utils/advanceSearchFormMapper.d.ts +0 -11
  152. package/lib/esm/utils/advanceSearchFormMapper.d.ts.map +0 -1
  153. package/lib/esm/utils/advanceSearchFormMapper.js +0 -71
  154. package/lib/esm/utils/advanceSearchUtils.d.ts +0 -24
  155. package/lib/esm/utils/advanceSearchUtils.d.ts.map +0 -1
  156. package/lib/esm/utils/advanceSearchUtils.js +0 -150
  157. package/lib/esm/utils/caseGroupDefaultFilterUtils.d.ts +0 -12
  158. package/lib/esm/utils/caseGroupDefaultFilterUtils.d.ts.map +0 -1
  159. package/lib/esm/utils/caseGroupDefaultFilterUtils.js +0 -34
  160. package/lib/esm/utils/caseGroupDefaultUtils.d.ts +0 -10
  161. package/lib/esm/utils/caseGroupDefaultUtils.d.ts.map +0 -1
  162. package/lib/esm/utils/caseGroupDefaultUtils.js +0 -20
  163. package/lib/esm/utils/caseListGraphQLUtils.d.ts +0 -28
  164. package/lib/esm/utils/caseListGraphQLUtils.d.ts.map +0 -1
  165. package/lib/esm/utils/caseListGraphQLUtils.js +0 -304
  166. package/lib/esm/utils/caseListMapper.d.ts +0 -6
  167. package/lib/esm/utils/caseListMapper.d.ts.map +0 -1
  168. package/lib/esm/utils/caseListMapper.js +0 -47
  169. package/lib/esm/utils/caseListVariablesBuilder.d.ts +0 -17
  170. package/lib/esm/utils/caseListVariablesBuilder.d.ts.map +0 -1
  171. package/lib/esm/utils/caseListVariablesBuilder.js +0 -535
@@ -328,7 +328,6 @@ function createURLQueryFromFilterState(filterState) {
328
328
  return finalQuery;
329
329
  }
330
330
  function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize, currentPage, searchType = CaseSearchQueryType.BASIC) {
331
- var _a;
332
331
  const { paginationInfo: defaultPaginationInfo, sortInfo: defaultSortInfo, filterInfo: defaultFilterInfo, filterQueryInfo: defaultFilterQueryInfo, } = initialCaseFilterState;
333
332
  const [filters = '', sortQuery] = (urlQuery || '').split(/orderBy/i);
334
333
  const paginationInfoFromUrl = {
@@ -342,7 +341,7 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
342
341
  sortInfo = { column, direction: direction };
343
342
  }
344
343
  const filterInfo = {};
345
- const _b = parseSolrQuery(filters), { keyword: queryString = [''] } = _b, restFilters = __rest(_b, ["keyword"]);
344
+ const _a = parseSolrQuery(filters), { keyword: queryString = [''] } = _a, restFilters = __rest(_a, ["keyword"]);
346
345
  const filterQueryInfo = merge({}, defaultFilterQueryInfo, {
347
346
  queryString: queryString[0].replace(/\\"/g, '"'),
348
347
  type: searchType,
@@ -359,9 +358,6 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
359
358
  }
360
359
  }
361
360
  });
362
- if ((_a = filterInfo[SolrPivotKeys.product_version]) === null || _a === void 0 ? void 0 : _a.length) {
363
- enrichProductFilterWithIds(filterInfo[SolrPivotKeys.product_version], globalMetadataState);
364
- }
365
361
  const parsedQuery = filterQueryInfo.type === CaseSearchQueryType.ADVANCED
366
362
  ? createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo, filterQueryInfo.queryString)
367
363
  : '';
@@ -375,7 +371,6 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
375
371
  }
376
372
  // advanced query
377
373
  function createFilterStateFromAdvancedQuery(queryString, globalMetadataState, currentFilterState, parsedQuery = '', type = CaseSearchQueryType.BASIC) {
378
- var _a;
379
374
  const filterObj = parseSolrQuery(queryString);
380
375
  const newFilterInfo = {};
381
376
  let advanceToBasicQuery = [];
@@ -428,9 +423,6 @@ function createFilterStateFromAdvancedQuery(queryString, globalMetadataState, cu
428
423
  }
429
424
  delete newFilterInfo[SolrKeys.version];
430
425
  }
431
- if ((_a = newFilterInfo[SolrPivotKeys.product_version]) === null || _a === void 0 ? void 0 : _a.length) {
432
- enrichProductFilterWithIds(newFilterInfo[SolrPivotKeys.product_version], globalMetadataState);
433
- }
434
426
  const filterState = Object.assign(Object.assign({}, currentFilterState), { filterQueryInfo: Object.assign(Object.assign({}, currentFilterState.filterQueryInfo), { queryString: advanceToBasicQuery.join(' AND '), parsedQuery,
435
427
  type }), filterInfo: Object.assign(Object.assign({}, initialCaseFilterState.filterInfo), newFilterInfo) });
436
428
  return filterState;
@@ -454,18 +446,9 @@ function getValidValues(solrFieldName, itemValues = [], globalMetadataState) {
454
446
  return acc;
455
447
  }, {});
456
448
  itemValues.forEach((item) => {
457
- if (caseGroupsMap[item]) {
458
- mappedValues.push({ key: item, value: caseGroupsMap[item] });
459
- }
460
- else if (item && /^\d+$/.test(item)) {
461
- console.warn(`[CaseSearch] Ignoring stale numeric group filter "${item}" from URL/saved search — group IDs are now Salesforce record IDs`);
462
- }
449
+ caseGroupsMap[item] && mappedValues.push({ key: item, value: caseGroupsMap[item] });
463
450
  });
464
451
  }
465
- else if (solrFieldName === SolrKeys.caseLabel) {
466
- // Label names are resolved later by CaseLabelsFilter once account labels load
467
- mappedValues = itemValues.map((item) => ({ key: item, value: item }));
468
- }
469
452
  else if (solrFieldName === SolrKeys.accountNumber) {
470
453
  // when we go live with grouped bookmark, bookmarkedAccounts needs to be removed
471
454
  let bookmarkedAccountsMap = (((_b = globalMetadataState.bookmarkedAccounts) === null || _b === void 0 ? void 0 : _b.data) || []).reduce((acc, { accountNumber, name }) => {
@@ -517,9 +500,6 @@ function getValidValuesAdvancedSearch(solrFieldName, itemValues = [], globalMeta
517
500
  caseGroupsMap[item] && mappedValues.push({ key: caseGroupsMap[item], value: item });
518
501
  });
519
502
  }
520
- else if (solrFieldName === SolrKeys.caseLabel) {
521
- mappedValues = itemValues.map((item) => ({ key: item, value: item }));
522
- }
523
503
  else if (solrFieldName === SolrKeys.accountNumber) {
524
504
  let bookmarkedAccountsMap = (((_b = globalMetadataState.bookmarkedAccounts) === null || _b === void 0 ? void 0 : _b.data) || []).reduce((acc, { accountNumber, name }) => {
525
505
  acc[accountNumber] = getLabel(accountNumber, name);
@@ -576,21 +556,4 @@ function generateProductVersionPivotValue(values) {
576
556
  };
577
557
  });
578
558
  }
579
- /**
580
- * Enriches product filter objects (from URL) with their parent Product2 IDs
581
- * by matching product names against the allProducts metadata loaded at startup.
582
- * This allows buildProductFilter to use ParentProduct__c when version IDs aren't yet resolved.
583
- */
584
- function enrichProductFilterWithIds(products, globalMetadataState) {
585
- var _a, _b;
586
- 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) || [];
587
- products.forEach((prod) => {
588
- if (prod.productId)
589
- return;
590
- const matched = allProductsList.find((p) => p.name === prod.value || p.product === prod.value);
591
- if (matched === null || matched === void 0 ? void 0 : matched.productId) {
592
- prod.productId = matched.productId;
593
- }
594
- });
595
- }
596
559
  export { createSolrQueryFromFilterState, createUserFriendlyQueryFromFilterState, createUserFriendlyQueryFromFilterStateAdvancedSearch, createQueryForCSVDownload, createSFDCQueryFromFilterState, mapSFDCCaseListToSolrCaseList, createURLQueryFromFilterState, createFilterStateFromUrlQuery, createAdvancedSearchQueryFromFilterState, createFilterStateFromAdvancedQuery, };
@@ -1,9 +1,7 @@
1
- export { PORTAL_STATUS_GROUPS, PORTAL_DISPLAY_STATUSES, PORTAL_USER_SELECTABLE_STATUSES, PORTAL_OPEN_DISPLAY_STATUSES, } from '@rh-support/utils';
2
1
  export declare const filterNamesMap: {
3
2
  readonly case_status: any;
4
3
  readonly case_severity: any;
5
4
  readonly case_folderNumber: any;
6
- readonly case_label: any;
7
5
  readonly case_accountNumber: any;
8
6
  readonly case_summary: any;
9
7
  readonly case_customer_escalation: any;
@@ -18,9 +16,7 @@ export declare const filterNamesMap: {
18
16
  readonly case_createdby_sso_username: any;
19
17
  readonly case_contact_sso_username: any;
20
18
  readonly case_type: any;
21
- readonly case_alternate_id: any;
22
- readonly case_openshift_cluster_id: any;
19
+ readonly case_private: any;
23
20
  readonly usernameFilterTitle: any;
24
21
  };
25
- export declare const UpdatedCaseDataEvent = "PCM-Next > case-list-data-background-refresh";
26
22
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,oBAAoB,EACpB,uBAAuB,EACvB,+BAA+B,EAC/B,4BAA4B,GAC/B,MAAM,mBAAmB,CAAC;AAI3B,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;CAgE1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,iDAAiD,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;CA0D1B,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import i18n from 'i18next';
2
2
  import { SolrKeys } from '../enums/filters';
3
- export { PORTAL_STATUS_GROUPS, PORTAL_DISPLAY_STATUSES, PORTAL_USER_SELECTABLE_STATUSES, PORTAL_OPEN_DISPLAY_STATUSES, } from '@rh-support/utils';
4
3
  // used for adding title text for different solr fields
5
4
  // test
6
5
  export const filterNamesMap = {
@@ -13,9 +12,6 @@ export const filterNamesMap = {
13
12
  get [SolrKeys.group]() {
14
13
  return i18n.t('Groups');
15
14
  },
16
- get [SolrKeys.caseLabel]() {
17
- return i18n.t('Case labels');
18
- },
19
15
  get [SolrKeys.accountNumber]() {
20
16
  return i18n.t('Bookmarks');
21
17
  },
@@ -58,14 +54,10 @@ export const filterNamesMap = {
58
54
  get [SolrKeys.type]() {
59
55
  return i18n.t('Support type');
60
56
  },
61
- get [SolrKeys.alternateId]() {
62
- return i18n.t('Personal reference number');
63
- },
64
- get [SolrKeys.openshiftClusterId]() {
65
- return i18n.t('Cluster ID');
57
+ get [SolrKeys.isPrivate]() {
58
+ return i18n.t('Private');
66
59
  },
67
60
  get usernameFilterTitle() {
68
61
  return i18n.t('Username');
69
62
  },
70
63
  };
71
- export const UpdatedCaseDataEvent = 'PCM-Next > case-list-data-background-refresh';
@@ -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 (Medium)', 5984, '4 (Low)', 9338],
322
+ case_severity: ['1 (Urgent)', 2335, '2 (High)', 158, '3 (Normal)', 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: {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/cases",
3
- "version": "2.6.233",
3
+ "version": "2.6.236",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -22,6 +22,7 @@
22
22
  "lib/**/*"
23
23
  ],
24
24
  "peerDependencies": {
25
+ "@cee-eng/hydrajs": "4.18.111",
25
26
  "@patternfly/patternfly": "6.2.1",
26
27
  "@patternfly/react-core": "6.2.1",
27
28
  "@patternfly/react-table": "6.2.1",
@@ -34,28 +35,25 @@
34
35
  "solr-query-builder": "1.0.1"
35
36
  },
36
37
  "dependencies": {
37
- "@cee-eng/hydrajs": "^4.18.114",
38
+ "@cee-eng/hydrajs": "4.18.111",
38
39
  "@patternfly/patternfly": "6.2.1",
39
40
  "@patternfly/react-core": "6.2.1",
40
41
  "@patternfly/react-table": "6.2.1",
41
- "@rh-support/components": "2.5.230",
42
- "@rh-support/react-context": "2.5.325",
42
+ "@rh-support/components": "2.5.232",
43
+ "@rh-support/react-context": "2.5.328",
43
44
  "@rh-support/types": "2.0.26",
44
- "@rh-support/user-permissions": "2.5.178",
45
- "@rh-support/utils": "2.5.157",
45
+ "@rh-support/user-permissions": "2.5.171",
46
+ "@rh-support/utils": "2.5.151",
46
47
  "localforage": "^1.10.0",
47
48
  "lodash": "^4.17.21",
48
49
  "pegjs": "^0.10.0",
49
50
  "react": "18.2.0",
50
51
  "react-dom": "18.2.0",
51
52
  "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
  },
56
56
  "devDependencies": {
57
- "@patternfly/react-styles": "^6.2.1",
58
- "@patternfly/react-tokens": "^6.2.1",
59
57
  "@testing-library/jest-dom": "^6.2.0",
60
58
  "@testing-library/react": "^14.1.2",
61
59
  "@testing-library/user-event": "^14.5.1",
@@ -94,5 +92,5 @@
94
92
  "defaults and supports es6-module",
95
93
  "maintained node versions"
96
94
  ],
97
- "gitHead": "78790ed8b35b8acbc7a3a4a182d212499a0cd181"
95
+ "gitHead": "326a322d647909215fa3f5b8758d70b70eb8641e"
98
96
  }
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare function CaseLabelsFilter(): React.JSX.Element;
3
- //# sourceMappingURL=CaseLabelsFilter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CaseLabelsFilter.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-filters/CaseLabelsFilter.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAYhF,wBAAgB,gBAAgB,sBAgQ/B"}
@@ -1,178 +0,0 @@
1
- import { MenuFooter, MenuToggle, Select, SelectList, SelectOption, TextInputGroup, TextInputGroupMain, } from '@patternfly/react-core';
2
- import { GlobalMetadataStateContext } from '@rh-support/react-context';
3
- import { ability, resourceActions, resources } from '@rh-support/user-permissions';
4
- import { getDropdownBtnPlaceholder } from '@rh-support/utils';
5
- import isEmpty from 'lodash/isEmpty';
6
- import isEqual from 'lodash/isEqual';
7
- import isUndefined from 'lodash/isUndefined';
8
- import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
9
- import { Trans, useTranslation } from 'react-i18next';
10
- import { Link } from 'react-router-dom';
11
- import { SolrKeys } from '../../../enums/filters';
12
- import { useCaseLabels } from '../../../hooks/useCaseLabels';
13
- import { filterNamesMap } from '../../../utils/constants';
14
- import { CaseListFilterDispatchContext, CaseListFilterStateContext } from '../CaseListFilterContext';
15
- import { updateFilter } from '../CaseListFilterReducer';
16
- const EMPTY_LABELS = [];
17
- export function CaseLabelsFilter() {
18
- var _a, _b;
19
- const { t } = useTranslation();
20
- const { filterInfo } = useContext(CaseListFilterStateContext);
21
- const dispatch = useContext(CaseListFilterDispatchContext);
22
- const { globalMetadataState: { loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
23
- const accountId = (_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.salesforceAccountId;
24
- const { labels, loading: isLoading } = useCaseLabels(accountId);
25
- const selectedLabels = (_b = filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrKeys.caseLabel]) !== null && _b !== void 0 ? _b : EMPTY_LABELS;
26
- const [inputValue, setInputValue] = useState('');
27
- const [focusedItemIndex, setFocusedItemIndex] = useState(null);
28
- const [activeItem, setActiveItem] = useState(null);
29
- const [isOpen, setIsOpen] = useState(false);
30
- const [selectedItems, setSelectedItems] = useState({});
31
- const textInputRef = useRef();
32
- const list = useMemo(() => labels.map((label) => ({ value: label.name, key: label.id })), [labels]);
33
- const [selectOptions, setSelectOptions] = useState(list);
34
- const canViewManageTab = ability.can(resourceActions.READ, resources.MANAGE);
35
- const applyLabelSelection = (updatedFilterValues) => {
36
- updateFilter(dispatch, {
37
- filterKey: SolrKeys.caseLabel,
38
- values: updatedFilterValues,
39
- });
40
- };
41
- const isOptionSelected = (option) => Boolean((option.value && selectedItems[String(option.value)]) || (option.key && selectedItems[String(option.key)]));
42
- const onToggleClick = () => {
43
- setIsOpen(!isOpen);
44
- };
45
- const onSelect = (option) => {
46
- const selectedOption = typeof option === 'string' ? list.find((item) => item.value === option || item.key === option) : option;
47
- const optionValue = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value;
48
- const optionKey = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.key;
49
- if (!optionValue || optionValue === 'no results' || !optionKey) {
50
- return;
51
- }
52
- const currentlySelected = selectedLabels.some((label) => label.key === optionKey);
53
- const updatedFilterValues = currentlySelected
54
- ? selectedLabels.filter((label) => label.key !== optionKey)
55
- : [
56
- ...selectedLabels.filter((label) => label.key !== optionKey),
57
- { key: String(optionKey), value: String(optionValue) },
58
- ];
59
- applyLabelSelection(updatedFilterValues);
60
- };
61
- const handleMenuArrowKeys = (key) => {
62
- if (!isOpen || !list.length) {
63
- return;
64
- }
65
- let indexToFocus = 0;
66
- if (key === 'ArrowUp') {
67
- if (focusedItemIndex === null || focusedItemIndex === 0) {
68
- indexToFocus = list.length - 1;
69
- }
70
- else {
71
- indexToFocus = focusedItemIndex - 1;
72
- }
73
- }
74
- if (key === 'ArrowDown') {
75
- if (focusedItemIndex === null || focusedItemIndex === list.length - 1) {
76
- indexToFocus = 0;
77
- }
78
- else {
79
- indexToFocus = focusedItemIndex + 1;
80
- }
81
- }
82
- setFocusedItemIndex(indexToFocus);
83
- const focusedItem = list[indexToFocus];
84
- if (focusedItem === null || focusedItem === void 0 ? void 0 : focusedItem.value) {
85
- setActiveItem(`select-multi-typeahead-checkbox-${String(focusedItem.value).replace(' ', '-')}`);
86
- }
87
- };
88
- const onInputKeyDown = (event) => {
89
- const focusedItem = focusedItemIndex !== null ? list[focusedItemIndex] : list[0];
90
- switch (event.key) {
91
- case 'Enter':
92
- if (!isOpen) {
93
- setIsOpen((prevIsOpen) => !prevIsOpen);
94
- }
95
- else if (isOpen && (focusedItem === null || focusedItem === void 0 ? void 0 : focusedItem.value) !== 'no results') {
96
- onSelect(focusedItem);
97
- }
98
- break;
99
- case 'Tab':
100
- case 'Escape':
101
- setIsOpen(false);
102
- setActiveItem(null);
103
- break;
104
- case 'ArrowUp':
105
- case 'ArrowDown':
106
- event.preventDefault();
107
- handleMenuArrowKeys(event.key);
108
- break;
109
- }
110
- };
111
- const onTextInputChange = (_event, value) => {
112
- setInputValue(value);
113
- };
114
- const placeholder = getDropdownBtnPlaceholder(isLoading ? t('Loading...') : t('Select a case label'), selectedLabels.map((label) => label.value), '', labels.length || 0, t('All selected'));
115
- const toggle = (toggleRef) => (React.createElement(MenuToggle, { variant: "typeahead", onClick: onToggleClick, innerRef: toggleRef, isExpanded: isOpen, isFullWidth: true },
116
- React.createElement(TextInputGroup, { isPlain: true },
117
- React.createElement(TextInputGroupMain, Object.assign({ value: inputValue, onClick: onToggleClick, onChange: onTextInputChange, onKeyDown: onInputKeyDown, id: "case-list-case-label-filter-input", autoComplete: "off", innerRef: textInputRef, placeholder: placeholder }, (activeItem && { 'aria-activedescendant': activeItem }), { role: "combobox", isExpanded: isOpen, "aria-controls": "case-list-case-label-filter-listbox" })))));
118
- const dropdownOptions = useMemo(() => {
119
- return (!isEmpty(selectOptions) ? selectOptions : list).map((option, index) => !isUndefined(option.value) && (React.createElement(SelectOption, { key: option.key, value: option, hasCheckbox: true, isSelected: isOptionSelected(option), isFocused: focusedItemIndex !== null && focusedItemIndex === index, id: `select-multi-typeahead-${String(option.value).replace(' ', '-')}` }, option.value)));
120
- // eslint-disable-next-line react-hooks/exhaustive-deps
121
- }, [selectedItems, selectedLabels, labels, selectOptions, focusedItemIndex]);
122
- useEffect(() => {
123
- let newSelectOptions = list;
124
- if (inputValue) {
125
- const normalizedInput = inputValue.toLowerCase();
126
- newSelectOptions = list.filter((option) => String(option === null || option === void 0 ? void 0 : option.value).toLowerCase().includes(normalizedInput));
127
- if (!newSelectOptions.length) {
128
- newSelectOptions = [{ isDisabled: false, children: `No results found` }];
129
- }
130
- if (!isOpen) {
131
- setIsOpen(true);
132
- }
133
- }
134
- setSelectOptions(newSelectOptions);
135
- setFocusedItemIndex(null);
136
- setActiveItem(null);
137
- // eslint-disable-next-line react-hooks/exhaustive-deps
138
- }, [inputValue, list]);
139
- useEffect(() => {
140
- if (isEmpty(selectedLabels)) {
141
- setSelectedItems({});
142
- return;
143
- }
144
- const nextSelectedItems = selectedLabels.reduce((selection, label) => {
145
- if (label === null || label === void 0 ? void 0 : label.value) {
146
- selection[label.value] = true;
147
- }
148
- if (label === null || label === void 0 ? void 0 : label.key) {
149
- selection[label.key] = true;
150
- }
151
- return selection;
152
- }, {});
153
- setSelectedItems(nextSelectedItems);
154
- }, [selectedLabels]);
155
- // Resolve deep-linked label IDs to display names once account labels are loaded
156
- useEffect(() => {
157
- if (!labels.length || !selectedLabels.length) {
158
- return;
159
- }
160
- const resolved = selectedLabels.map((selected) => {
161
- const match = labels.find((label) => label.id === selected.key || label.name === selected.value);
162
- return match ? { key: match.id, value: match.name } : selected;
163
- });
164
- if (!isEqual(resolved, selectedLabels)) {
165
- applyLabelSelection(resolved);
166
- }
167
- // eslint-disable-next-line react-hooks/exhaustive-deps
168
- }, [labels, selectedLabels]);
169
- return (React.createElement("div", { className: "case-labels-filter group-filter", "data-testid": "case-labels-filter" },
170
- React.createElement("label", { htmlFor: "case-list-case-label-filter", className: "pf-v6-u-mb-sm group-filter-label" }, t(filterNamesMap[SolrKeys.caseLabel])),
171
- React.createElement("div", { className: "pf-v6-c-select" },
172
- React.createElement(Select, { shouldFocusToggleOnSelect: true, shouldPreventScrollOnItemFocus: true, "data-tracking-id": "case-labels-filter", id: "case-list-case-label-filter", title: t(filterNamesMap[SolrKeys.caseLabel]), isOpen: isOpen, selected: selectedItems, onSelect: (_e, v) => onSelect(v), onOpenChange: (nextOpen) => setIsOpen(nextOpen), popperProps: { direction: 'down', enableFlip: false }, toggle: toggle, isScrollable: true },
173
- React.createElement(SelectList, null,
174
- dropdownOptions,
175
- canViewManageTab && (React.createElement(MenuFooter, { className: "group-filter-manage-groups-footer" },
176
- React.createElement(Link, { className: "cta cta-link", to: "/manage/case-labels" },
177
- React.createElement(Trans, null, "Manage case labels")))))))));
178
- }
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export default function ArchivedCaseLabel(): React.JSX.Element;
3
- //# sourceMappingURL=ArchivedCaseLabel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArchivedCaseLabel.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/ArchivedCaseLabel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,OAAO,UAAU,iBAAiB,sBAYxC"}
@@ -1,8 +0,0 @@
1
- import { Label } from '@patternfly/react-core';
2
- import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
3
- import React from 'react';
4
- import { Trans } from 'react-i18next';
5
- export default function ArchivedCaseLabel() {
6
- return (React.createElement(Label, { className: "pf-v6-u-mt-xs archived-case-label", variant: "outline", color: "purple", "data-testid": "archived-case-label", icon: React.createElement(InfoCircleIcon, null) },
7
- React.createElement(Trans, null, "Archived")));
8
- }
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- interface IProps {
3
- labels: string[];
4
- }
5
- export declare function truncateCollapsedLabelName(labelName: string): string;
6
- export declare function getVisibleLabelCount(itemWidths: number[], availableWidth: number, overflowWidth: number, gap: number): number;
7
- export default function CaseListLabelGroup({ labels }: IProps): React.JSX.Element;
8
- export {};
9
- //# sourceMappingURL=CaseListLabelGroup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CaseListLabelGroup.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/CaseListLabelGroup.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4C,MAAM,OAAO,CAAC;AAGjE,UAAU,MAAM;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAWD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED,wBAAgB,oBAAoB,CAChC,UAAU,EAAE,MAAM,EAAE,EACpB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACZ,MAAM,CAuBR;AAED,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,qBAyH5D"}
@@ -1,105 +0,0 @@
1
- import { Label, LabelGroup, Popover, PopoverPosition } from '@patternfly/react-core';
2
- import React, { useLayoutEffect, useRef, useState } from 'react';
3
- import { useTranslation } from 'react-i18next';
4
- const COLLAPSED_LABEL_CHAR_LIMIT = 12;
5
- function getLabelGapPx(element) {
6
- const gap = getComputedStyle(element).getPropertyValue('--case-list-label-gap').trim();
7
- const parsedGap = Number.parseFloat(gap);
8
- return Number.isNaN(parsedGap) ? 0 : parsedGap;
9
- }
10
- export function truncateCollapsedLabelName(labelName) {
11
- if (labelName.length <= COLLAPSED_LABEL_CHAR_LIMIT) {
12
- return labelName;
13
- }
14
- return `${labelName.slice(0, COLLAPSED_LABEL_CHAR_LIMIT)}...`;
15
- }
16
- export function getVisibleLabelCount(itemWidths, availableWidth, overflowWidth, gap) {
17
- if (!itemWidths.length || availableWidth <= 0) {
18
- return 0;
19
- }
20
- let usedWidth = 0;
21
- let visibleCount = 0;
22
- for (let index = 0; index < itemWidths.length; index++) {
23
- const nextUsedWidth = usedWidth + (visibleCount > 0 ? gap : 0) + itemWidths[index];
24
- const remainingCount = itemWidths.length - (index + 1);
25
- const totalWidth = remainingCount > 0 ? nextUsedWidth + gap + overflowWidth : nextUsedWidth;
26
- if (totalWidth <= availableWidth) {
27
- usedWidth = nextUsedWidth;
28
- visibleCount = index + 1;
29
- continue;
30
- }
31
- return Math.max(1, visibleCount);
32
- }
33
- return visibleCount;
34
- }
35
- export default function CaseListLabelGroup({ labels }) {
36
- const { t } = useTranslation();
37
- const containerRef = useRef(null);
38
- const measureRef = useRef(null);
39
- const overflowMeasureRef = useRef(null);
40
- const lastMeasuredWidthRef = useRef(0);
41
- const [numVisible, setNumVisible] = useState(labels.length);
42
- useLayoutEffect(() => {
43
- const container = containerRef.current;
44
- const measureRow = measureRef.current;
45
- if (!container || !measureRow || !labels.length) {
46
- return;
47
- }
48
- const tableCell = container.closest('td');
49
- const updateVisibleCount = () => {
50
- var _a, _b, _c;
51
- const availableWidth = (_a = tableCell === null || tableCell === void 0 ? void 0 : tableCell.clientWidth) !== null && _a !== void 0 ? _a : container.clientWidth;
52
- if (availableWidth <= 0) {
53
- return;
54
- }
55
- const itemWidths = Array.from(measureRow.querySelectorAll('[data-measure-label]')).map((element) => element.offsetWidth);
56
- const overflowWidth = (_c = (_b = overflowMeasureRef.current) === null || _b === void 0 ? void 0 : _b.offsetWidth) !== null && _c !== void 0 ? _c : 32;
57
- const labelGapPx = getLabelGapPx(container);
58
- const nextVisible = getVisibleLabelCount(itemWidths, availableWidth, overflowWidth, labelGapPx);
59
- lastMeasuredWidthRef.current = availableWidth;
60
- setNumVisible((current) => (current === nextVisible ? current : nextVisible));
61
- };
62
- updateVisibleCount();
63
- if (typeof ResizeObserver === 'undefined') {
64
- return;
65
- }
66
- const resizeObserver = new ResizeObserver((entries) => {
67
- const entry = entries[0];
68
- if (!entry) {
69
- return;
70
- }
71
- const nextWidth = Math.round(entry.contentRect.width);
72
- if (nextWidth === lastMeasuredWidthRef.current) {
73
- return;
74
- }
75
- updateVisibleCount();
76
- });
77
- resizeObserver.observe(tableCell !== null && tableCell !== void 0 ? tableCell : container);
78
- return () => resizeObserver.disconnect();
79
- }, [labels]);
80
- const visibleLabels = labels.slice(0, numVisible);
81
- const hiddenLabels = labels.slice(numVisible);
82
- const remainingCount = hiddenLabels.length;
83
- return (React.createElement("div", { ref: containerRef, className: "case-list-label-cell" },
84
- React.createElement("div", { ref: measureRef, className: "case-list-label-cell__measure", "aria-hidden": "true" },
85
- labels.map((labelName) => (React.createElement("span", { key: labelName, "data-measure-label": true },
86
- React.createElement(Label, { variant: "outline" }, truncateCollapsedLabelName(labelName))))),
87
- React.createElement("span", { ref: overflowMeasureRef },
88
- React.createElement(Label, { variant: "outline" },
89
- "+",
90
- labels.length))),
91
- React.createElement("div", { className: "pf-v6-c-label-group case-list-label-group" },
92
- React.createElement("div", { className: "pf-v6-c-label-group__main" },
93
- React.createElement("ul", { className: "pf-v6-c-label-group__list", "aria-label": t('Case labels') },
94
- visibleLabels.map((labelName) => {
95
- const displayName = truncateCollapsedLabelName(labelName);
96
- return (React.createElement("li", { key: labelName, className: "pf-v6-c-label-group__list-item" },
97
- React.createElement(Label, { variant: "outline", title: displayName !== labelName ? labelName : undefined }, displayName)));
98
- }),
99
- remainingCount > 0 && (React.createElement("li", { className: "pf-v6-c-label-group__list-item" },
100
- React.createElement(Popover, { "aria-label": t('Additional case labels'), className: "case-list-label-popover-panel", position: PopoverPosition.topEnd, enableFlip: false, hasAutoWidth: true, maxWidth: "20rem", distance: 15, appendTo: () => document.body, bodyContent: React.createElement("div", { className: "case-list-label-popover" },
101
- React.createElement(LabelGroup, { numLabels: hiddenLabels.length, "aria-label": t('Case labels') }, hiddenLabels.map((labelName) => (React.createElement(Label, { key: labelName, variant: "outline" }, labelName))))) },
102
- React.createElement(Label, { variant: "overflow" },
103
- "+",
104
- remainingCount)))))))));
105
- }
@@ -1,33 +0,0 @@
1
- import React from 'react';
2
- export interface ICaseListTableRow {
3
- id: string;
4
- case_summary: string;
5
- case_number: string;
6
- case_customer_escalation: boolean;
7
- case_createdByName: string;
8
- case_lastModifiedByName: string;
9
- case_lastModifiedDate: string;
10
- case_severity: string;
11
- case_product: string[];
12
- case_version: string;
13
- case_type: string;
14
- case_status: string;
15
- case_createdDate: string;
16
- case_accountNumber: string;
17
- case_closedDate: string;
18
- case_alternate_id: string;
19
- case_folderName: string;
20
- case_contactName: string;
21
- case_label: string[];
22
- }
23
- interface IProps {
24
- row: ICaseListTableRow;
25
- rowIndex: number;
26
- isColumnVisible: (columnId: string) => boolean;
27
- isSelected: boolean;
28
- onRowClick: (event: React.MouseEvent, row: ICaseListTableRow) => void;
29
- onRowSelect: (event: React.FormEvent<HTMLInputElement>, caseNumber: string) => void;
30
- }
31
- export declare function CaseListTableRow({ row, rowIndex, isColumnVisible, isSelected, onRowClick, onRowSelect }: IProps): React.JSX.Element;
32
- export {};
33
- //# sourceMappingURL=CaseListTableRow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CaseListTableRow.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/CaseListTableRow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,UAAU,MAAM;IACZ,GAAG,EAAE,iBAAiB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACtE,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACvF;AAMD,wBAAgB,gBAAgB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,MAAM,qBA+E/G"}
@@ -1,51 +0,0 @@
1
- import { Td, Tr, Visibility } from '@patternfly/react-table';
2
- import { dtmTrackEventCaseStepEncountered, formatDate } from '@rh-support/utils';
3
- import React from 'react';
4
- import { Trans } from 'react-i18next';
5
- import { Link } from 'react-router-dom';
6
- import { CaseListColumnIds } from '../../../enums/case';
7
- import ArchivedCaseLabel from './ArchivedCaseLabel';
8
- import CaseListLabelGroup from './CaseListLabelGroup';
9
- import SeverityLabel from './SeverityLabel';
10
- function getColumnCellClass(columnId, isColumnVisible) {
11
- return isColumnVisible(columnId) ? '' : Visibility.hidden || '';
12
- }
13
- export function CaseListTableRow({ row, rowIndex, isColumnVisible, isSelected, onRowClick, onRowSelect }) {
14
- var _a;
15
- return (React.createElement(Tr, { onRowClick: (event) => event && onRowClick(event, row) },
16
- React.createElement(Td, { className: "pf-v6-u-pl-md", select: {
17
- rowIndex,
18
- onSelect: (event) => onRowSelect(event, row.case_number),
19
- isSelected,
20
- } }),
21
- React.createElement(Td, { dataLabel: "Case ID", id: row.case_number, scope: "row" },
22
- React.createElement("div", { className: "case-number-section" },
23
- React.createElement(Link, { to: `/case/${row.case_number}`, onClick: () => {
24
- var _a;
25
- return dtmTrackEventCaseStepEncountered('review', row.case_number, (_a = row.case_product) === null || _a === void 0 ? void 0 : _a[0], row.case_version);
26
- } },
27
- React.createElement("span", { className: "case-number" }, row.case_number)),
28
- row.case_customer_escalation ? (React.createElement("div", { className: "escalation-label" },
29
- React.createElement(Trans, null, "Escalated"))) : null,
30
- row.case_status === 'Archived' ? React.createElement(ArchivedCaseLabel, null) : null)),
31
- React.createElement(Td, { dataLabel: "Title" }, row.case_summary),
32
- React.createElement(Td, { className: getColumnCellClass('contactName', isColumnVisible), dataLabel: "Owner" }, row.case_contactName),
33
- React.createElement(Td, { className: getColumnCellClass('lastModifiedDate', isColumnVisible), dataLabel: "Modified by" },
34
- React.createElement("span", { className: "modified-name" }, row.case_lastModifiedByName),
35
- row.case_lastModifiedDate ? formatDate(row.case_lastModifiedDate) : ''),
36
- React.createElement(Td, { className: getColumnCellClass('severity', isColumnVisible), dataLabel: "Severity" },
37
- React.createElement(SeverityLabel, { sevValue: row.case_severity })),
38
- React.createElement(Td, { className: getColumnCellClass('status', isColumnVisible), dataLabel: "Status" }, row.case_status),
39
- React.createElement(Td, { className: getColumnCellClass('createdDate', isColumnVisible), dataLabel: "Created by" },
40
- React.createElement("span", { className: "created-name" }, row.case_createdByName),
41
- row.case_createdDate ? formatDate(row.case_createdDate) : ''),
42
- React.createElement(Td, { className: getColumnCellClass('product', isColumnVisible), dataLabel: "Product and Version" },
43
- row.case_product,
44
- React.createElement("span", { className: "pf-v6-u-display-block" }, row.case_version)),
45
- React.createElement(Td, { className: getColumnCellClass('accountNumber', isColumnVisible), dataLabel: "Account number" }, row.case_accountNumber),
46
- React.createElement(Td, { className: getColumnCellClass('alternateCaseId', isColumnVisible), "data-label": "Personal reference number" }, row.case_alternate_id || ''),
47
- React.createElement(Td, { className: getColumnCellClass('type', isColumnVisible), "data-label": "Support type" }, row.case_type),
48
- React.createElement(Td, { className: getColumnCellClass('closedDate', isColumnVisible), "data-label": "Closed date" }, row.case_closedDate ? formatDate(row.case_closedDate) : ''),
49
- React.createElement(Td, { className: getColumnCellClass('folderName', isColumnVisible), "data-label": "Group" }, row.case_folderName || ''),
50
- React.createElement(Td, { className: getColumnCellClass(CaseListColumnIds.caseLabel, isColumnVisible), dataLabel: "Case labels" }, ((_a = row.case_label) === null || _a === void 0 ? void 0 : _a.length) ? React.createElement(CaseListLabelGroup, { labels: row.case_label }) : null)));
51
- }