@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
@@ -1,6 +1,9 @@
1
- import { Button } from '@patternfly/react-core';
1
+ import { Button, Spinner } from '@patternfly/react-core';
2
+ import { useFetch } from '@rh-support/components';
3
+ import { GlobalMetadataStateContext } from '@rh-support/react-context';
2
4
  import React, { useContext, useState } from 'react';
3
5
  import { Trans, useTranslation } from 'react-i18next';
6
+ import { getCaseListFromSolr } from '../../../utils/caseListUtils';
4
7
  import { CaseListFilterStateContext } from '../CaseListFilterContext';
5
8
  import DownloadCSVFileModal from './DownloadCSVFileModal';
6
9
  const MAX_LIMIT = 1000;
@@ -10,10 +13,14 @@ export function ExportCaseListCSV({ currentFilteredCaseList, selectedCases, isEx
10
13
  const btnToolTip = t('Export the current list of cases to CSV. Please note that exporting a large number of cases may take a while.');
11
14
  const maxLengthTooltip = t('Export the current list of cases to CSV. Please note that only the top {{limit}} cases will be exported and that it may take awhile.', { limit: MAX_LIMIT });
12
15
  const currentFilteredCaseCount = (_a = currentFilteredCaseList === null || currentFilteredCaseList === void 0 ? void 0 : currentFilteredCaseList.numFound) !== null && _a !== void 0 ? _a : 0;
16
+ const { isFetching } = useFetch(getCaseListFromSolr, { propgateErrors: true });
13
17
  const [openUpdateSeverityModal, setOpenUpdateSeverityModal] = useState(false);
14
- const isBtnDisabled = currentFilteredCaseCount === 0;
18
+ const isFetchingCSVData = isFetching;
19
+ const isBtnDisabled = isFetchingCSVData || currentFilteredCaseCount === 0;
15
20
  let btnTitle = currentFilteredCaseCount >= MAX_LIMIT ? maxLengthTooltip : btnToolTip;
16
21
  const filterState = useContext(CaseListFilterStateContext);
22
+ const { globalMetadataState: { loggedInUserRights, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
23
+ // To show tooltip if export csv is disabled when SOLR is down
17
24
  const getTooltipContent = () => {
18
25
  let tooltipText = t('Export Cases');
19
26
  if (isExportCsvDisabled) {
@@ -21,12 +28,15 @@ export function ExportCaseListCSV({ currentFilteredCaseList, selectedCases, isEx
21
28
  }
22
29
  return tooltipText;
23
30
  };
31
+ // To check if export csv button is disabled
24
32
  const isExportButtonDisabled = isBtnDisabled || isExportCsvDisabled;
33
+ // To toggle download csv modal
25
34
  const toggleDownloadCSVModal = () => {
26
35
  setOpenUpdateSeverityModal((openUpdateSeverityModal) => !openUpdateSeverityModal);
27
36
  };
28
37
  return (React.createElement("span", { title: (isExportCsvDisabled && getTooltipContent()) || '' },
29
- React.createElement(Button, { variant: "tertiary", onClick: toggleDownloadCSVModal, title: btnTitle, "data-tracking-id": "case-list-toolbar-export-csv", isDisabled: isExportButtonDisabled },
30
- React.createElement(Trans, null, "Export CSV")),
31
- React.createElement(DownloadCSVFileModal, { filterState: filterState, isDisabled: isExportButtonDisabled, onModalshow: openUpdateSeverityModal, onClose: toggleDownloadCSVModal, selectedCases: selectedCases, filteredCaseCount: currentFilteredCaseCount })));
38
+ React.createElement(Button, { variant: "tertiary", onClick: toggleDownloadCSVModal, title: btnTitle, "data-tracking-id": "case-list-toolbar-export-csv", isDisabled: isExportButtonDisabled }, isFetchingCSVData ? (React.createElement(React.Fragment, null,
39
+ React.createElement(Trans, null, "Exporting CSV"),
40
+ React.createElement(Spinner, { size: "md", "aria-label": "loading", className: "export-csv-loader pf-v6-u-ml-xs" }))) : (React.createElement(Trans, null, "Export CSV"))),
41
+ React.createElement(DownloadCSVFileModal, { filterState: filterState, loggedInUserRights: loggedInUserRights, loggedInUsersAccount: loggedInUsersAccount, isDisabled: isExportButtonDisabled, onModalshow: openUpdateSeverityModal, onClose: toggleDownloadCSVModal, selectedCases: selectedCases, filteredCaseCount: currentFilteredCaseCount })));
32
42
  }
@@ -12,7 +12,7 @@ export default function SeverityLabel({ sevValue }) {
12
12
  return 'danger';
13
13
  case '2 (High)':
14
14
  return 'warning';
15
- case '3 (Medium)':
15
+ case '3 (Normal)':
16
16
  return 'info';
17
17
  case '4 (Low)':
18
18
  return 'custom';
@@ -1 +1 @@
1
- {"version":3,"file":"TableActionsDropdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/TableActionsDropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,kBAAkB,EAAgB,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAwB,MAAM,qCAAqC,CAAC;AASlG,UAAU,MAAO,SAAQ,kBAAkB,EAAE,qBAAqB;CAAG;AAErE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,qBAoHjD"}
1
+ {"version":3,"file":"TableActionsDropdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/TableActionsDropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,kBAAkB,EAAgB,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAwB,MAAM,qCAAqC,CAAC;AASlG,UAAU,MAAO,SAAQ,kBAAkB,EAAE,qBAAqB;CAAG;AAErE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,qBA0HjD"}
@@ -3,7 +3,7 @@ import ExclamationCircleIcon from '@patternfly/react-icons/dist/js/icons/exclama
3
3
  import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
4
4
  import WarningTriangleIcon from '@patternfly/react-icons/dist/js/icons/warning-triangle-icon';
5
5
  import { SingleSelectDropdown } from '@rh-support/components';
6
- import { CloseCaseModal } from '@rh-support/react-context';
6
+ import { CloseCaseModal, GlobalMetadataStateContext } from '@rh-support/react-context';
7
7
  import React, { useContext } from 'react';
8
8
  import { useTranslation } from 'react-i18next';
9
9
  import { useCloseCase } from '../../../hooks/useCloseCase';
@@ -22,6 +22,7 @@ export function TableActionsDropdown(props) {
22
22
  const currentFilteredCaseCount = (_a = currentFilteredCaseList === null || currentFilteredCaseList === void 0 ? void 0 : currentFilteredCaseList.numFound) !== null && _a !== void 0 ? _a : 0;
23
23
  const filterState = useContext(CaseListFilterStateContext);
24
24
  const { isExportButtonDisabled, openUpdateSeverityModal, showError: showExportCSVError, getTooltipContent: getExportCSVTooltipContent, toggleDownloadCSVModal, } = useExportCaseListCSV(props);
25
+ const { globalMetadataState: { loggedInUserRights, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
25
26
  const { isModalOpen, isPostingComment, showError, showWarning, getTooltipContent, onCancel, onConfirm, onBtnClick, } = useCloseCase(props);
26
27
  let closeCaseIconStatus = 'danger';
27
28
  if (showWarning) {
@@ -69,6 +70,6 @@ export function TableActionsDropdown(props) {
69
70
  };
70
71
  return (React.createElement(React.Fragment, null,
71
72
  isModalOpen && React.createElement(CloseCaseModal, { onClose: onCancel, onConfirm: onConfirm, isUpdating: !!isPostingComment }),
72
- React.createElement(DownloadCSVFileModal, { filterState: filterState, isDisabled: isExportButtonDisabled, onModalshow: openUpdateSeverityModal, onClose: toggleDownloadCSVModal, selectedCases: selectedCases, filteredCaseCount: currentFilteredCaseCount }),
73
+ React.createElement(DownloadCSVFileModal, { filterState: filterState, loggedInUserRights: loggedInUserRights, loggedInUsersAccount: loggedInUsersAccount, isDisabled: isExportButtonDisabled, onModalshow: openUpdateSeverityModal, onClose: toggleDownloadCSVModal, selectedCases: selectedCases, filteredCaseCount: currentFilteredCaseCount }),
73
74
  React.createElement(SingleSelectDropdown, { hideToggleIcons: true, selected: { value: null, label: '' }, onSelect: onSelect, options: toolbarDropdownItems, id: "table-actions-dropdown", placeholder: t('Actions'), badge: React.createElement(Badge, null, selectedCases.length) })));
74
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TableColumnSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/components/case-list/case-list-table/table-column-selector/TableColumnSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AAWpC,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,UAAU,MAAM;IACZ,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpD,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD,wBAAgB,mBAAmB,CAAC,EAAE,sBAAsB,EAAE,aAAa,EAAE,EAAE,MAAM,qBAiGpF"}
1
+ {"version":3,"file":"TableColumnSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/components/case-list/case-list-table/table-column-selector/TableColumnSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AAWpC,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,UAAU,MAAM;IACZ,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpD,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD,wBAAgB,mBAAmB,CAAC,EAAE,sBAAsB,EAAE,aAAa,EAAE,EAAE,MAAM,qBAgGpF"}
@@ -38,7 +38,6 @@ export function TableColumnSelector({ onColumnSelectorChange, cachedColumns }) {
38
38
  { label: t('Product and version'), key: 'product' },
39
39
  { label: t('Personal reference number'), key: 'alternateCaseId' },
40
40
  { label: t('Closed date'), key: 'closedDate' },
41
- { label: t('Case labels'), key: 'caseLabel' },
42
41
  ];
43
42
  const generateCheckboxes = (fieldDefinitions) => {
44
43
  return fieldDefinitions === null || fieldDefinitions === void 0 ? void 0 : fieldDefinitions.map((field) => (React.createElement(Checkbox, { key: field.key, className: "case-column-selector", label: field.label, isChecked: cachedColumns.includes(field.key), onChange: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"BookmarkedSearchesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/BookmarkedSearchesSelector.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAIvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAchE,UAAU,MAAM;IACZ,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,mBAAmB,CAAC;IACvC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,qBAsUvD"}
1
+ {"version":3,"file":"BookmarkedSearchesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/BookmarkedSearchesSelector.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAGvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAahE,UAAU,MAAM;IACZ,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,mBAAmB,CAAC;IACvC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,qBAyTvD"}
@@ -12,7 +12,6 @@ import PencilAltIcon from '@patternfly/react-icons/dist/js/icons/pencil-alt-icon
12
12
  import StarIcon from '@patternfly/react-icons/dist/js/icons/star-icon';
13
13
  import { ConfirmationServiceProvider } from '@rh-support/components';
14
14
  import { GlobalMetadataStateContext, UserPreferencesKeys, useUserPreferences } from '@rh-support/react-context';
15
- import { getUrlParsedParams } from '@rh-support/utils';
16
15
  import filter from 'lodash/filter';
17
16
  import find from 'lodash/find';
18
17
  import flatMap from 'lodash/flatMap';
@@ -20,10 +19,8 @@ import isEmpty from 'lodash/isEmpty';
20
19
  import isEqual from 'lodash/isEqual';
21
20
  import React, { useContext, useEffect, useRef, useState } from 'react';
22
21
  import { Trans, useTranslation } from 'react-i18next';
23
- import { useLocation } from 'react-router-dom';
24
22
  import { CaseSearchQueryType } from '../../../enums/caseSearch';
25
- import { decodeCaseListUrlFilterQuery } from '../../../utils/caseGroupDefaultFilterUtils';
26
- import { createFilterStateFromAdvancedQuery, FILTER_URL_QUERY_SEARCH_PARAM } from '../../../utils/caseSearchUtils';
23
+ import { createFilterStateFromAdvancedQuery } from '../../../utils/caseSearchUtils';
27
24
  import { CaseListFilterDispatchContext, CaseListFilterStateContext, initialCaseFilterState, } from '../CaseListFilterContext';
28
25
  import { isNoFilterApplied, isOnlyDefaultFilterApplied } from '../CaseListFilterHelpers';
29
26
  import { clearFilters, updateFilterState, updateSort } from '../CaseListFilterReducer';
@@ -31,11 +28,8 @@ import { SaveCaseSearchModal } from './SaveCaseSearchModal';
31
28
  import useAdvanceSearchParser from './useAdvanceSearchParser';
32
29
  export function BookmarkedSearchesSelector(props) {
33
30
  const { t } = useTranslation();
34
- const location = useLocation();
35
31
  const { globalMetadataState, globalMetadataState: { hydraUserPreferences }, } = useContext(GlobalMetadataStateContext);
36
32
  const dispatch = useContext(CaseListFilterDispatchContext);
37
- const urlQueryParam = getUrlParsedParams(location.search)[FILTER_URL_QUERY_SEARCH_PARAM];
38
- const hasUrlFilterQuery = Boolean(decodeCaseListUrlFilterQuery(urlQueryParam));
39
33
  const [bookmarkedSearches, setBookmarkedSearches] = useState({});
40
34
  const [mostRecentSearch, setMostRecentSearch] = useState({});
41
35
  const [selectedSearch, setSelectedSearch] = useState('');
@@ -75,12 +69,6 @@ export function BookmarkedSearchesSelector(props) {
75
69
  const emptySearchPlaceholderText = 'Select an option';
76
70
  const recentSearchLoaded = useRef(false);
77
71
  useEffect(() => {
78
- // Deep links (e.g. Manage → View assigned cases) encode filters in the URL query.
79
- // Do not overwrite them with saved-search auto-restore.
80
- if (hasUrlFilterQuery) {
81
- recentSearchLoaded.current = true;
82
- return;
83
- }
84
72
  switch (userPreferredSearch) {
85
73
  case restoreLatestText:
86
74
  if (!isEmpty(mostRecentSearch) && !recentSearchLoaded.current) {
@@ -103,7 +91,7 @@ export function BookmarkedSearchesSelector(props) {
103
91
  break;
104
92
  }
105
93
  // eslint-disable-next-line react-hooks/exhaustive-deps
106
- }, [mostRecentSearch, userPreferredSearch, hasUrlFilterQuery]);
94
+ }, [mostRecentSearch, userPreferredSearch]);
107
95
  useEffect(() => {
108
96
  var _a;
109
97
  // enable save search button as soon as user changes something in the input search box
@@ -175,7 +163,6 @@ export function BookmarkedSearchesSelector(props) {
175
163
  !isEmpty(props.defaultSavedSearchName) && setSelectedSearch(props.defaultSavedSearchName);
176
164
  }, [props.defaultSavedSearchName]);
177
165
  const renderSavedSearchItems = Object.keys(bookmarkedSearches)
178
- .filter((key) => { var _a; return ((_a = bookmarkedSearches[key]) === null || _a === void 0 ? void 0 : _a.type) !== 'advanced'; })
179
166
  .sort()
180
167
  .map((bookmarkedSearch) => {
181
168
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"CaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/CaseSearch.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAgE,MAAM,OAAO,CAAC;AA8BrF,UAAU,MAAM;IACZ,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,qBA4OvC"}
1
+ {"version":3,"file":"CaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/CaseSearch.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAkB5E,UAAU,MAAM;IACZ,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,qBA6LvC"}
@@ -2,18 +2,14 @@ import { Button, SearchInput } from '@patternfly/react-core';
2
2
  import { GlobalMetadataStateContext } from '@rh-support/react-context';
3
3
  import { AbilityContext, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
4
4
  import isEmpty from 'lodash/isEmpty';
5
- import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';
5
+ import React, { useCallback, useContext, useEffect, useState } from 'react';
6
6
  import { Trans, useTranslation } from 'react-i18next';
7
7
  import { CaseSearchQueryType } from '../../../enums/caseSearch';
8
- import { createCaseListFilterStateFromAdvanceSearchForm, deriveSearchQueryType, } from '../../../utils/advanceSearchFormMapper';
9
- import { getAdvanceSearchAppliedFilterCount } from '../../../utils/advanceSearchUtils';
10
8
  import { createFilterStateFromAdvancedQuery, createUserFriendlyQueryFromFilterStateAdvancedSearch, } from '../../../utils/caseSearchUtils';
11
- // import { useCaseListStateContext } from '../CaseListContext';
9
+ import { useCaseListStateContext } from '../CaseListContext';
12
10
  import { CaseListFilterDispatchContext, CaseListFilterStateContext, initialPaginationInfo, } from '../CaseListFilterContext';
13
- import { initialFilterInfo, updateFilterQuery, updateFilterState, } from '../CaseListFilterReducer';
14
- import { AdvanceSearchModal } from './advance-search-modal/AdvanceSearchModal';
11
+ import { initialFilterInfo, updateFilterQuery, updateFilterState } from '../CaseListFilterReducer';
15
12
  import { AdvanceSearch } from './AdvanceSearch';
16
- import { AdvanceSearchToggleButton } from './AdvanceSearchToggleButton';
17
13
  import { BookmarkedSearchesSelector } from './BookmarkedSearchesSelector';
18
14
  export function CaseSearch(props) {
19
15
  const { globalMetadataState } = useContext(GlobalMetadataStateContext);
@@ -24,29 +20,26 @@ export function CaseSearch(props) {
24
20
  const { filterQueryInfo } = filterState;
25
21
  const [searchVal, setSearchVal] = useState(filterQueryInfo.queryString);
26
22
  const [isAdvancedSearchValid, setIsAdvancedSearchValid] = useState(true);
27
- const [isAdvanceSearchModalOpen, setIsAdvanceSearchModalOpen] = useState(false);
28
23
  const dispatch = useContext(CaseListFilterDispatchContext);
29
- // const { isFetching } = useCaseListStateContext();
24
+ const { isFetching } = useCaseListStateContext();
30
25
  const getType = useCallback(() => (filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.type) || CaseSearchQueryType.BASIC, [filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.type]);
31
- // Keep the keyword search input in sync with queryString only (not modal filter parsedQuery).
26
+ // on queryString and parsedQuery change need to update search
32
27
  useEffect(() => {
33
- const query = filterQueryInfo.queryString;
34
- setSearchVal(query.endsWith('*') ? query.slice(0, -1) : query);
35
- }, [filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.queryString]);
28
+ if (getType() === CaseSearchQueryType.ADVANCED) {
29
+ setSearchVal(filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.parsedQuery);
30
+ }
31
+ else {
32
+ const query = filterQueryInfo.queryString;
33
+ setSearchVal(query.endsWith('*') ? query.slice(0, -1) : query);
34
+ }
35
+ }, [filterQueryInfo, getType]);
36
36
  const onSearchValChange = (value) => {
37
37
  setSearchVal(value === null || value === void 0 ? void 0 : value.trim());
38
38
  };
39
39
  const clearSearchVal = () => {
40
40
  setSearchVal('');
41
- if (!(filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.queryString)) {
42
- return;
43
- }
44
- const nextFilterQueryInfo = {
45
- queryString: '',
46
- parsedQuery: filterQueryInfo.parsedQuery || '',
47
- type: deriveSearchQueryType(Object.assign(Object.assign({}, filterState), { filterQueryInfo: Object.assign(Object.assign({}, filterQueryInfo), { queryString: '' }) })),
48
- };
49
- updateFilterQuery(dispatch, nextFilterQueryInfo);
41
+ (filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.queryString) &&
42
+ updateFilterQuery(dispatch, { type: getType(), queryString: '', parsedQuery: '' });
50
43
  };
51
44
  const clearAdvancedSearchVal = () => {
52
45
  setSearchVal('');
@@ -55,21 +48,11 @@ export function CaseSearch(props) {
55
48
  queryString: '',
56
49
  parsedQuery: '',
57
50
  type: CaseSearchQueryType.ADVANCED,
58
- }, paginationInfo: initialPaginationInfo, advanceSearchDateRanges: undefined }));
51
+ }, paginationInfo: initialPaginationInfo }));
59
52
  };
60
- const onCaseSearch = (parsedQuery = filterQueryInfo.parsedQuery || '', queryString = searchVal) => {
61
- const trimmedQuery = queryString.trim();
62
- const finalQueryString = trimmedQuery ? `${trimmedQuery}*` : '';
63
- const nextFilterState = Object.assign(Object.assign({}, filterState), { filterQueryInfo: {
64
- queryString: finalQueryString,
65
- parsedQuery,
66
- type: filterQueryInfo.type,
67
- } });
68
- updateFilterQuery(dispatch, {
69
- queryString: finalQueryString,
70
- parsedQuery,
71
- type: deriveSearchQueryType(nextFilterState),
72
- });
53
+ const onCaseSearch = (parsedQuery = '', queryString = searchVal) => {
54
+ const finalQueryString = `${queryString.trim()}*`;
55
+ updateFilterQuery(dispatch, { type: getType(), queryString: finalQueryString, parsedQuery });
73
56
  };
74
57
  const onCaseSearchAdvanced = (type, parsedQuery = '', queryStringInputBox = searchVal) => {
75
58
  const newFilterState = createFilterStateFromAdvancedQuery(parsedQuery.replace(/ and /g, ' AND ').replace(/ or /g, ' OR ').replace('Bug OR defect', 'Bug or defect'), globalMetadataState, filterState, queryStringInputBox, type);
@@ -107,38 +90,24 @@ export function CaseSearch(props) {
107
90
  };
108
91
  const handleSubmit = (ev) => {
109
92
  ev.preventDefault();
110
- onCaseSearch();
111
- };
112
- const openAdvanceSearchModal = () => {
113
- setIsAdvanceSearchModalOpen(true);
114
- };
115
- const closeAdvanceSearchModal = () => {
116
- setIsAdvanceSearchModalOpen(false);
117
- };
118
- const onAdvanceSearchModalSubmit = (formState) => {
119
- const newFilterState = createCaseListFilterStateFromAdvanceSearchForm(formState, filterState);
120
- updateFilterState(dispatch, newFilterState);
121
- closeAdvanceSearchModal();
93
+ // For advance search submit should only happen on btn click or ctrl+enter which will be handled manually
94
+ getType() === CaseSearchQueryType.BASIC && onCaseSearch();
122
95
  };
123
- const appliedAdvanceSearchFilterCount = useMemo(() => getAdvanceSearchAppliedFilterCount(filterState), [filterState]);
124
96
  const renderBasicSearch = () => {
125
97
  return (React.createElement(React.Fragment, null,
126
98
  React.createElement("div", { className: "case-search-input-container" },
127
99
  React.createElement(SearchInput, { className: "pf-v6-u-w-100 case-search-input", placeholder: t('Search by keyword or case ID'), value: searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim(), "data-tracking-id": "search-cases-text-input", id: "case-search-basic", "aria-label": t('Search by keyword or case ID'), onChange: (_event, val) => onSearchValChange(val), onClear: clearSearchVal }),
128
100
  React.createElement(Button, { variant: "primary", type: "submit", className: "search-btn", "data-tracking-id": "case-list-search-button", isDisabled: isSearchButtonDisabled },
129
101
  React.createElement(Trans, null, "Search")),
130
- canUseAdvancedSearch && (React.createElement("div", { className: "advance-search-panel-container" },
131
- React.createElement(AdvanceSearchToggleButton, { appliedFilterCount: appliedAdvanceSearchFilterCount, onClick: openAdvanceSearchModal }),
132
- React.createElement(AdvanceSearchModal, { isOpen: isAdvanceSearchModalOpen, onClose: closeAdvanceSearchModal, onSearch: onAdvanceSearchModalSubmit }))))));
102
+ canUseAdvancedSearch && (React.createElement(Button, { variant: "link", onClick: () => onSearchTypeChange(CaseSearchQueryType.ADVANCED), isDisabled: isFetching, "data-tracking-id": "case-list-adv-toggle-button", className: "case-search-toggle secondary-button-pill" },
103
+ React.createElement(Trans, null, "Advanced"))))));
133
104
  };
134
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
135
105
  const renderAdvanceSearch = () => {
136
106
  return canUseAdvancedSearch ? (React.createElement(React.Fragment, null,
137
107
  React.createElement(AdvanceSearch, { isSearchDisabled: isSearchButtonDisabled, onSearchValChange: onSearchValChange, onSearchClear: clearAdvancedSearchVal, onSearchSubmit: onCaseSearchAdvanced, onSearchTypeChange: onSearchTypeChange, onAdvancedSearchValidation: (isValid) => setIsAdvancedSearchValid(isValid) }))) : (renderBasicSearch());
138
108
  };
139
- void renderAdvanceSearch;
140
109
  return (React.createElement(React.Fragment, null,
141
110
  React.createElement("form", { onSubmit: handleSubmit, onKeyDown: handleSearchInputKeyDown },
142
- React.createElement("div", { className: "form-group case-search-form-group" }, renderBasicSearch())),
111
+ React.createElement("div", { className: "form-group case-search-form-group" }, CaseSearchQueryType.BASIC === getType() ? renderBasicSearch() : renderAdvanceSearch())),
143
112
  React.createElement(BookmarkedSearchesSelector, { currentCaseSearchString: searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim(), currentSearchType: getType(), isAdvancedSearchValid: isAdvancedSearchValid, defaultSavedSearchName: props.defaultSavedSearchName })));
144
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useAdvanceSearchParser.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/useAdvanceSearchParser.tsx"],"names":[],"mappings":"AASA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,MAAM,EAAE;;CAAA;yBAUzB,MAAM;6BAIF,MAAM;;EA+LzC"}
1
+ {"version":3,"file":"useAdvanceSearchParser.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/useAdvanceSearchParser.tsx"],"names":[],"mappings":"AASA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,MAAM,EAAE;;CAAA;yBASzB,MAAM;6BAIF,MAAM;;EA+LzC"}
@@ -5,8 +5,7 @@ import { useEffect, useRef } from 'react';
5
5
  import { SolrKeys } from '../../../enums/filters';
6
6
  import { useCaseListStateContext } from '../CaseListContext';
7
7
  export default function useAdvanceSearchParser({ onInit }) {
8
- const caseListState = useCaseListStateContext();
9
- const filterValuesFromFacetResponse = caseListState.filterValuesFromFacetResponse || {};
8
+ const { filterValuesFromFacetResponse } = useCaseListStateContext();
10
9
  const { globalMetadataState: { caseGroups, loggedInUsersAccount, bookmarkedGroupAccounts, allCaseTypes }, } = useGlobalStateContext();
11
10
  const parserRef = useRef(null);
12
11
  const parse = (stringQuery) => {
@@ -186,15 +186,9 @@
186
186
  .cases-main .case-search-table {
187
187
  -ms-flex: 1;
188
188
  flex-grow: 1;
189
- display: flex;
190
- flex-direction: column;
191
- min-width: 0;
192
- border-radius: 0 0 16px !important;
193
- }
194
-
195
- .cases-main .case-search-table > .pf-v6-c-scroll-inner-wrapper {
189
+ display: block;
196
190
  overflow-x: auto;
197
- flex: 1;
191
+ border-radius: 0 0 16px !important;
198
192
  }
199
193
 
200
194
  .case-search-bottom .case-list-table-toolbar {
@@ -206,10 +200,6 @@
206
200
  background-color: var(--pf-t--color--gray--10);
207
201
  border-top: 1px solid var(--pf-t--global--border--color--100);
208
202
  border-right: 1px solid var(--pf-t--global--border--color--100);
209
- border-bottom: 1px solid var(--pf-t--global--border--color--100);
210
- position: sticky;
211
- top: 0;
212
- z-index: 100;
213
203
  }
214
204
 
215
205
  .case-search-bottom .case-list-table-toolbar .toolbar-actions {
@@ -229,105 +219,26 @@
229
219
  color: #06c !important;
230
220
  }
231
221
 
222
+ .case-search-bottom .case-list-table-toolbar .toolbar-pagination button[disabled] {
223
+ color: #999;
224
+ }
225
+
232
226
  .case-search-bottom .case-list-table-toolbar button.pf-m-secondary:not([disabled]),
233
227
  .case-search-bottom .case-list-table-toolbar button.pf-m-tertiary:not([disabled]),
234
228
  .case-search-bottom .case-list-table-toolbar button.pf-m-control:not([disabled]) {
235
229
  background-color: #fff;
236
230
  }
237
231
 
238
- .case-count-indicator {
239
- font-size: 14px !important;
240
- line-height: 1.5em;
241
- white-space: nowrap;
242
- padding-right: 1rem;
243
- color: var(--pf-t--global--text--color--regular, #151515);
244
- }
245
-
246
232
  .cases-main .case-search-table .case-list-table {
233
+ border-top: 1px solid var(--pf-t--global--border--color--100);
247
234
  border-right: 1px solid var(--pf-t--global--border--color--100);
248
235
  border-bottom: 1px solid var(--pf-t--global--border--color--100);
249
236
  }
250
237
 
251
- .case-list-table td[data-label='Case labels'] .pf-v6-c-label .pf-v6-c-label__content .pf-v6-c-label__icon {
238
+ .case-list-table .pf-v6-c-label .pf-v6-c-label__content .pf-v6-c-label__icon {
252
239
  display: none;
253
240
  }
254
241
 
255
- .case-number-section .archived-case-label.pf-m-purple .pf-v6-c-label__icon {
256
- color: #5e40be;
257
- }
258
-
259
- .case-list-table th#caseLabel,
260
- .case-list-table td[data-label='Case labels'] {
261
- width: 20rem;
262
- min-width: 20rem;
263
- max-width: 20rem;
264
- }
265
-
266
- .case-list-label-cell {
267
- --case-list-label-gap: 8px;
268
- position: relative;
269
- max-width: 100%;
270
- width: 100%;
271
- }
272
-
273
- .case-list-label-cell__measure {
274
- display: flex;
275
- column-gap: var(--case-list-label-gap);
276
- position: absolute;
277
- visibility: hidden;
278
- pointer-events: none;
279
- height: 0;
280
- overflow: hidden;
281
- white-space: nowrap;
282
- }
283
-
284
- .case-list-table td[data-label='Case labels'] .case-list-label-group,
285
- .case-list-table td[data-label='Case labels'] .case-list-label-group .pf-v6-c-label-group__main,
286
- .case-list-table td[data-label='Case labels'] .case-list-label-group .pf-v6-c-label-group__list {
287
- max-width: 100%;
288
- width: 100%;
289
- }
290
-
291
- .case-list-table td[data-label='Case labels'] .case-list-label-group .pf-v6-c-label-group__list {
292
- column-gap: var(--case-list-label-gap);
293
- flex-wrap: nowrap;
294
- }
295
-
296
- .case-list-table td[data-label='Case labels'] .case-list-label-group .pf-v6-c-label-group__list-item {
297
- flex-shrink: 0;
298
- }
299
-
300
- .case-list-table td[data-label='Case labels'] .case-list-label-group .pf-v6-c-label__text {
301
- white-space: nowrap;
302
- }
303
-
304
- .case-list-label-popover .pf-v6-c-label-group__list {
305
- column-gap: var(--case-list-label-gap);
306
- row-gap: var(--case-list-label-gap);
307
- flex-wrap: wrap;
308
- }
309
-
310
- .case-list-label-popover-panel {
311
- --case-list-label-gap: 8px;
312
- --case-list-label-popover-offset-x: 0.9rem;
313
- --case-list-label-popover-offset-y: 0.1rem;
314
- --case-list-label-popover-close-offset-x: 0.5rem;
315
- --pf-v6-c-popover__close--sibling--PaddingInlineEnd: var(--pf-t--global--spacer--md);
316
- --pf-v6-c-popover__close--InsetInlineEnd: calc(
317
- var(--pf-v6-c-popover__content--PaddingInlineEnd, 1rem) - var(--case-list-label-popover-close-offset-x)
318
- );
319
- margin-inline-start: var(--case-list-label-popover-offset-x);
320
- margin-block-start: var(--case-list-label-popover-offset-y);
321
- }
322
-
323
- .case-list-label-popover-panel .pf-v6-c-popover__close .pf-v6-c-button {
324
- width: 21px;
325
- height: 21px;
326
- min-width: 21px;
327
- min-height: 21px;
328
- padding: 0;
329
- }
330
-
331
242
  .case-list-table td[data-label='Title'] {
332
243
  text-align: start !important;
333
244
  }
@@ -366,6 +277,17 @@
366
277
  text-transform: uppercase;
367
278
  }
368
279
 
280
+ .case-search-bottom .case-search-table footer.toolbar-pagination {
281
+ margin-top: 0 !important;
282
+ border-right: 1px solid var(--pf-t--global--border--color--100);
283
+ border-bottom: 1px solid var(--pf-t--global--border--color--100);
284
+ border-radius: 16px !important;
285
+ }
286
+
287
+ .case-search-bottom .case-search-table footer.toolbar-pagination > :first-child {
288
+ padding: 1rem;
289
+ }
290
+
369
291
  .case-search-bottom #case-filters-panel {
370
292
  -ms-flex: 100%;
371
293
  flex-basis: 100%;
@@ -378,13 +300,11 @@
378
300
  border-right: 1px solid var(--pf-t--global--border--color--100);
379
301
  border-bottom: 1px solid var(--pf-t--global--border--color--100);
380
302
  border-radius: 0 0 0 16px;
381
- align-self: stretch;
382
303
  }
383
304
 
384
305
  .case-search-filters .filter-header {
385
306
  min-height: 4rem;
386
307
  margin: 0;
387
- padding: 0;
388
308
  }
389
309
 
390
310
  .case-search-filters .filter-header .pf-v6-svg {
@@ -429,10 +349,6 @@
429
349
  font-size: 1rem;
430
350
  font-weight: 600;
431
351
  height: 4.3rem;
432
- position: sticky;
433
- top: 0;
434
- z-index: 100;
435
- background-color: #f2f2f2;
436
352
 
437
353
  .pf-v6-c-button__icon.pf-m-end {
438
354
  margin-right: -4px !important;
@@ -443,8 +359,6 @@
443
359
  .filter-wrapper {
444
360
  padding: 24px;
445
361
  background-color: var(--pf-t--color--gray--10);
446
- position: relative;
447
- z-index: 0;
448
362
  }
449
363
 
450
364
  .filter-wrapper .filter-group > * {
@@ -499,6 +413,10 @@
499
413
  .case-search-bottom .case-list-table-toolbar .toolbar-actions > * {
500
414
  margin-bottom: 0;
501
415
  }
416
+
417
+ .case-search-bottom .case-list-table-toolbar .toolbar-pagination {
418
+ margin-top: 0;
419
+ }
502
420
  }
503
421
 
504
422
  @media (min-width: 768px) {
@@ -727,86 +645,3 @@ th#product.pf-v6-c-table__th {
727
645
  .case-list-table .pf-v6-c-table__button {
728
646
  margin-bottom: 0px !important;
729
647
  }
730
-
731
- .skeleton-loader-row {
732
- height: 62px;
733
- }
734
-
735
- .skeleton-loader-row .skeleton-sentinel {
736
- display: flex;
737
- align-items: center;
738
- height: 100%;
739
- }
740
-
741
- .skeleton-loader-row .skeleton-bar {
742
- display: block;
743
- height: 24px;
744
- border-radius: 4px;
745
- background-color: #e0e0e0;
746
- animation: skeleton-pulse 1.5s ease-in-out infinite;
747
- }
748
-
749
- .skeleton-loader-row .skeleton-bar--checkbox {
750
- display: inline-block;
751
- width: 16px;
752
- height: 16px;
753
- border-radius: 3px;
754
- }
755
-
756
- @keyframes skeleton-pulse {
757
- 0% {
758
- opacity: 1;
759
- }
760
- 50% {
761
- opacity: 0.4;
762
- }
763
- 100% {
764
- opacity: 1;
765
- }
766
- }
767
-
768
- .infinite-scroll-footer-message {
769
- display: flex;
770
- justify-content: center;
771
- align-items: center;
772
- gap: 8px;
773
- padding: 12px 0;
774
- position: sticky;
775
- left: 0;
776
- background-color: #fff;
777
- }
778
-
779
- .infinite-scroll-footer-text,
780
- .infinite-scroll-alert,
781
- .infinite-scroll-alert * {
782
- font-size: 14px !important;
783
- }
784
-
785
- .infinite-scroll-footer-message .pf-v6-c-alert.pf-m-inline.pf-m-plain {
786
- padding: 0;
787
- }
788
-
789
- .infinite-scroll-footer-message .pf-v6-c-button.pf-m-link.pf-m-inline {
790
- text-decoration: none;
791
- }
792
-
793
- .infinite-scroll-retry-btn.pf-v6-c-button.pf-m-secondary {
794
- border-radius: 999px;
795
- padding: 8px 24px;
796
- gap: 6px;
797
- font-size: 14px;
798
- font-weight: 400;
799
- line-height: 1.5;
800
- display: inline-flex;
801
- align-items: center;
802
- }
803
-
804
- .infinite-scroll-retry-btn .pf-v6-c-button__icon {
805
- display: inline-flex;
806
- align-items: center;
807
- line-height: 0;
808
- }
809
-
810
- .infinite-scroll-retry-btn .pf-v6-c-button__icon svg {
811
- vertical-align: middle;
812
- }