@rh-support/cases 2.6.218 → 2.6.227

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 (153) 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 +135 -366
  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 +2 -6
  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 +44 -14
  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 -8
  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 +61 -77
  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 -42
  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-search/BookmarkedSearchesSelector.d.ts.map +1 -1
  62. package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.js +0 -1
  63. package/lib/esm/components/case-list/case-search/CaseSearch.d.ts.map +1 -1
  64. package/lib/esm/components/case-list/case-search/CaseSearch.js +24 -55
  65. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.d.ts.map +1 -1
  66. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +1 -2
  67. package/lib/esm/css/caseList.css +22 -111
  68. package/lib/esm/css/caseSearch.css +0 -114
  69. package/lib/esm/enums/case.d.ts +4 -10
  70. package/lib/esm/enums/case.d.ts.map +1 -1
  71. package/lib/esm/enums/case.js +3 -21
  72. package/lib/esm/enums/caseSearch.d.ts +0 -3
  73. package/lib/esm/enums/caseSearch.d.ts.map +1 -1
  74. package/lib/esm/enums/caseSearch.js +1 -2
  75. package/lib/esm/enums/filters.d.ts +1 -3
  76. package/lib/esm/enums/filters.d.ts.map +1 -1
  77. package/lib/esm/enums/filters.js +0 -2
  78. package/lib/esm/hooks/useCloseCase.d.ts.map +1 -1
  79. package/lib/esm/hooks/useCloseCase.js +21 -38
  80. package/lib/esm/hooks/useExportCaseListCSV.d.ts.map +1 -1
  81. package/lib/esm/hooks/useExportCaseListCSV.js +9 -1
  82. package/lib/esm/hooks/useFilterStateOnLoad.d.ts +1 -1
  83. package/lib/esm/hooks/useFilterStateOnLoad.d.ts.map +1 -1
  84. package/lib/esm/hooks/useFilterStateOnLoad.js +5 -7
  85. package/lib/esm/index.js +0 -1
  86. package/lib/esm/test-utils/mockData.js +1 -1
  87. package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
  88. package/lib/esm/utils/caseSearchUtils.js +2 -39
  89. package/lib/esm/utils/constants.d.ts +1 -5
  90. package/lib/esm/utils/constants.d.ts.map +1 -1
  91. package/lib/esm/utils/constants.js +2 -10
  92. package/lib/esm/utils/mockSolrResponse.js +1 -1
  93. package/package.json +8 -10
  94. package/lib/esm/components/case-list/case-list-filters/CaseLabelsFilter.d.ts +0 -3
  95. package/lib/esm/components/case-list/case-list-filters/CaseLabelsFilter.d.ts.map +0 -1
  96. package/lib/esm/components/case-list/case-list-filters/CaseLabelsFilter.js +0 -177
  97. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts +0 -8
  98. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts.map +0 -1
  99. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.js +0 -8
  100. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts +0 -10
  101. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts.map +0 -1
  102. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.js +0 -29
  103. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts +0 -10
  104. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts.map +0 -1
  105. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.js +0 -16
  106. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts +0 -9
  107. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts.map +0 -1
  108. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.js +0 -21
  109. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts +0 -12
  110. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts.map +0 -1
  111. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.js +0 -31
  112. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts +0 -10
  113. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts.map +0 -1
  114. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.js +0 -10
  115. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts +0 -10
  116. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts.map +0 -1
  117. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.js +0 -92
  118. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts +0 -9
  119. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts.map +0 -1
  120. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.js +0 -20
  121. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts +0 -9
  122. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts.map +0 -1
  123. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.js +0 -28
  124. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts +0 -9
  125. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts.map +0 -1
  126. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.js +0 -241
  127. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts +0 -11
  128. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts.map +0 -1
  129. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.js +0 -23
  130. package/lib/esm/hooks/useCaseLabels.d.ts +0 -14
  131. package/lib/esm/hooks/useCaseLabels.d.ts.map +0 -1
  132. package/lib/esm/hooks/useCaseLabels.js +0 -55
  133. package/lib/esm/utils/advanceSearchFormMapper.d.ts +0 -11
  134. package/lib/esm/utils/advanceSearchFormMapper.d.ts.map +0 -1
  135. package/lib/esm/utils/advanceSearchFormMapper.js +0 -71
  136. package/lib/esm/utils/advanceSearchUtils.d.ts +0 -24
  137. package/lib/esm/utils/advanceSearchUtils.d.ts.map +0 -1
  138. package/lib/esm/utils/advanceSearchUtils.js +0 -150
  139. package/lib/esm/utils/caseGroupDefaultFilterUtils.d.ts +0 -12
  140. package/lib/esm/utils/caseGroupDefaultFilterUtils.d.ts.map +0 -1
  141. package/lib/esm/utils/caseGroupDefaultFilterUtils.js +0 -34
  142. package/lib/esm/utils/caseGroupDefaultUtils.d.ts +0 -10
  143. package/lib/esm/utils/caseGroupDefaultUtils.d.ts.map +0 -1
  144. package/lib/esm/utils/caseGroupDefaultUtils.js +0 -20
  145. package/lib/esm/utils/caseListGraphQLUtils.d.ts +0 -28
  146. package/lib/esm/utils/caseListGraphQLUtils.d.ts.map +0 -1
  147. package/lib/esm/utils/caseListGraphQLUtils.js +0 -280
  148. package/lib/esm/utils/caseListMapper.d.ts +0 -6
  149. package/lib/esm/utils/caseListMapper.d.ts.map +0 -1
  150. package/lib/esm/utils/caseListMapper.js +0 -37
  151. package/lib/esm/utils/caseListVariablesBuilder.d.ts +0 -15
  152. package/lib/esm/utils/caseListVariablesBuilder.d.ts.map +0 -1
  153. package/lib/esm/utils/caseListVariablesBuilder.js +0 -517
@@ -7,10 +7,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { useApolloClient } from '@apollo/client/react';
11
- import { ToastNotification } from '@rh-support/components';
10
+ import { publicApi } from '@cee-eng/hydrajs';
11
+ import { ToastNotification, useFetch } from '@rh-support/components';
12
12
  import { useCanCreateCase } from '@rh-support/react-context';
13
- import { CREATE_CASE_COMMENT, dtmTrackEventCaseStepEncountered, sanitizeForSalesforce, updateCaseDetailsByGraphQL, } from '@rh-support/utils';
13
+ import { dtmTrackEventCaseStepEncountered } from '@rh-support/utils';
14
14
  import filter from 'lodash/filter';
15
15
  import find from 'lodash/find';
16
16
  import includes from 'lodash/includes';
@@ -21,9 +21,8 @@ const reflect = (p) => p.then((v) => ({ v, status: 'fulfilled' }), (e) => ({ e,
21
21
  export function useCloseCase(props) {
22
22
  const { caseList, selectedCases, onCasesCloseSuccess } = props;
23
23
  const { t } = useTranslation();
24
- const apolloClient = useApolloClient();
25
24
  const maxCasesSelected = (selectedCases || []).length > MAX_ALLOWED_CASES;
26
- const [isFetching, setIsFetching] = useState(false);
25
+ const { request, isFetching } = useFetch(publicApi.kase.updateCase);
27
26
  const closedCaseIds = filter(selectedCases, (selected) => {
28
27
  const caseDetails = find(caseList, (caseObj) => caseObj['case_number'] === selected);
29
28
  return caseDetails && caseDetails['case_status'] !== 'Closed' ? false : true;
@@ -39,7 +38,10 @@ export function useCloseCase(props) {
39
38
  isFetching;
40
39
  const [isModalOpen, setIsModalOpen] = useState(false);
41
40
  const canCreateCase = useCanCreateCase();
42
- const [isPostingComment, setIsPostingComment] = useState(false);
41
+ const { request: postCommentRequest, isFetching: isPostingComment } = useFetch(publicApi.kase.postComment, {
42
+ propgateErrors: true,
43
+ });
44
+ // To handle button click
43
45
  const onBtnClick = () => {
44
46
  if (canCreateCase.alert()) {
45
47
  return;
@@ -51,48 +53,29 @@ export function useCloseCase(props) {
51
53
  const onConfirm = (commentBody) => __awaiter(this, void 0, void 0, function* () {
52
54
  const promiseArr = [];
53
55
  setIsModalOpen(false);
54
- setIsFetching(true);
55
56
  const toastId = ToastNotification.addSuccessMessage(t(`Closing selected cases`));
56
- const casesToClose = filter(selectedCases, (selected) => !includes(closedCaseIds, selected));
57
- casesToClose.forEach((caseNumber) => {
58
- const caseDetails = find(caseList, (caseObj) => caseObj.case_number === caseNumber);
59
- if (!caseDetails)
60
- return;
61
- const salesforceCaseId = caseDetails.id;
62
- const product = caseDetails.case_product[0];
63
- const version = caseDetails.case_version;
64
- const p = updateCaseDetailsByGraphQL(apolloClient, salesforceCaseId, { Status: 'Closed' });
57
+ filter(selectedCases, (selected) => !includes(closedCaseIds, selected)).forEach((caseNumber, i) => {
58
+ const product = caseList[i].case_product[0];
59
+ const version = caseList[i].case_version;
60
+ const p = request(caseNumber, { status: 'Closed' });
65
61
  promiseArr.push(p);
66
- p.then(() => __awaiter(this, void 0, void 0, function* () {
67
- if (commentBody) {
68
- setIsPostingComment(true);
69
- try {
70
- yield apolloClient.mutate({
71
- mutation: CREATE_CASE_COMMENT,
72
- variables: {
73
- commentInput: {
74
- Case__c: salesforceCaseId,
75
- Body__c: sanitizeForSalesforce(commentBody),
76
- Visibility__c: 'Public',
77
- IsAssociate__c: false,
78
- },
79
- },
80
- });
81
- }
82
- finally {
83
- setIsPostingComment(false);
84
- }
85
- }
62
+ p.then((res) => __awaiter(this, void 0, void 0, function* () {
63
+ yield postCommentRequest({
64
+ caseNumber,
65
+ commentBody,
66
+ contentType: `markdown`,
67
+ doNotChangeStatus: true,
68
+ });
86
69
  ToastNotification.clearToast(toastId);
87
70
  ToastNotification.addSuccessMessage(t('Case {{caseNumber}} successfully closed', { caseNumber }));
71
+ // Only call dtm track event only when the case has been closed successfully.
88
72
  dtmTrackEventCaseStepEncountered('close', caseNumber, product, version);
89
- }), () => {
73
+ }), (err) => {
90
74
  ToastNotification.clearToast(toastId);
91
75
  ToastNotification.addDangerMessage(t('Could not close case {{caseNumber}}', { caseNumber }));
92
76
  });
93
77
  });
94
78
  yield Promise.all(promiseArr.map(reflect));
95
- setIsFetching(false);
96
79
  onCasesCloseSuccess && onCasesCloseSuccess();
97
80
  });
98
81
  const onCancel = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useExportCaseListCSV.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExportCaseListCSV.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,eAAO,MAAM,SAAS,OAAO,CAAC;AAC9B,MAAM,WAAW,qBAAqB;IAClC,uBAAuB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC1D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB;;;;;;EA+BhE"}
1
+ {"version":3,"file":"useExportCaseListCSV.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExportCaseListCSV.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,eAAO,MAAM,SAAS,OAAO,CAAC;AAC9B,MAAM,WAAW,qBAAqB;IAClC,uBAAuB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC1D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB;;;;;;EAqChE"}
@@ -1,12 +1,18 @@
1
+ import { useFetch } from '@rh-support/components';
1
2
  import { useState } from 'react';
2
3
  import { useTranslation } from 'react-i18next';
4
+ import { getCaseListFromSolr } from '../utils/caseListUtils';
3
5
  export const MAX_LIMIT = 1000;
4
6
  export function useExportCaseListCSV(props) {
5
7
  const { isExportCsvDisabled, selectedCases } = props;
6
8
  const { t } = useTranslation();
9
+ // const currentFilteredCaseCount = currentFilteredCaseList?.numFound ?? 0;
10
+ const { isFetching } = useFetch(getCaseListFromSolr, { propgateErrors: true });
7
11
  const [openUpdateSeverityModal, setOpenUpdateSeverityModal] = useState(false);
12
+ const isFetchingCSVData = isFetching;
8
13
  let showError = selectedCases.length > MAX_LIMIT;
9
- const isBtnDisabled = showError;
14
+ const isBtnDisabled = isFetchingCSVData || showError;
15
+ // To show tooltip if export csv is disabled when SOLR is down
10
16
  const getTooltipContent = () => {
11
17
  let tooltipText = t('Your download will include the first 1000 cases in your list.');
12
18
  if (showError) {
@@ -17,7 +23,9 @@ export function useExportCaseListCSV(props) {
17
23
  }
18
24
  return tooltipText;
19
25
  };
26
+ // To check if export csv button is disabled
20
27
  const isExportButtonDisabled = isBtnDisabled || isExportCsvDisabled;
28
+ // To toggle download csv modal
21
29
  const toggleDownloadCSVModal = () => {
22
30
  setOpenUpdateSeverityModal((openUpdateSeverityModal) => !openUpdateSeverityModal);
23
31
  };
@@ -1,6 +1,6 @@
1
1
  import { CaseSearchQueryType } from '../enums/caseSearch';
2
2
  export declare function useFilterStateOnLoad(): {
3
- set: (queryFromUrl: string, pageSizeFromUrl: number | undefined, currentPageFromUrl: number, searchType: CaseSearchQueryType) => {
3
+ set: (queryFromUrl: string, pageSizeFromUrl: number, currentPageFromUrl: number, searchType: CaseSearchQueryType) => {
4
4
  initFilterState: any;
5
5
  defaultSearchName: string;
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useFilterStateOnLoad.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFilterStateOnLoad.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAU1D,wBAAgB,oBAAoB;wBAkBd,MAAM,mBACH,MAAM,GAAG,SAAS,sBACf,MAAM,cACd,mBAAmB;;;;EAiEtC"}
1
+ {"version":3,"file":"useFilterStateOnLoad.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFilterStateOnLoad.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK1D,wBAAgB,oBAAoB;wBAkBd,MAAM,mBACH,MAAM,sBACH,MAAM,cACd,mBAAmB;;;;EA+DtC"}
@@ -4,7 +4,6 @@ import findKey from 'lodash/findKey';
4
4
  import { useContext, useMemo } from 'react';
5
5
  import { CaseListFilterStateContext, initialCaseFilterState } from '../components/case-list/CaseListFilterContext';
6
6
  import { SolrKeys } from '../enums/filters';
7
- import { decodeCaseListUrlFilterQuery, getDefaultGroupFilterSelection, shouldApplyDefaultGroupFilter, } from '../utils/caseGroupDefaultFilterUtils';
8
7
  import { createFilterStateFromUrlQuery } from '../utils/caseSearchUtils';
9
8
  // TODO Comment
10
9
  export function useFilterStateOnLoad() {
@@ -13,15 +12,14 @@ export function useFilterStateOnLoad() {
13
12
  const savesSearches = find(hydraUserPreferences.data, (pref) => pref.key === UserPreferencesKeys.caseSavedSearchFilters);
14
13
  const savedSearchesObj = useMemo(() => ((savesSearches === null || savesSearches === void 0 ? void 0 : savesSearches.value) ? JSON.parse(savesSearches.value) : {}), [savesSearches]);
15
14
  const set = (queryFromUrl, pageSizeFromUrl, currentPageFromUrl, searchType) => {
16
- var _a;
17
15
  let savedSearchFilterState = null;
18
16
  const defaultSavedSearchKey = findKey(savedSearchesObj, { defaultChecked: true });
19
17
  if (defaultSavedSearchKey) {
20
18
  const { filterState: filterStateSaved, queryString, type, sortState, } = savedSearchesObj[defaultSavedSearchKey];
21
19
  savedSearchFilterState = Object.assign(Object.assign({}, filterState), { sortInfo: sortState, filterQueryInfo: Object.assign(Object.assign({}, filterState.filterQueryInfo), { queryString, type }), filterInfo: Object.assign(Object.assign({}, initialCaseFilterState.filterInfo), filterStateSaved) });
22
20
  }
23
- const defaultGroupFilter = getDefaultGroupFilterSelection(caseGroups.data, (_a = globalMetadataState.loggedInUser) === null || _a === void 0 ? void 0 : _a.data);
24
- const applyDefaultGroup = shouldApplyDefaultGroupFilter(queryFromUrl, hydraUserPreferences.data);
21
+ const defaultGroup = (caseGroups.data || []).find((group) => group.isDefault);
22
+ const [urlQuery] = (queryFromUrl || '').split(/ orderBy /i);
25
23
  /**
26
24
  When user lands on page for the first time:
27
25
  If we have any query in url(for example redirect from dashboard), we apply the query, if not
@@ -29,12 +27,12 @@ export function useFilterStateOnLoad() {
29
27
  check if user has default group the apply group filter,
30
28
  non of the above, we apply default search values
31
29
  */
32
- let defaultFilterState = decodeCaseListUrlFilterQuery(queryFromUrl)
30
+ let defaultFilterState = urlQuery && urlQuery !== 'undefined'
33
31
  ? createFilterStateFromUrlQuery(queryFromUrl, globalMetadataState, pageSizeFromUrl, currentPageFromUrl, searchType)
34
32
  : defaultSavedSearchKey
35
33
  ? savedSearchFilterState
36
- : applyDefaultGroup && defaultGroupFilter.length > 0
37
- ? Object.assign(Object.assign({}, filterState), { filterInfo: Object.assign(Object.assign({}, filterState.filterInfo), { [SolrKeys.group]: defaultGroupFilter }) }) : filterState;
34
+ : !!(defaultGroup === null || defaultGroup === void 0 ? void 0 : defaultGroup.name)
35
+ ? Object.assign(Object.assign({}, filterState), { filterInfo: Object.assign(Object.assign({}, filterState.filterInfo), { [SolrKeys.group]: [{ key: defaultGroup.groupNum, value: defaultGroup.name }] }) }) : filterState;
38
36
  return {
39
37
  initFilterState: defaultFilterState,
40
38
  defaultSearchName: defaultSavedSearchKey && !queryFromUrl ? defaultSavedSearchKey : '',
package/lib/esm/index.js CHANGED
@@ -1,4 +1,3 @@
1
1
  // test
2
2
  import './scss/index.scss';
3
3
  export { Cases } from './components';
4
- // dummy change for publish
@@ -740,7 +740,7 @@ export const filterValuesFromFacetResponseMock = {
740
740
  count: 111,
741
741
  },
742
742
  {
743
- value: '3 (Medium)',
743
+ value: '3 (Normal)',
744
744
  count: 12198,
745
745
  },
746
746
  {
@@ -1 +1 @@
1
- {"version":3,"file":"caseSearchUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseSearchUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAkBxD,OAAO,EACH,oBAAoB,EACpB,WAAW,EAId,MAAM,+CAA+C,CAAC;AAOvD,OAAO,EAEH,mBAAmB,EAEtB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,6BAA6B,UAAU,CAAC;AACrD,eAAO,MAAM,oCAAoC,MAAM,CAAC;AACxD,eAAO,MAAM,iCAAiC,SAAS,CAAC;AACxD,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,aAAa,GAAE,MAAM,EAAO,OAgE/B;AAED,iBAAS,sCAAsC,CAC3C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,OAAe,UA2BnC;AAED,iBAAS,oDAAoD,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,UA+DlH;AAkBD,iBAAS,wCAAwC,CAC7C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,eAAe,QAAK,UA6BvB;AASD,iBAAS,yBAAyB,CAC9B,WAAW,EAAE,oBAAoB,EACjC,kBAAkB,EAAE,QAAQ,EAC5B,oBAAoB,KAAA,EACpB,aAAa,GAAE,MAAM,EAAO,EAC5B,UAAU,SAAI,EACd,UAAU,SAAO,OAoBpB;AAkBD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,EACtC,aAAa,GAAE,MAAM,EAAO,GAC7B,OAAO,CAAC,eAAe,CAAC,CAkE1B;AAED,iBAAS,6BAA6B,CAAC,QAAQ,GAAE,qBAAqB,EAAO,GAAG,qBAAqB,EAAE,CAEtG;AAoBD,iBAAS,6BAA6B,CAAC,WAAW,EAAE,oBAAoB,UAUvE;AAED,iBAAS,6BAA6B,CAClC,QAAQ,EAAE,MAAM,EAChB,mBAAmB,EAAE,oBAAoB,EACzC,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,GAAE,mBAA+C,wBA0D9D;AAGD,iBAAS,kCAAkC,CACvC,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,oBAAoB,EACzC,kBAAkB,EAAE,oBAAoB,EACxC,WAAW,GAAE,MAAW,EACxB,IAAI,GAAE,mBAA+C,wBAiExD;AAqMD,OAAO,EACH,8BAA8B,EAC9B,sCAAsC,EACtC,oDAAoD,EACpD,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,wCAAwC,EACxC,kCAAkC,GACrC,CAAC"}
1
+ {"version":3,"file":"caseSearchUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseSearchUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAkBxD,OAAO,EACH,oBAAoB,EACpB,WAAW,EAId,MAAM,+CAA+C,CAAC;AAOvD,OAAO,EAEH,mBAAmB,EAEtB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,6BAA6B,UAAU,CAAC;AACrD,eAAO,MAAM,oCAAoC,MAAM,CAAC;AACxD,eAAO,MAAM,iCAAiC,SAAS,CAAC;AACxD,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,aAAa,GAAE,MAAM,EAAO,OAgE/B;AAED,iBAAS,sCAAsC,CAC3C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,OAAe,UA2BnC;AAED,iBAAS,oDAAoD,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,UA+DlH;AAkBD,iBAAS,wCAAwC,CAC7C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,eAAe,QAAK,UA6BvB;AASD,iBAAS,yBAAyB,CAC9B,WAAW,EAAE,oBAAoB,EACjC,kBAAkB,EAAE,QAAQ,EAC5B,oBAAoB,KAAA,EACpB,aAAa,GAAE,MAAM,EAAO,EAC5B,UAAU,SAAI,EACd,UAAU,SAAO,OAoBpB;AAkBD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,EACtC,aAAa,GAAE,MAAM,EAAO,GAC7B,OAAO,CAAC,eAAe,CAAC,CAkE1B;AAED,iBAAS,6BAA6B,CAAC,QAAQ,GAAE,qBAAqB,EAAO,GAAG,qBAAqB,EAAE,CAEtG;AAoBD,iBAAS,6BAA6B,CAAC,WAAW,EAAE,oBAAoB,UAUvE;AAED,iBAAS,6BAA6B,CAClC,QAAQ,EAAE,MAAM,EAChB,mBAAmB,EAAE,oBAAoB,EACzC,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,GAAE,mBAA+C,wBAsD9D;AAGD,iBAAS,kCAAkC,CACvC,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,oBAAoB,EACzC,kBAAkB,EAAE,oBAAoB,EACxC,WAAW,GAAE,MAAW,EACxB,IAAI,GAAE,mBAA+C,wBA6DxD;AA0KD,OAAO,EACH,8BAA8B,EAC9B,sCAAsC,EACtC,oDAAoD,EACpD,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,wCAAwC,EACxC,kCAAkC,GACrC,CAAC"}
@@ -328,7 +328,6 @@ function createURLQueryFromFilterState(filterState) {
328
328
  return finalQuery;
329
329
  }
330
330
  function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize, currentPage, searchType = CaseSearchQueryType.BASIC) {
331
- var _a;
332
331
  const { paginationInfo: defaultPaginationInfo, sortInfo: defaultSortInfo, filterInfo: defaultFilterInfo, filterQueryInfo: defaultFilterQueryInfo, } = initialCaseFilterState;
333
332
  const [filters = '', sortQuery] = (urlQuery || '').split(/orderBy/i);
334
333
  const paginationInfoFromUrl = {
@@ -342,7 +341,7 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
342
341
  sortInfo = { column, direction: direction };
343
342
  }
344
343
  const filterInfo = {};
345
- const _b = parseSolrQuery(filters), { keyword: queryString = [''] } = _b, restFilters = __rest(_b, ["keyword"]);
344
+ const _a = parseSolrQuery(filters), { keyword: queryString = [''] } = _a, restFilters = __rest(_a, ["keyword"]);
346
345
  const filterQueryInfo = merge({}, defaultFilterQueryInfo, {
347
346
  queryString: queryString[0].replace(/\\"/g, '"'),
348
347
  type: searchType,
@@ -359,9 +358,6 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
359
358
  }
360
359
  }
361
360
  });
362
- if ((_a = filterInfo[SolrPivotKeys.product_version]) === null || _a === void 0 ? void 0 : _a.length) {
363
- enrichProductFilterWithIds(filterInfo[SolrPivotKeys.product_version], globalMetadataState);
364
- }
365
361
  const parsedQuery = filterQueryInfo.type === CaseSearchQueryType.ADVANCED
366
362
  ? createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo, filterQueryInfo.queryString)
367
363
  : '';
@@ -375,7 +371,6 @@ function createFilterStateFromUrlQuery(urlQuery, globalMetadataState, pageSize,
375
371
  }
376
372
  // advanced query
377
373
  function createFilterStateFromAdvancedQuery(queryString, globalMetadataState, currentFilterState, parsedQuery = '', type = CaseSearchQueryType.BASIC) {
378
- var _a;
379
374
  const filterObj = parseSolrQuery(queryString);
380
375
  const newFilterInfo = {};
381
376
  let advanceToBasicQuery = [];
@@ -428,9 +423,6 @@ function createFilterStateFromAdvancedQuery(queryString, globalMetadataState, cu
428
423
  }
429
424
  delete newFilterInfo[SolrKeys.version];
430
425
  }
431
- if ((_a = newFilterInfo[SolrPivotKeys.product_version]) === null || _a === void 0 ? void 0 : _a.length) {
432
- enrichProductFilterWithIds(newFilterInfo[SolrPivotKeys.product_version], globalMetadataState);
433
- }
434
426
  const filterState = Object.assign(Object.assign({}, currentFilterState), { filterQueryInfo: Object.assign(Object.assign({}, currentFilterState.filterQueryInfo), { queryString: advanceToBasicQuery.join(' AND '), parsedQuery,
435
427
  type }), filterInfo: Object.assign(Object.assign({}, initialCaseFilterState.filterInfo), newFilterInfo) });
436
428
  return filterState;
@@ -454,18 +446,9 @@ function getValidValues(solrFieldName, itemValues = [], globalMetadataState) {
454
446
  return acc;
455
447
  }, {});
456
448
  itemValues.forEach((item) => {
457
- if (caseGroupsMap[item]) {
458
- mappedValues.push({ key: item, value: caseGroupsMap[item] });
459
- }
460
- else if (item && /^\d+$/.test(item)) {
461
- console.warn(`[CaseSearch] Ignoring stale numeric group filter "${item}" from URL/saved search — group IDs are now Salesforce record IDs`);
462
- }
449
+ caseGroupsMap[item] && mappedValues.push({ key: item, value: caseGroupsMap[item] });
463
450
  });
464
451
  }
465
- else if (solrFieldName === SolrKeys.caseLabel) {
466
- // Label names are resolved later by CaseLabelsFilter once account labels load
467
- mappedValues = itemValues.map((item) => ({ key: item, value: item }));
468
- }
469
452
  else if (solrFieldName === SolrKeys.accountNumber) {
470
453
  // when we go live with grouped bookmark, bookmarkedAccounts needs to be removed
471
454
  let bookmarkedAccountsMap = (((_b = globalMetadataState.bookmarkedAccounts) === null || _b === void 0 ? void 0 : _b.data) || []).reduce((acc, { accountNumber, name }) => {
@@ -517,9 +500,6 @@ function getValidValuesAdvancedSearch(solrFieldName, itemValues = [], globalMeta
517
500
  caseGroupsMap[item] && mappedValues.push({ key: caseGroupsMap[item], value: item });
518
501
  });
519
502
  }
520
- else if (solrFieldName === SolrKeys.caseLabel) {
521
- mappedValues = itemValues.map((item) => ({ key: item, value: item }));
522
- }
523
503
  else if (solrFieldName === SolrKeys.accountNumber) {
524
504
  let bookmarkedAccountsMap = (((_b = globalMetadataState.bookmarkedAccounts) === null || _b === void 0 ? void 0 : _b.data) || []).reduce((acc, { accountNumber, name }) => {
525
505
  acc[accountNumber] = getLabel(accountNumber, name);
@@ -576,21 +556,4 @@ function generateProductVersionPivotValue(values) {
576
556
  };
577
557
  });
578
558
  }
579
- /**
580
- * Enriches product filter objects (from URL) with their parent Product2 IDs
581
- * by matching product names against the allProducts metadata loaded at startup.
582
- * This allows buildProductFilter to use ParentProduct__c when version IDs aren't yet resolved.
583
- */
584
- function enrichProductFilterWithIds(products, globalMetadataState) {
585
- var _a, _b;
586
- const allProductsList = ((_b = (_a = globalMetadataState === null || globalMetadataState === void 0 ? void 0 : globalMetadataState.allProducts) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.productsResult) || [];
587
- products.forEach((prod) => {
588
- if (prod.productId)
589
- return;
590
- const matched = allProductsList.find((p) => p.name === prod.value || p.product === prod.value);
591
- if (matched === null || matched === void 0 ? void 0 : matched.productId) {
592
- prod.productId = matched.productId;
593
- }
594
- });
595
- }
596
559
  export { createSolrQueryFromFilterState, createUserFriendlyQueryFromFilterState, createUserFriendlyQueryFromFilterStateAdvancedSearch, createQueryForCSVDownload, createSFDCQueryFromFilterState, mapSFDCCaseListToSolrCaseList, createURLQueryFromFilterState, createFilterStateFromUrlQuery, createAdvancedSearchQueryFromFilterState, createFilterStateFromAdvancedQuery, };
@@ -1,9 +1,7 @@
1
- export { PORTAL_STATUS_GROUPS, PORTAL_DISPLAY_STATUSES, PORTAL_USER_SELECTABLE_STATUSES, PORTAL_OPEN_DISPLAY_STATUSES, } from '@rh-support/utils';
2
1
  export declare const filterNamesMap: {
3
2
  readonly case_status: any;
4
3
  readonly case_severity: any;
5
4
  readonly case_folderNumber: any;
6
- readonly case_label: any;
7
5
  readonly case_accountNumber: any;
8
6
  readonly case_summary: any;
9
7
  readonly case_customer_escalation: any;
@@ -18,9 +16,7 @@ export declare const filterNamesMap: {
18
16
  readonly case_createdby_sso_username: any;
19
17
  readonly case_contact_sso_username: any;
20
18
  readonly case_type: any;
21
- readonly case_alternate_id: any;
22
- readonly case_openshift_cluster_id: any;
19
+ readonly case_private: any;
23
20
  readonly usernameFilterTitle: any;
24
21
  };
25
- export declare const UpdatedCaseDataEvent = "PCM-Next > case-list-data-background-refresh";
26
22
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,oBAAoB,EACpB,uBAAuB,EACvB,+BAA+B,EAC/B,4BAA4B,GAC/B,MAAM,mBAAmB,CAAC;AAI3B,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;CAgE1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,iDAAiD,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;CA0D1B,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import i18n from 'i18next';
2
2
  import { SolrKeys } from '../enums/filters';
3
- export { PORTAL_STATUS_GROUPS, PORTAL_DISPLAY_STATUSES, PORTAL_USER_SELECTABLE_STATUSES, PORTAL_OPEN_DISPLAY_STATUSES, } from '@rh-support/utils';
4
3
  // used for adding title text for different solr fields
5
4
  // test
6
5
  export const filterNamesMap = {
@@ -13,9 +12,6 @@ export const filterNamesMap = {
13
12
  get [SolrKeys.group]() {
14
13
  return i18n.t('Groups');
15
14
  },
16
- get [SolrKeys.caseLabel]() {
17
- return i18n.t('Case labels');
18
- },
19
15
  get [SolrKeys.accountNumber]() {
20
16
  return i18n.t('Bookmarks');
21
17
  },
@@ -58,14 +54,10 @@ export const filterNamesMap = {
58
54
  get [SolrKeys.type]() {
59
55
  return i18n.t('Support type');
60
56
  },
61
- get [SolrKeys.alternateId]() {
62
- return i18n.t('Personal reference number');
63
- },
64
- get [SolrKeys.openshiftClusterId]() {
65
- return i18n.t('Cluster ID');
57
+ get [SolrKeys.isPrivate]() {
58
+ return i18n.t('Private');
66
59
  },
67
60
  get usernameFilterTitle() {
68
61
  return i18n.t('Username');
69
62
  },
70
63
  };
71
- export const UpdatedCaseDataEvent = 'PCM-Next > case-list-data-background-refresh';
@@ -319,7 +319,7 @@ export const mockSolrResponse = {
319
319
  'dfisher dummy test',
320
320
  0,
321
321
  ],
322
- case_severity: ['1 (Urgent)', 2335, '2 (High)', 158, '3 (Medium)', 5984, '4 (Low)', 9338],
322
+ case_severity: ['1 (Urgent)', 2335, '2 (High)', 158, '3 (Normal)', 5984, '4 (Low)', 9338],
323
323
  case_status: ['Closed', 6348, 'Waiting on Customer', 8, 'Waiting on Red Hat', 11459],
324
324
  },
325
325
  facet_ranges: {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/cases",
3
- "version": "2.6.218",
3
+ "version": "2.6.227",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -22,6 +22,7 @@
22
22
  "lib/**/*"
23
23
  ],
24
24
  "peerDependencies": {
25
+ "@cee-eng/hydrajs": "4.18.111",
25
26
  "@patternfly/patternfly": "6.2.1",
26
27
  "@patternfly/react-core": "6.2.1",
27
28
  "@patternfly/react-table": "6.2.1",
@@ -34,28 +35,25 @@
34
35
  "solr-query-builder": "1.0.1"
35
36
  },
36
37
  "dependencies": {
37
- "@cee-eng/hydrajs": "^4.18.114",
38
+ "@cee-eng/hydrajs": "4.18.111",
38
39
  "@patternfly/patternfly": "6.2.1",
39
40
  "@patternfly/react-core": "6.2.1",
40
41
  "@patternfly/react-table": "6.2.1",
41
- "@rh-support/components": "2.5.213",
42
- "@rh-support/react-context": "2.5.308",
42
+ "@rh-support/components": "2.5.222",
43
+ "@rh-support/react-context": "2.5.318",
43
44
  "@rh-support/types": "2.0.26",
44
- "@rh-support/user-permissions": "2.5.160",
45
- "@rh-support/utils": "2.5.141",
45
+ "@rh-support/user-permissions": "2.5.170",
46
+ "@rh-support/utils": "2.5.149",
46
47
  "localforage": "^1.10.0",
47
48
  "lodash": "^4.17.21",
48
49
  "pegjs": "^0.10.0",
49
50
  "react": "18.2.0",
50
51
  "react-dom": "18.2.0",
51
52
  "react-i18next": "15.6.0",
52
- "react-intersection-observer": "^10.0.3",
53
53
  "react-router-dom": "^5.1.2",
54
54
  "solr-query-builder": "1.0.1"
55
55
  },
56
56
  "devDependencies": {
57
- "@patternfly/react-styles": "^6.2.1",
58
- "@patternfly/react-tokens": "^6.2.1",
59
57
  "@testing-library/jest-dom": "^6.2.0",
60
58
  "@testing-library/react": "^14.1.2",
61
59
  "@testing-library/user-event": "^14.5.1",
@@ -94,5 +92,5 @@
94
92
  "defaults and supports es6-module",
95
93
  "maintained node versions"
96
94
  ],
97
- "gitHead": "62d92ed52ff1bf81a6103af96c29e96442da5963"
95
+ "gitHead": "cc1c26280084d477ee0abcec8d46963c8213b783"
98
96
  }
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare function CaseLabelsFilter(): React.JSX.Element;
3
- //# sourceMappingURL=CaseLabelsFilter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CaseLabelsFilter.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-filters/CaseLabelsFilter.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAYhF,wBAAgB,gBAAgB,sBAiQ/B"}
@@ -1,177 +0,0 @@
1
- import { MenuFooter, MenuToggle, Select, SelectList, SelectOption, TextInputGroup, TextInputGroupMain, } from '@patternfly/react-core';
2
- import { GlobalMetadataStateContext } from '@rh-support/react-context';
3
- import { ability, resourceActions, resources } from '@rh-support/user-permissions';
4
- import { getDropdownBtnPlaceholder } from '@rh-support/utils';
5
- import isEmpty from 'lodash/isEmpty';
6
- import isEqual from 'lodash/isEqual';
7
- import isUndefined from 'lodash/isUndefined';
8
- import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
9
- import { Trans, useTranslation } from 'react-i18next';
10
- import { Link } from 'react-router-dom';
11
- import { SolrKeys } from '../../../enums/filters';
12
- import { useCaseLabels } from '../../../hooks/useCaseLabels';
13
- import { filterNamesMap } from '../../../utils/constants';
14
- import { CaseListFilterDispatchContext, CaseListFilterStateContext } from '../CaseListFilterContext';
15
- import { updateFilter } from '../CaseListFilterReducer';
16
- const EMPTY_LABELS = [];
17
- export function CaseLabelsFilter() {
18
- var _a, _b;
19
- const { t } = useTranslation();
20
- const { filterInfo } = useContext(CaseListFilterStateContext);
21
- const dispatch = useContext(CaseListFilterDispatchContext);
22
- const { globalMetadataState: { loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
23
- const accountId = (_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.salesforceAccountId;
24
- const { labels, loading: isLoading } = useCaseLabels(accountId);
25
- const selectedLabels = (_b = filterInfo === null || filterInfo === void 0 ? void 0 : filterInfo[SolrKeys.caseLabel]) !== null && _b !== void 0 ? _b : EMPTY_LABELS;
26
- const [inputValue, setInputValue] = useState('');
27
- const [focusedItemIndex, setFocusedItemIndex] = useState(null);
28
- const [activeItem, setActiveItem] = useState(null);
29
- const [isOpen, setIsOpen] = useState(false);
30
- const [selectedItems, setSelectedItems] = useState({});
31
- const textInputRef = useRef();
32
- const list = useMemo(() => labels.map((label) => ({ value: label.name, key: label.id })), [labels]);
33
- const [selectOptions, setSelectOptions] = useState(list);
34
- const canViewManageTab = ability.can(resourceActions.READ, resources.MANAGE);
35
- const applyLabelSelection = (updatedFilterValues) => {
36
- updateFilter(dispatch, {
37
- filterKey: SolrKeys.caseLabel,
38
- values: updatedFilterValues,
39
- });
40
- };
41
- const isOptionSelected = (option) => Boolean((option.value && selectedItems[String(option.value)]) || (option.key && selectedItems[String(option.key)]));
42
- const onToggleClick = () => {
43
- setIsOpen(!isOpen);
44
- };
45
- const onSelect = (option) => {
46
- const selectedOption = typeof option === 'string' ? list.find((item) => item.value === option || item.key === option) : option;
47
- const optionValue = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value;
48
- const optionKey = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.key;
49
- if (!optionValue || optionValue === 'no results' || !optionKey) {
50
- return;
51
- }
52
- const currentlySelected = selectedLabels.some((label) => label.key === optionKey);
53
- const updatedFilterValues = currentlySelected
54
- ? selectedLabels.filter((label) => label.key !== optionKey)
55
- : [
56
- ...selectedLabels.filter((label) => label.key !== optionKey),
57
- { key: String(optionKey), value: String(optionValue) },
58
- ];
59
- applyLabelSelection(updatedFilterValues);
60
- };
61
- const handleMenuArrowKeys = (key) => {
62
- if (!isOpen || !list.length) {
63
- return;
64
- }
65
- let indexToFocus = 0;
66
- if (key === 'ArrowUp') {
67
- if (focusedItemIndex === null || focusedItemIndex === 0) {
68
- indexToFocus = list.length - 1;
69
- }
70
- else {
71
- indexToFocus = focusedItemIndex - 1;
72
- }
73
- }
74
- if (key === 'ArrowDown') {
75
- if (focusedItemIndex === null || focusedItemIndex === list.length - 1) {
76
- indexToFocus = 0;
77
- }
78
- else {
79
- indexToFocus = focusedItemIndex + 1;
80
- }
81
- }
82
- setFocusedItemIndex(indexToFocus);
83
- const focusedItem = list[indexToFocus];
84
- if (focusedItem === null || focusedItem === void 0 ? void 0 : focusedItem.value) {
85
- setActiveItem(`select-multi-typeahead-checkbox-${String(focusedItem.value).replace(' ', '-')}`);
86
- }
87
- };
88
- const onInputKeyDown = (event) => {
89
- const focusedItem = focusedItemIndex !== null ? list[focusedItemIndex] : list[0];
90
- switch (event.key) {
91
- case 'Enter':
92
- if (!isOpen) {
93
- setIsOpen((prevIsOpen) => !prevIsOpen);
94
- }
95
- else if (isOpen && (focusedItem === null || focusedItem === void 0 ? void 0 : focusedItem.value) !== 'no results') {
96
- onSelect(focusedItem);
97
- }
98
- break;
99
- case 'Tab':
100
- case 'Escape':
101
- setIsOpen(false);
102
- setActiveItem(null);
103
- break;
104
- case 'ArrowUp':
105
- case 'ArrowDown':
106
- event.preventDefault();
107
- handleMenuArrowKeys(event.key);
108
- break;
109
- }
110
- };
111
- const onTextInputChange = (_event, value) => {
112
- setInputValue(value);
113
- };
114
- const placeholder = getDropdownBtnPlaceholder(isLoading ? t('Loading...') : t('Select a case label'), selectedLabels.map((label) => label.value), '', labels.length || 0, t('All selected'));
115
- const toggle = (toggleRef) => (React.createElement(MenuToggle, { variant: "typeahead", onClick: onToggleClick, innerRef: toggleRef, isExpanded: isOpen, isFullWidth: true },
116
- React.createElement(TextInputGroup, { isPlain: true },
117
- React.createElement(TextInputGroupMain, Object.assign({ value: inputValue, onClick: onToggleClick, onChange: onTextInputChange, onKeyDown: onInputKeyDown, id: "case-list-case-label-filter-input", autoComplete: "off", innerRef: textInputRef, placeholder: placeholder }, (activeItem && { 'aria-activedescendant': activeItem }), { role: "combobox", isExpanded: isOpen, "aria-controls": "case-list-case-label-filter-listbox" })))));
118
- const dropdownOptions = useMemo(() => {
119
- return (!isEmpty(selectOptions) ? selectOptions : list).map((option, index) => !isUndefined(option.value) && (React.createElement(SelectOption, { key: option.key, value: option, hasCheckbox: true, isSelected: isOptionSelected(option), isFocused: focusedItemIndex !== null && focusedItemIndex === index, id: `select-multi-typeahead-${String(option.value).replace(' ', '-')}` }, option.value)));
120
- // eslint-disable-next-line react-hooks/exhaustive-deps
121
- }, [selectedItems, selectedLabels, labels, selectOptions, focusedItemIndex]);
122
- useEffect(() => {
123
- let newSelectOptions = list;
124
- if (inputValue) {
125
- newSelectOptions = list.filter((option) => String(option === null || option === void 0 ? void 0 : option.value).toLowerCase().startsWith(inputValue.toLowerCase()));
126
- if (!newSelectOptions.length) {
127
- newSelectOptions = [{ isDisabled: false, children: `No results found` }];
128
- }
129
- if (!isOpen) {
130
- setIsOpen(true);
131
- }
132
- }
133
- setSelectOptions(newSelectOptions);
134
- setFocusedItemIndex(null);
135
- setActiveItem(null);
136
- // eslint-disable-next-line react-hooks/exhaustive-deps
137
- }, [inputValue, list]);
138
- useEffect(() => {
139
- if (isEmpty(selectedLabels)) {
140
- setSelectedItems({});
141
- return;
142
- }
143
- const nextSelectedItems = selectedLabels.reduce((selection, label) => {
144
- if (label === null || label === void 0 ? void 0 : label.value) {
145
- selection[label.value] = true;
146
- }
147
- if (label === null || label === void 0 ? void 0 : label.key) {
148
- selection[label.key] = true;
149
- }
150
- return selection;
151
- }, {});
152
- setSelectedItems(nextSelectedItems);
153
- }, [selectedLabels]);
154
- // Resolve deep-linked label IDs to display names once account labels are loaded
155
- useEffect(() => {
156
- if (!labels.length || !selectedLabels.length) {
157
- return;
158
- }
159
- const resolved = selectedLabels.map((selected) => {
160
- const match = labels.find((label) => label.id === selected.key || label.name === selected.value);
161
- return match ? { key: match.id, value: match.name } : selected;
162
- });
163
- if (!isEqual(resolved, selectedLabels)) {
164
- applyLabelSelection(resolved);
165
- }
166
- // eslint-disable-next-line react-hooks/exhaustive-deps
167
- }, [labels, selectedLabels]);
168
- return (React.createElement("div", { className: "case-labels-filter group-filter", "data-testid": "case-labels-filter" },
169
- React.createElement("label", { htmlFor: "case-list-case-label-filter", className: "pf-v6-u-mb-sm group-filter-label" }, t(filterNamesMap[SolrKeys.caseLabel])),
170
- React.createElement("div", { className: "pf-v6-c-select" },
171
- React.createElement(Select, { shouldFocusToggleOnSelect: true, shouldPreventScrollOnItemFocus: true, "data-tracking-id": "case-labels-filter", id: "case-list-case-label-filter", title: t(filterNamesMap[SolrKeys.caseLabel]), isOpen: isOpen, selected: selectedItems, onSelect: (_e, v) => onSelect(v), onOpenChange: (nextOpen) => setIsOpen(nextOpen), popperProps: { direction: 'down', enableFlip: false }, toggle: toggle, isScrollable: true },
172
- React.createElement(SelectList, null,
173
- dropdownOptions,
174
- canViewManageTab && (React.createElement(MenuFooter, { className: "group-filter-manage-groups-footer" },
175
- React.createElement(Link, { className: "cta cta-link", to: "/manage/case-labels" },
176
- React.createElement(Trans, null, "Manage case labels")))))))));
177
- }
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- interface IProps {
3
- appliedFilterCount: number;
4
- onClick: () => void;
5
- }
6
- export declare function AdvanceSearchToggleButton({ appliedFilterCount, onClick }: IProps): React.JSX.Element;
7
- export {};
8
- //# sourceMappingURL=AdvanceSearchToggleButton.d.ts.map