@rh-support/cases 2.6.235 → 2.7.11

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 (175) hide show
  1. package/lib/esm/components/case/NewCaseButton.js +1 -1
  2. package/lib/esm/components/case-list/CaseList.d.ts +0 -7
  3. package/lib/esm/components/case-list/CaseList.d.ts.map +1 -1
  4. package/lib/esm/components/case-list/CaseList.js +372 -137
  5. package/lib/esm/components/case-list/CaseListContext.d.ts.map +1 -1
  6. package/lib/esm/components/case-list/CaseListContext.js +5 -2
  7. package/lib/esm/components/case-list/CaseListFilterContext.d.ts.map +1 -1
  8. package/lib/esm/components/case-list/CaseListFilterContext.js +2 -1
  9. package/lib/esm/components/case-list/CaseListFilterHelpers.d.ts +3 -2
  10. package/lib/esm/components/case-list/CaseListFilterHelpers.d.ts.map +1 -1
  11. package/lib/esm/components/case-list/CaseListFilterHelpers.js +19 -6
  12. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts +36 -4
  13. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts.map +1 -1
  14. package/lib/esm/components/case-list/CaseListFilterReducer.js +6 -12
  15. package/lib/esm/components/case-list/CaseListReducer.d.ts +22 -10
  16. package/lib/esm/components/case-list/CaseListReducer.d.ts.map +1 -1
  17. package/lib/esm/components/case-list/CaseListReducer.js +25 -7
  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 +18 -11
  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 +20 -4
  22. package/lib/esm/components/case-list/case-list-filters/CaseLabelsFilter.d.ts +3 -0
  23. package/lib/esm/components/case-list/case-list-filters/CaseLabelsFilter.d.ts.map +1 -0
  24. package/lib/esm/components/case-list/case-list-filters/CaseLabelsFilter.js +178 -0
  25. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts +1 -7
  26. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts.map +1 -1
  27. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.js +12 -16
  28. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts +2 -5
  29. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts.map +1 -1
  30. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.js +14 -13
  31. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilter.d.ts.map +1 -1
  32. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilter.js +21 -14
  33. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilterChip.d.ts.map +1 -1
  34. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilterChip.js +3 -0
  35. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.d.ts +11 -1
  36. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.d.ts.map +1 -1
  37. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.js +90 -70
  38. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts +1 -3
  39. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts.map +1 -1
  40. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.js +2 -2
  41. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts +5 -4
  42. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts.map +1 -1
  43. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.js +15 -54
  44. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts +0 -3
  45. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts.map +1 -1
  46. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.js +18 -44
  47. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts +0 -3
  48. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts.map +1 -1
  49. package/lib/esm/components/case-list/case-list-filters/StatusFilter.js +23 -49
  50. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts +1 -3
  51. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts.map +1 -1
  52. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.js +60 -59
  53. package/lib/esm/components/case-list/case-list-table/ArchivedCaseLabel.d.ts +3 -0
  54. package/lib/esm/components/case-list/case-list-table/ArchivedCaseLabel.d.ts.map +1 -0
  55. package/lib/esm/components/case-list/case-list-table/ArchivedCaseLabel.js +8 -0
  56. package/lib/esm/components/case-list/case-list-table/CaseListLabelGroup.d.ts +9 -0
  57. package/lib/esm/components/case-list/case-list-table/CaseListLabelGroup.d.ts.map +1 -0
  58. package/lib/esm/components/case-list/case-list-table/CaseListLabelGroup.js +105 -0
  59. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts +10 -3
  60. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts.map +1 -1
  61. package/lib/esm/components/case-list/case-list-table/CaseListTable.js +98 -84
  62. package/lib/esm/components/case-list/case-list-table/CaseListTableRow.d.ts +33 -0
  63. package/lib/esm/components/case-list/case-list-table/CaseListTableRow.d.ts.map +1 -0
  64. package/lib/esm/components/case-list/case-list-table/CaseListTableRow.js +51 -0
  65. package/lib/esm/components/case-list/case-list-table/CaseListTableSkeletonRow.d.ts +9 -0
  66. package/lib/esm/components/case-list/case-list-table/CaseListTableSkeletonRow.d.ts.map +1 -0
  67. package/lib/esm/components/case-list/case-list-table/CaseListTableSkeletonRow.js +10 -0
  68. package/lib/esm/components/case-list/case-list-table/CloseCaseBtn.d.ts.map +1 -1
  69. package/lib/esm/components/case-list/case-list-table/CloseCaseBtn.js +27 -28
  70. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts +0 -5
  71. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts.map +1 -1
  72. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.js +51 -70
  73. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.d.ts.map +1 -1
  74. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.js +5 -15
  75. package/lib/esm/components/case-list/case-list-table/SeverityLabel.js +1 -1
  76. package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.d.ts.map +1 -1
  77. package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.js +4 -5
  78. package/lib/esm/components/case-list/case-list-table/table-column-selector/TableColumnSelector.d.ts.map +1 -1
  79. package/lib/esm/components/case-list/case-list-table/table-column-selector/TableColumnSelector.js +1 -0
  80. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts +8 -0
  81. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts.map +1 -0
  82. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.js +8 -0
  83. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.d.ts.map +1 -1
  84. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.js +15 -2
  85. package/lib/esm/components/case-list/case-search/CaseSearch.d.ts.map +1 -1
  86. package/lib/esm/components/case-list/case-search/CaseSearch.js +55 -24
  87. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts +10 -0
  88. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts.map +1 -0
  89. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.js +29 -0
  90. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts +10 -0
  91. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts.map +1 -0
  92. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.js +16 -0
  93. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts +9 -0
  94. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts.map +1 -0
  95. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.js +21 -0
  96. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts +12 -0
  97. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts.map +1 -0
  98. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.js +31 -0
  99. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts +10 -0
  100. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts.map +1 -0
  101. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.js +10 -0
  102. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts +10 -0
  103. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts.map +1 -0
  104. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.js +92 -0
  105. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts +9 -0
  106. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts.map +1 -0
  107. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.js +20 -0
  108. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts +9 -0
  109. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts.map +1 -0
  110. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.js +28 -0
  111. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts +9 -0
  112. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts.map +1 -0
  113. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.js +241 -0
  114. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts +11 -0
  115. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts.map +1 -0
  116. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.js +23 -0
  117. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.d.ts.map +1 -1
  118. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +2 -1
  119. package/lib/esm/css/caseList.css +197 -28
  120. package/lib/esm/css/caseSearch.css +114 -0
  121. package/lib/esm/enums/case.d.ts +13 -5
  122. package/lib/esm/enums/case.d.ts.map +1 -1
  123. package/lib/esm/enums/case.js +23 -3
  124. package/lib/esm/enums/caseSearch.d.ts +3 -0
  125. package/lib/esm/enums/caseSearch.d.ts.map +1 -1
  126. package/lib/esm/enums/caseSearch.js +2 -1
  127. package/lib/esm/enums/filters.d.ts +5 -1
  128. package/lib/esm/enums/filters.d.ts.map +1 -1
  129. package/lib/esm/enums/filters.js +4 -0
  130. package/lib/esm/hooks/useCaseLabels.d.ts +14 -0
  131. package/lib/esm/hooks/useCaseLabels.d.ts.map +1 -0
  132. package/lib/esm/hooks/useCaseLabels.js +50 -0
  133. package/lib/esm/hooks/useCloseCase.d.ts +2 -2
  134. package/lib/esm/hooks/useCloseCase.d.ts.map +1 -1
  135. package/lib/esm/hooks/useCloseCase.js +54 -30
  136. package/lib/esm/hooks/useExportCaseListCSV.d.ts +1 -1
  137. package/lib/esm/hooks/useExportCaseListCSV.d.ts.map +1 -1
  138. package/lib/esm/hooks/useExportCaseListCSV.js +1 -9
  139. package/lib/esm/hooks/useFilterStateOnLoad.d.ts +1 -1
  140. package/lib/esm/hooks/useFilterStateOnLoad.d.ts.map +1 -1
  141. package/lib/esm/hooks/useFilterStateOnLoad.js +7 -5
  142. package/lib/esm/index.js +1 -0
  143. package/lib/esm/models/caseList.d.ts +1 -0
  144. package/lib/esm/models/caseList.d.ts.map +1 -1
  145. package/lib/esm/test-utils/mockData.d.ts +1 -0
  146. package/lib/esm/test-utils/mockData.d.ts.map +1 -1
  147. package/lib/esm/test-utils/mockData.js +2 -1
  148. package/lib/esm/utils/advanceSearchFormMapper.d.ts +11 -0
  149. package/lib/esm/utils/advanceSearchFormMapper.d.ts.map +1 -0
  150. package/lib/esm/utils/advanceSearchFormMapper.js +71 -0
  151. package/lib/esm/utils/advanceSearchUtils.d.ts +24 -0
  152. package/lib/esm/utils/advanceSearchUtils.d.ts.map +1 -0
  153. package/lib/esm/utils/advanceSearchUtils.js +150 -0
  154. package/lib/esm/utils/caseGroupDefaultFilterUtils.d.ts +12 -0
  155. package/lib/esm/utils/caseGroupDefaultFilterUtils.d.ts.map +1 -0
  156. package/lib/esm/utils/caseGroupDefaultFilterUtils.js +34 -0
  157. package/lib/esm/utils/caseGroupDefaultUtils.d.ts +10 -0
  158. package/lib/esm/utils/caseGroupDefaultUtils.d.ts.map +1 -0
  159. package/lib/esm/utils/caseGroupDefaultUtils.js +20 -0
  160. package/lib/esm/utils/caseListGraphQLUtils.d.ts +28 -0
  161. package/lib/esm/utils/caseListGraphQLUtils.d.ts.map +1 -0
  162. package/lib/esm/utils/caseListGraphQLUtils.js +304 -0
  163. package/lib/esm/utils/caseListMapper.d.ts +6 -0
  164. package/lib/esm/utils/caseListMapper.d.ts.map +1 -0
  165. package/lib/esm/utils/caseListMapper.js +47 -0
  166. package/lib/esm/utils/caseListVariablesBuilder.d.ts +17 -0
  167. package/lib/esm/utils/caseListVariablesBuilder.d.ts.map +1 -0
  168. package/lib/esm/utils/caseListVariablesBuilder.js +535 -0
  169. package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
  170. package/lib/esm/utils/caseSearchUtils.js +39 -2
  171. package/lib/esm/utils/constants.d.ts +22 -19
  172. package/lib/esm/utils/constants.d.ts.map +1 -1
  173. package/lib/esm/utils/constants.js +9 -2
  174. package/lib/esm/utils/mockSolrResponse.js +1 -1
  175. package/package.json +9 -7
@@ -1,43 +1,28 @@
1
1
  import { Button, MenuToggle, Select, SelectList, SelectOption, } from '@patternfly/react-core';
2
- import { SingleSelectDropdown, useSelectKeyboardNavigator } from '@rh-support/components';
2
+ import { useSelectKeyboardNavigator } from '@rh-support/components';
3
3
  import isEmpty from 'lodash/isEmpty';
4
4
  import React, { useContext, useEffect, useState } from 'react';
5
5
  import { useTranslation } from 'react-i18next';
6
- import { SolrKeys } from '../../../enums/filters';
7
- import { filterNamesMap } from '../../../utils/constants';
6
+ import { ARCHIVED_STATUS, SolrKeys } from '../../../enums/filters';
7
+ import { filterNamesMap, PORTAL_OPEN_DISPLAY_STATUSES, PORTAL_USER_SELECTABLE_STATUSES, } from '../../../utils/constants';
8
8
  import { CaseListFilterDispatchContext, CaseListFilterStateContext } from '../CaseListFilterContext';
9
9
  import { updateFilter } from '../CaseListFilterReducer';
10
10
  export function StatusFilter(props) {
11
- var _a;
12
11
  const dispatch = useContext(CaseListFilterDispatchContext);
13
12
  const { t } = useTranslation();
14
13
  const { filterInfo } = useContext(CaseListFilterStateContext);
15
14
  const [isOpen, setIsOpen] = useState(false);
16
15
  const [selectedItems, setSelectedItems] = useState({});
17
- const list = props.isSolrSearchDown
18
- ? props.allCaseStatuses.map((status) => ({ value: status, key: status }))
19
- : props.filterValues.map((filterValue) => ({ value: filterValue.value, key: filterValue.value }));
20
- const singleSelectOptions = list.map((item) => ({
21
- value: item.value,
22
- label: item.value,
16
+ const list = PORTAL_USER_SELECTABLE_STATUSES.map((status) => ({
17
+ value: status,
18
+ key: status,
23
19
  }));
24
- const selectedStatus = ((_a = filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrKeys.status]) === null || _a === void 0 ? void 0 : _a[0]) || '';
25
- const selectedOption = {
26
- value: selectedStatus,
27
- label: selectedStatus,
28
- };
20
+ const getArchivedStatuses = () => ((filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrKeys.status]) || []).filter((status) => status === ARCHIVED_STATUS);
21
+ const getSelectableStatuses = () => ((filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrKeys.status]) || []).filter((status) => status !== ARCHIVED_STATUS);
29
22
  const onToggleClick = (e) => {
30
23
  setIsOpen(!isOpen);
31
24
  };
32
25
  const onSelect = (option) => {
33
- if (props.isSolrSearchDown) {
34
- updateFilter(dispatch, {
35
- filterKey: SolrKeys.status,
36
- values: [option.value],
37
- });
38
- setIsOpen(false);
39
- return;
40
- }
41
26
  const prevSelectedStatuses = Object.keys(selectedItems).filter((item) => selectedItems[item] && item);
42
27
  if (selectedItems[option.value]) {
43
28
  setSelectedItems((prevData) => (Object.assign(Object.assign({}, prevData), { [option.value]: false })));
@@ -50,7 +35,7 @@ export function StatusFilter(props) {
50
35
  }
51
36
  updateFilter(dispatch, {
52
37
  filterKey: SolrKeys.status,
53
- values: prevSelectedStatuses,
38
+ values: [...getArchivedStatuses(), ...prevSelectedStatuses],
54
39
  });
55
40
  };
56
41
  // Use the keyboard navigator hook
@@ -65,7 +50,7 @@ export function StatusFilter(props) {
65
50
  setSelectedItems({});
66
51
  updateFilter(dispatch, {
67
52
  filterKey: SolrKeys.status,
68
- values: [],
53
+ values: getArchivedStatuses(),
69
54
  });
70
55
  };
71
56
  const getBtnPlaceholder = (btnPlaceholder, selectedValues, type, totalLength, totalLengthString) => {
@@ -75,53 +60,42 @@ export function StatusFilter(props) {
75
60
  else if (selectedValues && selectedValues.length === 1) {
76
61
  return selectedValues[0];
77
62
  }
78
- else if (selectedValues && selectedValues.length === 3) {
63
+ else if (selectedValues && totalLength && selectedValues.length === totalLength) {
79
64
  return t('All cases');
80
65
  }
81
66
  else {
82
- if (selectedValues &&
83
- selectedValues.length === 2 &&
84
- selectedValues.every((item) => item.includes('Waiting'))) {
67
+ const hasAllOpenSelected = PORTAL_OPEN_DISPLAY_STATUSES.every((status) => selectedValues.includes(status)) &&
68
+ !selectedValues.includes('Closed') &&
69
+ !selectedValues.includes('Archived');
70
+ if (hasAllOpenSelected) {
85
71
  return t('All open cases');
86
72
  }
87
- else if (selectedValues && totalLength && selectedValues.length === totalLength) {
88
- return totalLengthString || btnPlaceholder;
89
- }
90
73
  else {
91
74
  return `${selectedValues.length} ${type} selected`;
92
75
  }
93
76
  }
94
77
  };
95
- const placeholder = props.isSolrSearchDown
96
- ? t('Select a status')
97
- : getBtnPlaceholder(t('Select a status'), (filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrKeys.status]) || [], ' ', list.length, t('All selected'));
78
+ const placeholder = getBtnPlaceholder(t('Select a status'), getSelectableStatuses(), ' ', list.length, t('All selected'));
98
79
  const toggle = (toggleRef) => (React.createElement(MenuToggle, { variant: "default", onClick: onToggleClick, innerRef: toggleRef, isExpanded: isOpen, isFullWidth: true, onKeyDown: onInputKeyDown },
99
80
  placeholder,
100
81
  Object.keys(selectedItems).filter((key) => selectedItems[key] === true).length > 0 && (React.createElement(Button, { icon: "", variant: "plain", onClick: onClick, "aria-label": "Clear selection", className: "pf-v6-c-select__toggle-clear" }))));
101
- const dropdownOptions = list.map((option, index) => !isEmpty(option.value) && (React.createElement(SelectOption, { key: option.key, value: option, hasCheckbox: !props.isSolrSearchDown, isSelected: selectedItems[option.value], isFocused: focusedItemIndex !== null && focusedItemIndex === index, id: `select-status-${option.value.replace(' ', '-')}` }, option.value)));
102
- const onSingleSelectChange = (option) => {
103
- updateFilter(dispatch, {
104
- filterKey: SolrKeys.status,
105
- values: [option.value],
106
- });
107
- };
82
+ const dropdownOptions = list.map((option, index) => !isEmpty(option.value) && (React.createElement(SelectOption, { key: option.key, value: option, hasCheckbox: true, isSelected: selectedItems[option.value], isFocused: focusedItemIndex !== null && focusedItemIndex === index, id: `select-status-${option.value.replace(' ', '-')}` }, option.value)));
108
83
  useEffect(() => {
109
- var _a;
110
- if (isEmpty(filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrKeys.status])) {
84
+ if (isEmpty(getSelectableStatuses())) {
111
85
  setSelectedItems({});
112
86
  }
113
- else if (!props.isSolrSearchDown) {
114
- const selectedStatuses = (_a = filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrKeys.status]) === null || _a === void 0 ? void 0 : _a.reduce((selection, status) => {
87
+ else {
88
+ const selectedStatuses = getSelectableStatuses().reduce((selection, status) => {
115
89
  selection[status] = true;
116
90
  return selection;
117
91
  }, {});
118
92
  setSelectedItems(selectedStatuses || {});
119
93
  }
120
94
  // eslint-disable-next-line react-hooks/exhaustive-deps
121
- }, [filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrKeys.status], props.isSolrSearchDown]);
95
+ }, [filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrKeys.status]]);
122
96
  const titleId = 'case-list-status-filter';
123
97
  return (React.createElement("div", { className: "status-filter" },
124
98
  React.createElement("label", { htmlFor: titleId, className: "pf-v6-u-mb-sm status-filter-label" }, t(filterNamesMap[SolrKeys.status])),
125
- props.isSolrSearchDown ? (React.createElement(SingleSelectDropdown, { id: titleId, selected: selectedOption, options: singleSelectOptions, placeholder: t('Select a status'), onSelect: onSingleSelectChange, dataTrackingId: "status-filter", isScrollable: true })) : (React.createElement(Select, { shouldFocusToggleOnSelect: true, shouldPreventScrollOnItemFocus: true, id: titleId, "data-tracking-id": "status-filter", isOpen: isOpen, selected: selectedItems, onSelect: (_e, v) => onSelect(v), onOpenChange: (nextOpen) => setIsOpen(nextOpen), toggle: toggle, isScrollable: true, popperProps: { direction: 'down', enableFlip: false } },
126
- React.createElement(SelectList, null, dropdownOptions)))));
99
+ React.createElement(Select, { shouldFocusToggleOnSelect: true, shouldPreventScrollOnItemFocus: true, id: titleId, "data-tracking-id": "status-filter", isOpen: isOpen, selected: selectedItems, onSelect: (_e, v) => onSelect(v), onOpenChange: (nextOpen) => setIsOpen(nextOpen), toggle: toggle, isScrollable: true, popperProps: { direction: 'down', enableFlip: false } },
100
+ React.createElement(SelectList, null, dropdownOptions))));
127
101
  }
@@ -1,10 +1,8 @@
1
1
  import React from 'react';
2
- import { IProductVersionPivotMap } from '../CaseList';
3
2
  import { IProductFilter } from '../CaseListFilterReducer';
4
3
  interface IProps {
5
4
  productInfo: IProductFilter;
6
- productVersionPivot: IProductVersionPivotMap[];
7
5
  }
8
- export declare function VersionsFilter({ productInfo, productVersionPivot }: IProps): React.JSX.Element;
6
+ export declare function VersionsFilter({ productInfo }: IProps): React.JSX.Element;
9
7
  export {};
10
8
  //# sourceMappingURL=VersionsFilter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VersionsFilter.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-filters/VersionsFilter.tsx"],"names":[],"mappings":"AAeA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAIhF,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAgB,MAAM,0BAA0B,CAAC;AAoCxE,UAAU,MAAM;IACZ,WAAW,EAAE,cAAc,CAAC;IAC5B,mBAAmB,EAAE,uBAAuB,EAAE,CAAC;CAClD;AAED,wBAAgB,cAAc,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,EAAE,MAAM,qBAkO1E"}
1
+ {"version":3,"file":"VersionsFilter.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-filters/VersionsFilter.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAKhF,OAAO,EAAE,cAAc,EAAgB,MAAM,0BAA0B,CAAC;AAExE,UAAU,MAAM;IACZ,WAAW,EAAE,cAAc,CAAC;CAC/B;AAED,wBAAgB,cAAc,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,qBAiQrD"}
@@ -1,64 +1,66 @@
1
+ import { useApolloClient } from '@apollo/client/react';
1
2
  import { Button, MenuToggle, Select, SelectList, SelectOption, TextInputGroup, TextInputGroupMain, TextInputGroupUtilities, } from '@patternfly/react-core';
2
3
  import TimesIcon from '@patternfly/react-icons/dist/js/icons/times-icon';
3
4
  import { useSelectKeyboardNavigator } from '@rh-support/components';
5
+ import { GlobalMetadataStateContext } from '@rh-support/react-context';
6
+ import { compareVersions, GET_PRODUCTS, handleGraphQLVersionsResponse } from '@rh-support/utils';
4
7
  import isEmpty from 'lodash/isEmpty';
5
8
  import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
6
9
  import { useTranslation } from 'react-i18next';
7
10
  import { SolrKeys, SolrPivotKeys } from '../../../enums/filters';
8
11
  import { CaseListFilterDispatchContext, CaseListFilterStateContext } from '../CaseListFilterContext';
9
12
  import { updateFilter } from '../CaseListFilterReducer';
10
- function getVersionValuesForProduct(productPivot = [], productName) {
11
- return (productPivot.find((item) => item.value === productName) || {}).case_version;
12
- }
13
- //split version into parts
14
- function parseVersionIntoParts(version) {
15
- //keep unknown version at last
16
- if (version === 'Unknown')
17
- return [Infinity];
18
- //split dots and spaces
19
- return version.split(/[.\s]/).map((p) => (isNaN(Number(p)) ? p : Number(p)));
20
- }
21
- function compareVersions(versionA, versionB) {
22
- var _a, _b;
23
- const pA = parseVersionIntoParts(versionA), pB = parseVersionIntoParts(versionB);
24
- //compare each part
25
- for (let i = 0; i < Math.max(pA.length, pB.length); i++) {
26
- const a = (_a = pA[i]) !== null && _a !== void 0 ? _a : 0, b = (_b = pB[i]) !== null && _b !== void 0 ? _b : 0; //undefined as 0
27
- if (a == b)
28
- continue;
29
- if (typeof a === 'number' && typeof b === 'number')
30
- return a - b;
31
- if (typeof a === 'string' && typeof b === 'string')
32
- return a.localeCompare(b);
33
- //one is string and other is number => string takes precendence
34
- if (typeof a === 'string')
35
- return -1;
36
- if (typeof b == 'string')
37
- return 1;
38
- }
39
- return 0;
40
- }
41
- export function VersionsFilter({ productInfo, productVersionPivot }) {
13
+ export function VersionsFilter({ productInfo }) {
42
14
  const { t } = useTranslation();
43
15
  const { filterInfo } = useContext(CaseListFilterStateContext);
44
16
  const dispatch = useContext(CaseListFilterDispatchContext);
17
+ const apolloClient = useApolloClient();
18
+ const { globalMetadataState: { allProducts }, } = useContext(GlobalMetadataStateContext);
45
19
  const [inputValue, setInputValue] = useState('');
46
20
  const [activeItem, setActiveItem] = useState(null);
47
21
  const [isOpen, setIsOpen] = useState(false);
48
22
  const [selectedItems, setSelectedItems] = useState({});
23
+ const [fetchedVersions, setFetchedVersions] = useState([]);
24
+ const [isLoading, setIsLoading] = useState(false);
49
25
  const textInputRef = useRef();
50
- // Memoize versions to prevent unnecessary recalculations
51
- const versions = useMemo(() => {
52
- const versionValues = getVersionValuesForProduct(productVersionPivot, productInfo.value);
53
- return versionValues === null || versionValues === void 0 ? void 0 : versionValues.sort((a, b) => compareVersions(a.value, b.value));
54
- }, [productVersionPivot, productInfo.value]);
55
- // Memoize list to prevent unnecessary recreations
56
- const list = useMemo(() => (versions === null || versions === void 0 ? void 0 : versions.map((version) => ({
57
- value: version.value,
58
- key: version.value,
59
- }))) || [], [versions]);
26
+ useEffect(() => {
27
+ const productObj = allProducts.data.productsResult.find((p) => p.name === productInfo.value || p.product === productInfo.value);
28
+ if (!(productObj === null || productObj === void 0 ? void 0 : productObj.productId))
29
+ return;
30
+ setIsLoading(true);
31
+ apolloClient
32
+ .query({
33
+ query: GET_PRODUCTS,
34
+ variables: {
35
+ where: { ParentProduct__c: { eq: productObj.productId }, IsActive: { eq: true } },
36
+ first: 200,
37
+ orderBy: { Name: { order: 'ASC' } },
38
+ },
39
+ fetchPolicy: 'cache-first',
40
+ })
41
+ .then(({ data }) => {
42
+ var _a, _b, _c, _d;
43
+ const edges = (_d = (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.redhat_support_uiapi) === null || _a === void 0 ? void 0 : _a.query) === null || _b === void 0 ? void 0 : _b.RedHatSupportProduct2) === null || _c === void 0 ? void 0 : _c.edges) !== null && _d !== void 0 ? _d : [];
44
+ const versionData = handleGraphQLVersionsResponse(edges, productObj.name || productInfo.value);
45
+ setFetchedVersions(versionData);
46
+ })
47
+ .catch((err) => {
48
+ console.error('[VersionsFilter] Failed to fetch versions:', err);
49
+ setFetchedVersions([]);
50
+ })
51
+ .finally(() => setIsLoading(false));
52
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53
+ }, [productInfo.value, allProducts.data]);
54
+ const list = useMemo(() => {
55
+ const sorted = [...fetchedVersions].sort((a, b) => compareVersions(a.name, b.name));
56
+ return sorted.map((version) => ({
57
+ value: version.name,
58
+ key: version.name,
59
+ id: version.id,
60
+ }));
61
+ }, [fetchedVersions]);
60
62
  const [selectOptions, setSelectOptions] = useState(list);
61
- const onToggleClick = (e) => {
63
+ const onToggleClick = () => {
62
64
  setIsOpen(!isOpen);
63
65
  };
64
66
  const onSelect = (option) => {
@@ -72,18 +74,17 @@ export function VersionsFilter({ productInfo, productVersionPivot }) {
72
74
  setSelectedItems((prevData) => (Object.assign(Object.assign({}, prevData), { [option.value]: true })));
73
75
  prevSelectedVersions.push(option.value);
74
76
  }
75
- const newVersionState = prevSelectedVersions.map((version) => ({
76
- field: SolrKeys.version,
77
- value: version,
78
- }));
79
- const productNewState = [...filterInfo[SolrPivotKeys.product_version]];
77
+ const newVersionState = prevSelectedVersions.map((version) => {
78
+ const versionOption = list.find((item) => item.value === version);
79
+ return {
80
+ field: SolrKeys.version,
81
+ value: version,
82
+ productId: (versionOption === null || versionOption === void 0 ? void 0 : versionOption.id) || '',
83
+ };
84
+ });
85
+ const productNewState = [...((filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrPivotKeys.product_version]) || [])];
80
86
  const objIndex = productNewState.findIndex((item) => item.value === productInfo.value);
81
- // replace product with updated versions
82
- productNewState[objIndex] = {
83
- field: SolrKeys.product,
84
- value: productInfo.value,
85
- [SolrKeys.version]: newVersionState,
86
- };
87
+ productNewState[objIndex] = Object.assign(Object.assign({}, productNewState[objIndex]), { field: SolrKeys.product, value: productInfo.value, [SolrKeys.version]: newVersionState });
87
88
  updateFilter(dispatch, { filterKey: SolrPivotKeys.product_version, values: productNewState });
88
89
  };
89
90
  // Use the keyboard navigator hook
@@ -103,7 +104,7 @@ export function VersionsFilter({ productInfo, productVersionPivot }) {
103
104
  var _a;
104
105
  setInputValue('');
105
106
  setSelectedItems({});
106
- const productNewState = [...filterInfo[SolrPivotKeys.product_version]];
107
+ const productNewState = [...((filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrPivotKeys.product_version]) || [])];
107
108
  const objIndex = productNewState.findIndex((item) => item.value === productInfo.value);
108
109
  productNewState[objIndex] = {
109
110
  field: SolrKeys.product,
@@ -117,7 +118,7 @@ export function VersionsFilter({ productInfo, productVersionPivot }) {
117
118
  useEffect(() => {
118
119
  if (focusedItemIndex !== null && list[focusedItemIndex]) {
119
120
  const focusedItem = list[focusedItemIndex];
120
- setActiveItem(`select-multi-typeahead-checkbox-${focusedItem === null || focusedItem === void 0 ? void 0 : focusedItem.value.replace(' ', '-')}`);
121
+ setActiveItem(`select-multi-typeahead-checkbox-${String(focusedItem === null || focusedItem === void 0 ? void 0 : focusedItem.value).replace(' ', '-')}`);
121
122
  }
122
123
  else {
123
124
  setActiveItem(null);
@@ -131,7 +132,7 @@ export function VersionsFilter({ productInfo, productVersionPivot }) {
131
132
  // Memoize dropdownOptions to prevent unnecessary rerenders
132
133
  const dropdownOptions = useMemo(() => {
133
134
  const optionsToRender = !isEmpty(selectOptions) ? selectOptions : list;
134
- return optionsToRender.map((option, index) => option.value && (React.createElement(SelectOption, { key: option.key, value: option, hasCheckbox: true, isSelected: selectedItems[option.value], isFocused: focusedItemIndex !== null && focusedItemIndex === index, id: `select-multi-typeahead-${option.value.replace(' ', '-')}` }, option.value)));
135
+ return optionsToRender.map((option, index) => option.value && (React.createElement(SelectOption, { key: option.key, value: option, hasCheckbox: true, isSelected: selectedItems[String(option.value)], isFocused: focusedItemIndex !== null && focusedItemIndex === index, id: `select-multi-typeahead-${String(option.value).replace(' ', '-')}` }, option.value)));
135
136
  }, [selectOptions, list, selectedItems, focusedItemIndex]);
136
137
  // Update selectOptions when input value changes
137
138
  useEffect(() => {
@@ -156,9 +157,9 @@ export function VersionsFilter({ productInfo, productVersionPivot }) {
156
157
  setSelectedItems(selectedVersions);
157
158
  }, [productInfo.case_version]);
158
159
  const titleId = 'case-list-versions-filter';
159
- return (React.createElement(React.Fragment, null, (!isEmpty(versions) || true) && (React.createElement("div", { className: "version-filter-chip" },
160
+ return (React.createElement("div", { className: "version-filter-chip" },
160
161
  React.createElement("label", { hidden: true, htmlFor: titleId }, t('Open versions dropdown')),
161
162
  React.createElement("div", { className: "pf-v6-c-select" },
162
163
  React.createElement(Select, { shouldFocusToggleOnSelect: true, shouldPreventScrollOnItemFocus: true, "data-tracking-id": "versions-filter", id: titleId, title: t('Version'), isOpen: isOpen, selected: selectedItems, onSelect: (_e, v) => onSelect(v), onOpenChange: (nextOpen) => setIsOpen(nextOpen), popperProps: { direction: 'down', enableFlip: false }, toggle: toggle, isScrollable: true },
163
- React.createElement(SelectList, null, dropdownOptions)))))));
164
+ React.createElement(SelectList, null, isLoading ? React.createElement(SelectOption, { isDisabled: true }, t('Loading...')) : dropdownOptions)))));
164
165
  }
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export default function ArchivedCaseLabel(): React.JSX.Element;
3
+ //# sourceMappingURL=ArchivedCaseLabel.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,8 @@
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
+ }
@@ -0,0 +1,9 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,105 @@
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
+ }
@@ -3,16 +3,23 @@ import { ISolrResponse } from '@rh-support/types/shared';
3
3
  import { UserAuth } from '@rh-support/user-permissions';
4
4
  import React from 'react';
5
5
  import { ICaseListResponse } from '../../../models/caseList';
6
- import { IPaginationInfo, ISortInfo } from '../CaseListFilterReducer';
6
+ import { ISortInfo } from '../CaseListFilterReducer';
7
7
  interface IProps {
8
8
  caseList: ISolrResponse<ICaseListResponse>;
9
9
  caseGroups: ICaseGroup[];
10
10
  loggedInUserRights: UserAuth;
11
11
  sortInfo?: ISortInfo;
12
- paginationInfo?: IPaginationInfo;
13
12
  isCaseListPageLoading: boolean;
14
13
  hasError: boolean;
15
- isSolrDown?: boolean;
14
+ hasNextPage: boolean;
15
+ isLoadingMore: boolean;
16
+ loadMoreError: boolean;
17
+ loadMoreRetryCount: number;
18
+ onRetryLoadMore: () => void;
19
+ onRetryFetch?: () => void;
20
+ caseLabelsFetchError?: Error | null;
21
+ onCasesCloseSuccess?: () => void;
22
+ sentinelRef?: (node?: Element | null) => void;
16
23
  }
17
24
  export declare function CaseListTable(props: IProps): React.JSX.Element;
18
25
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"CaseListTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/CaseListTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAqB3E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAQxD,OAAO,KAAkD,MAAM,OAAO,CAAC;AAKvE,OAAO,EAAE,iBAAiB,EAAyB,MAAM,0BAA0B,CAAC;AAEpF,OAAO,EAEH,eAAe,EACf,SAAS,EAIZ,MAAM,0BAA0B,CAAC;AA4BlC,UAAU,MAAM;IACZ,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC3C,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,kBAAkB,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAsBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,qBA6kB1C"}
1
+ {"version":3,"file":"CaseListTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/CaseListTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAsB3E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAQxD,OAAO,KAAkD,MAAM,OAAO,CAAC;AAIvE,OAAO,EAAE,iBAAiB,EAAyB,MAAM,0BAA0B,CAAC;AAEpF,OAAO,EAAgB,SAAS,EAAc,MAAM,0BAA0B,CAAC;AA8B/E,UAAU,MAAM;IACZ,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC3C,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,kBAAkB,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,oBAAoB,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACpC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,qBAkkB1C"}