@rh-support/cases 2.6.219 → 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 (162) 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 +55 -88
  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 +0 -1
  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 +22 -183
  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 -3
  78. package/lib/esm/enums/filters.d.ts.map +1 -1
  79. package/lib/esm/enums/filters.js +0 -2
  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 -177
  103. package/lib/esm/components/case-list/case-list-table/CaseListLabelGroup.d.ts +0 -9
  104. package/lib/esm/components/case-list/case-list-table/CaseListLabelGroup.d.ts.map +0 -1
  105. package/lib/esm/components/case-list/case-list-table/CaseListLabelGroup.js +0 -105
  106. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts +0 -8
  107. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts.map +0 -1
  108. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.js +0 -8
  109. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts +0 -10
  110. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts.map +0 -1
  111. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.js +0 -29
  112. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts +0 -10
  113. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts.map +0 -1
  114. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.js +0 -16
  115. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts +0 -9
  116. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts.map +0 -1
  117. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.js +0 -21
  118. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts +0 -12
  119. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts.map +0 -1
  120. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.js +0 -31
  121. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts +0 -10
  122. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts.map +0 -1
  123. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.js +0 -10
  124. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts +0 -10
  125. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts.map +0 -1
  126. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.js +0 -92
  127. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts +0 -9
  128. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts.map +0 -1
  129. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.js +0 -20
  130. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts +0 -9
  131. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts.map +0 -1
  132. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.js +0 -28
  133. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts +0 -9
  134. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts.map +0 -1
  135. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.js +0 -241
  136. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts +0 -11
  137. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts.map +0 -1
  138. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.js +0 -23
  139. package/lib/esm/hooks/useCaseLabels.d.ts +0 -14
  140. package/lib/esm/hooks/useCaseLabels.d.ts.map +0 -1
  141. package/lib/esm/hooks/useCaseLabels.js +0 -55
  142. package/lib/esm/utils/advanceSearchFormMapper.d.ts +0 -11
  143. package/lib/esm/utils/advanceSearchFormMapper.d.ts.map +0 -1
  144. package/lib/esm/utils/advanceSearchFormMapper.js +0 -71
  145. package/lib/esm/utils/advanceSearchUtils.d.ts +0 -24
  146. package/lib/esm/utils/advanceSearchUtils.d.ts.map +0 -1
  147. package/lib/esm/utils/advanceSearchUtils.js +0 -150
  148. package/lib/esm/utils/caseGroupDefaultFilterUtils.d.ts +0 -12
  149. package/lib/esm/utils/caseGroupDefaultFilterUtils.d.ts.map +0 -1
  150. package/lib/esm/utils/caseGroupDefaultFilterUtils.js +0 -34
  151. package/lib/esm/utils/caseGroupDefaultUtils.d.ts +0 -10
  152. package/lib/esm/utils/caseGroupDefaultUtils.d.ts.map +0 -1
  153. package/lib/esm/utils/caseGroupDefaultUtils.js +0 -20
  154. package/lib/esm/utils/caseListGraphQLUtils.d.ts +0 -28
  155. package/lib/esm/utils/caseListGraphQLUtils.d.ts.map +0 -1
  156. package/lib/esm/utils/caseListGraphQLUtils.js +0 -280
  157. package/lib/esm/utils/caseListMapper.d.ts +0 -6
  158. package/lib/esm/utils/caseListMapper.d.ts.map +0 -1
  159. package/lib/esm/utils/caseListMapper.js +0 -44
  160. package/lib/esm/utils/caseListVariablesBuilder.d.ts +0 -15
  161. package/lib/esm/utils/caseListVariablesBuilder.d.ts.map +0 -1
  162. package/lib/esm/utils/caseListVariablesBuilder.js +0 -517
@@ -1,71 +0,0 @@
1
- import { toOldCaseTypeMapper } from '@rh-support/utils';
2
- import { initialPaginationInfo } from '../components/case-list/CaseListFilterContext';
3
- import { hasAdvanceSearchDateRanges } from '../components/case-list/CaseListFilterHelpers';
4
- import { emptyFilters, } from '../components/case-list/CaseListFilterReducer';
5
- import { CaseSearchQueryType } from '../enums/caseSearch';
6
- import { SolrKeys, SolrPivotKeys } from '../enums/filters';
7
- import { isAdvanceSearchFormEmpty } from './advanceSearchUtils';
8
- import { createUserFriendlyQueryFromFilterStateAdvancedSearch } from './caseSearchUtils';
9
- export const hasAdvanceSearchActiveState = (filterState) => { var _a, _b; return Boolean((_b = (_a = filterState.filterQueryInfo) === null || _a === void 0 ? void 0 : _a.parsedQuery) === null || _b === void 0 ? void 0 : _b.trim()) || hasAdvanceSearchDateRanges(filterState); };
10
- export const deriveSearchQueryType = (filterState) => hasAdvanceSearchActiveState(filterState) ? CaseSearchQueryType.ADVANCED : CaseSearchQueryType.BASIC;
11
- const splitSearchTokens = (value) => value.trim().split(/\s+/).filter(Boolean);
12
- export const toNameOrSsoFilterValues = (value) => {
13
- const trimmed = value.trim();
14
- if (!trimmed) {
15
- return [];
16
- }
17
- if (trimmed.includes(',')) {
18
- return trimmed
19
- .split(',')
20
- .map((entry) => entry.trim())
21
- .filter(Boolean);
22
- }
23
- return [trimmed];
24
- };
25
- export const mapAdvanceSearchFormToFilterInfo = (formState) => {
26
- const escalation = formState.showEscalatedOnly ? [{ key: 'true', value: 'true' }] : [];
27
- return Object.assign(Object.assign({}, emptyFilters), { [SolrPivotKeys.product_version]: formState.products.map((product) => (Object.assign(Object.assign({}, product), { [SolrKeys.version]: [...(product[SolrKeys.version] || [])] }))), [SolrKeys.status]: [...formState.statuses], [SolrKeys.severity]: [...formState.severities], [SolrKeys.type]: toOldCaseTypeMapper(formState.supportTypes), [SolrKeys.escalation]: escalation, [SolrKeys.accountNumber]: [...formState.accountNumbers], [SolrKeys.alternateId]: splitSearchTokens(formState.personalReferenceNumber), [SolrKeys.openshiftClusterId]: splitSearchTokens(formState.openshiftClusterId), [SolrKeys.caseContactSSO]: toNameOrSsoFilterValues(formState.ownerNameAndSso), [SolrKeys.caseOwner]: toNameOrSsoFilterValues(formState.assignedToNameAndSso), [SolrKeys.group]: [...formState.groups], [SolrKeys.createdBySsoUsername]: toNameOrSsoFilterValues(formState.createdByNameAndSso), [SolrKeys.modifiedBy]: toNameOrSsoFilterValues(formState.lastModifiedByNameAndSso) });
28
- };
29
- export const mergeAdvanceSearchFormIntoFilterInfo = (formState, currentFilterInfo = {}) => {
30
- const advanceSearchValues = mapAdvanceSearchFormToFilterInfo(formState);
31
- return Object.assign(Object.assign(Object.assign({}, emptyFilters), currentFilterInfo), { [SolrPivotKeys.product_version]: advanceSearchValues[SolrPivotKeys.product_version], [SolrKeys.status]: advanceSearchValues[SolrKeys.status], [SolrKeys.severity]: advanceSearchValues[SolrKeys.severity], [SolrKeys.type]: advanceSearchValues[SolrKeys.type], [SolrKeys.escalation]: advanceSearchValues[SolrKeys.escalation], [SolrKeys.accountNumber]: advanceSearchValues[SolrKeys.accountNumber], [SolrKeys.alternateId]: advanceSearchValues[SolrKeys.alternateId], [SolrKeys.openshiftClusterId]: advanceSearchValues[SolrKeys.openshiftClusterId], [SolrKeys.caseContactSSO]: advanceSearchValues[SolrKeys.caseContactSSO], [SolrKeys.caseOwner]: advanceSearchValues[SolrKeys.caseOwner], [SolrKeys.group]: advanceSearchValues[SolrKeys.group], [SolrKeys.createdBySsoUsername]: advanceSearchValues[SolrKeys.createdBySsoUsername], [SolrKeys.modifiedBy]: advanceSearchValues[SolrKeys.modifiedBy] });
32
- };
33
- const formatDateRangeParsedQuery = (fieldLabel, range) => {
34
- const { startDate, endDate } = range;
35
- if (!startDate && !endDate) {
36
- return null;
37
- }
38
- if (startDate && endDate) {
39
- return `${fieldLabel}: ${startDate} to ${endDate}`;
40
- }
41
- if (startDate) {
42
- return `${fieldLabel}: >= ${startDate}`;
43
- }
44
- return `${fieldLabel}: <= ${endDate}`;
45
- };
46
- export const buildAdvanceSearchParsedQuery = (formState, filterInfo) => {
47
- const filterQueryParts = [
48
- createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo, ''),
49
- formatDateRangeParsedQuery('createdDate', formState.createdDateRange),
50
- formatDateRangeParsedQuery('lastModifiedDate', formState.lastModifiedDateRange),
51
- formatDateRangeParsedQuery('closedDate', formState.closedDateRange),
52
- ].filter(Boolean);
53
- return filterQueryParts.join(' and ');
54
- };
55
- export const mapAdvanceSearchFormToDateRanges = (formState) => ({
56
- createdDateRange: Object.assign({}, formState.createdDateRange),
57
- lastModifiedDateRange: Object.assign({}, formState.lastModifiedDateRange),
58
- closedDateRange: Object.assign({}, formState.closedDateRange),
59
- });
60
- export const createCaseListFilterStateFromAdvanceSearchForm = (formState, currentFilterState) => {
61
- var _a;
62
- const filterInfo = mergeAdvanceSearchFormIntoFilterInfo(formState, currentFilterState.filterInfo);
63
- const hasActiveAdvanceSearch = !isAdvanceSearchFormEmpty(formState);
64
- const parsedQuery = hasActiveAdvanceSearch ? buildAdvanceSearchParsedQuery(formState, filterInfo) : '';
65
- const nextFilterState = Object.assign(Object.assign({}, currentFilterState), { filterInfo, filterQueryInfo: {
66
- queryString: ((_a = currentFilterState.filterQueryInfo) === null || _a === void 0 ? void 0 : _a.queryString) || '',
67
- parsedQuery,
68
- type: hasActiveAdvanceSearch ? CaseSearchQueryType.ADVANCED : CaseSearchQueryType.BASIC,
69
- }, paginationInfo: Object.assign(Object.assign({}, (currentFilterState.paginationInfo || initialPaginationInfo)), { currentPage: 1 }), advanceSearchDateRanges: hasActiveAdvanceSearch ? mapAdvanceSearchFormToDateRanges(formState) : undefined });
70
- return Object.assign(Object.assign({}, nextFilterState), { filterQueryInfo: Object.assign(Object.assign({}, nextFilterState.filterQueryInfo), { type: deriveSearchQueryType(nextFilterState) }) });
71
- };
@@ -1,24 +0,0 @@
1
- import { IAdvanceSearchDateRange, IAdvanceSearchFormState, ICaseListFilterState } from '../components/case-list/CaseListFilterReducer';
2
- /** Matches PatternFly DatePicker yyyy-MM-dd parsing and rejects impossible dates (e.g. 2024-02-31). */
3
- export declare const parseAdvanceSearchDate: (value: string) => Date | undefined;
4
- export declare const isValidAdvanceSearchDateInput: (value: string) => boolean;
5
- export declare const isAdvanceSearchDateRangeValid: (range: IAdvanceSearchDateRange) => boolean;
6
- export declare const hasInvalidAdvanceSearchDates: (ranges: {
7
- createdDateRange: IAdvanceSearchDateRange;
8
- lastModifiedDateRange: IAdvanceSearchDateRange;
9
- closedDateRange: IAdvanceSearchDateRange;
10
- }) => boolean;
11
- export interface IAdvanceSearchDateRangeFieldErrors {
12
- startDate?: string;
13
- endDate?: string;
14
- }
15
- export declare const getAdvanceSearchDateRangeFieldErrors: (range: IAdvanceSearchDateRange, messages: {
16
- invalidDateFormat: string;
17
- invalidDateRange: string;
18
- }) => IAdvanceSearchDateRangeFieldErrors;
19
- export declare const createInitialAdvanceSearchFormState: () => IAdvanceSearchFormState;
20
- export declare const mapFilterStateToAdvanceSearchForm: (filterState: ICaseListFilterState) => IAdvanceSearchFormState;
21
- export declare const isAdvanceSearchFormEmpty: (formState: IAdvanceSearchFormState) => boolean;
22
- /** Counts total applied advanced-search filter values across all fields. */
23
- export declare const getAdvanceSearchAppliedFilterCount: (filterState: ICaseListFilterState) => number;
24
- //# sourceMappingURL=advanceSearchUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"advanceSearchUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/advanceSearchUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EAEvB,MAAM,+CAA+C,CAAC;AAKvD,uGAAuG;AACvG,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,IAAI,GAAG,SAsB7D,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAI,OAAO,MAAM,KAAG,OACE,CAAC;AAEjE,eAAO,MAAM,6BAA6B,GAAI,OAAO,uBAAuB,KAAG,OAa9E,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,QAAQ;IACjD,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,qBAAqB,EAAE,uBAAuB,CAAC;IAC/C,eAAe,EAAE,uBAAuB,CAAC;CAC5C,KAAG,OAGsD,CAAC;AAE3D,MAAM,WAAW,kCAAkC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,oCAAoC,GAC7C,OAAO,uBAAuB,EAC9B,UAAU;IACN,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC5B,KACF,kCAqBF,CAAC;AAOF,eAAO,MAAM,mCAAmC,QAAO,uBAiBrD,CAAC;AAEH,eAAO,MAAM,iCAAiC,GAAI,aAAa,oBAAoB,KAAG,uBA6BrF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,WAAW,uBAAuB,KAAG,OAG7E,CAAC;AAuBF,4EAA4E;AAC5E,eAAO,MAAM,kCAAkC,GAAI,aAAa,oBAAoB,KAAG,MA0BtF,CAAC"}
@@ -1,150 +0,0 @@
1
- import { toNewCaseTypeMapper } from '@rh-support/utils';
2
- import isEqual from 'lodash/isEqual';
3
- import { SolrKeys, SolrPivotKeys } from '../enums/filters';
4
- const YYYY_MM_DD_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
5
- /** Matches PatternFly DatePicker yyyy-MM-dd parsing and rejects impossible dates (e.g. 2024-02-31). */
6
- export const parseAdvanceSearchDate = (value) => {
7
- const trimmed = value.trim();
8
- if (!trimmed) {
9
- return undefined;
10
- }
11
- if (!YYYY_MM_DD_PATTERN.test(trimmed)) {
12
- return undefined;
13
- }
14
- const [year, month, day] = trimmed.split('-').map(Number);
15
- const parsedDate = new Date(`${trimmed}T00:00:00`);
16
- if (Number.isNaN(parsedDate.getTime())) {
17
- return undefined;
18
- }
19
- if (parsedDate.getFullYear() !== year || parsedDate.getMonth() + 1 !== month || parsedDate.getDate() !== day) {
20
- return undefined;
21
- }
22
- return parsedDate;
23
- };
24
- export const isValidAdvanceSearchDateInput = (value) => !value.trim() || parseAdvanceSearchDate(value) !== undefined;
25
- export const isAdvanceSearchDateRangeValid = (range) => {
26
- if (!isValidAdvanceSearchDateInput(range.startDate) || !isValidAdvanceSearchDateInput(range.endDate)) {
27
- return false;
28
- }
29
- const startDate = parseAdvanceSearchDate(range.startDate);
30
- const endDate = parseAdvanceSearchDate(range.endDate);
31
- if (startDate && endDate && startDate > endDate) {
32
- return false;
33
- }
34
- return true;
35
- };
36
- export const hasInvalidAdvanceSearchDates = (ranges) => !isAdvanceSearchDateRangeValid(ranges.createdDateRange) ||
37
- !isAdvanceSearchDateRangeValid(ranges.lastModifiedDateRange) ||
38
- !isAdvanceSearchDateRangeValid(ranges.closedDateRange);
39
- export const getAdvanceSearchDateRangeFieldErrors = (range, messages) => {
40
- const errors = {};
41
- if (!isValidAdvanceSearchDateInput(range.startDate)) {
42
- errors.startDate = messages.invalidDateFormat;
43
- }
44
- if (!isValidAdvanceSearchDateInput(range.endDate)) {
45
- errors.endDate = messages.invalidDateFormat;
46
- }
47
- if (!errors.startDate && !errors.endDate) {
48
- const startDate = parseAdvanceSearchDate(range.startDate);
49
- const endDate = parseAdvanceSearchDate(range.endDate);
50
- if (startDate && endDate && startDate > endDate) {
51
- errors.endDate = messages.invalidDateRange;
52
- }
53
- }
54
- return errors;
55
- };
56
- const emptyDateRange = () => ({
57
- startDate: '',
58
- endDate: '',
59
- });
60
- export const createInitialAdvanceSearchFormState = () => ({
61
- statuses: [],
62
- severities: [],
63
- supportTypes: [],
64
- showEscalatedOnly: false,
65
- accountNumbers: [],
66
- personalReferenceNumber: '',
67
- openshiftClusterId: '',
68
- ownerNameAndSso: '',
69
- assignedToNameAndSso: '',
70
- groups: [],
71
- createdByNameAndSso: '',
72
- lastModifiedByNameAndSso: '',
73
- createdDateRange: emptyDateRange(),
74
- lastModifiedDateRange: emptyDateRange(),
75
- closedDateRange: emptyDateRange(),
76
- products: [],
77
- });
78
- export const mapFilterStateToAdvanceSearchForm = (filterState) => {
79
- var _a, _b, _c;
80
- const { filterInfo } = filterState;
81
- if (!filterInfo) {
82
- return createInitialAdvanceSearchFormState();
83
- }
84
- const escalationValues = filterInfo[SolrKeys.escalation] || [];
85
- return {
86
- statuses: [...(filterInfo[SolrKeys.status] || [])],
87
- severities: [...(filterInfo[SolrKeys.severity] || [])],
88
- supportTypes: toNewCaseTypeMapper(filterInfo[SolrKeys.type] || []),
89
- showEscalatedOnly: escalationValues.some((item) => item.key === 'true'),
90
- accountNumbers: [...(filterInfo[SolrKeys.accountNumber] || [])],
91
- personalReferenceNumber: (filterInfo[SolrKeys.alternateId] || []).join(' '),
92
- openshiftClusterId: (filterInfo[SolrKeys.openshiftClusterId] || []).join(' '),
93
- ownerNameAndSso: (filterInfo[SolrKeys.caseContactSSO] || []).join(', '),
94
- assignedToNameAndSso: (filterInfo[SolrKeys.caseOwner] || []).join(', '),
95
- groups: [...(filterInfo[SolrKeys.group] || [])],
96
- createdByNameAndSso: (filterInfo[SolrKeys.createdBySsoUsername] || []).join(', '),
97
- lastModifiedByNameAndSso: (filterInfo[SolrKeys.modifiedBy] || []).join(', '),
98
- createdDateRange: Object.assign({}, (((_a = filterState.advanceSearchDateRanges) === null || _a === void 0 ? void 0 : _a.createdDateRange) || emptyDateRange())),
99
- lastModifiedDateRange: Object.assign({}, (((_b = filterState.advanceSearchDateRanges) === null || _b === void 0 ? void 0 : _b.lastModifiedDateRange) || emptyDateRange())),
100
- closedDateRange: Object.assign({}, (((_c = filterState.advanceSearchDateRanges) === null || _c === void 0 ? void 0 : _c.closedDateRange) || emptyDateRange())),
101
- products: (filterInfo[SolrPivotKeys.product_version] || []).map((product) => (Object.assign(Object.assign({}, product), { [SolrKeys.version]: [...(product[SolrKeys.version] || [])] }))),
102
- };
103
- };
104
- export const isAdvanceSearchFormEmpty = (formState) => {
105
- const initialState = createInitialAdvanceSearchFormState();
106
- return isEqual(formState, initialState);
107
- };
108
- const countDateRangeValues = (range) => {
109
- if (!range) {
110
- return 0;
111
- }
112
- let count = 0;
113
- if (range.startDate.trim()) {
114
- count++;
115
- }
116
- if (range.endDate.trim()) {
117
- count++;
118
- }
119
- return count;
120
- };
121
- const countProductFilterValues = (products) => products.reduce((total, product) => {
122
- const versions = product[SolrKeys.version] || [];
123
- return total + (versions.length > 0 ? versions.length : 1);
124
- }, 0);
125
- /** Counts total applied advanced-search filter values across all fields. */
126
- export const getAdvanceSearchAppliedFilterCount = (filterState) => {
127
- const { filterInfo, advanceSearchDateRanges } = filterState;
128
- if (!filterInfo) {
129
- return 0;
130
- }
131
- let count = 0;
132
- count += (filterInfo[SolrKeys.status] || []).length;
133
- count += (filterInfo[SolrKeys.severity] || []).length;
134
- count += (filterInfo[SolrKeys.type] || []).length;
135
- count += (filterInfo[SolrKeys.escalation] || []).length;
136
- count += (filterInfo[SolrKeys.accountNumber] || []).length;
137
- count += (filterInfo[SolrKeys.alternateId] || []).length;
138
- count += (filterInfo[SolrKeys.openshiftClusterId] || []).length;
139
- count += (filterInfo[SolrKeys.caseContactSSO] || []).length;
140
- count += (filterInfo[SolrKeys.caseOwner] || []).length;
141
- count += (filterInfo[SolrKeys.group] || []).length;
142
- count += (filterInfo[SolrKeys.caseLabel] || []).length;
143
- count += (filterInfo[SolrKeys.createdBySsoUsername] || []).length;
144
- count += (filterInfo[SolrKeys.modifiedBy] || []).length;
145
- count += countProductFilterValues(filterInfo[SolrPivotKeys.product_version] || []);
146
- count += countDateRangeValues(advanceSearchDateRanges === null || advanceSearchDateRanges === void 0 ? void 0 : advanceSearchDateRanges.createdDateRange);
147
- count += countDateRangeValues(advanceSearchDateRanges === null || advanceSearchDateRanges === void 0 ? void 0 : advanceSearchDateRanges.lastModifiedDateRange);
148
- count += countDateRangeValues(advanceSearchDateRanges === null || advanceSearchDateRanges === void 0 ? void 0 : advanceSearchDateRanges.closedDateRange);
149
- return count;
150
- };
@@ -1,12 +0,0 @@
1
- import { ICaseGroup } from '@cee-eng/hydrajs/@types/api/public/caseGroups';
2
- import { IPreference } from '@cee-eng/hydrajs/@types/models/general';
3
- import type { ILoggedInSsoContact } from '@rh-support/utils';
4
- export declare function decodeCaseListUrlFilterQuery(queryFromUrl?: string): string;
5
- export declare function hasDefaultSavedSearch(hydraUserPreferences?: IPreference[]): boolean;
6
- /** Default group filter applies only when URL and saved-search do not own the filter state. */
7
- export declare function shouldApplyDefaultGroupFilter(queryFromUrl?: string, hydraUserPreferences?: IPreference[]): boolean;
8
- export declare function getDefaultGroupFilterSelection(caseGroups: ICaseGroup[] | undefined, loggedInUser?: ILoggedInSsoContact): Array<{
9
- key: string;
10
- value: string;
11
- }>;
12
- //# sourceMappingURL=caseGroupDefaultFilterUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caseGroupDefaultFilterUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseGroupDefaultFilterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAErE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAM7D,wBAAgB,4BAA4B,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAa1E;AAED,wBAAgB,qBAAqB,CAAC,oBAAoB,GAAE,WAAW,EAAO,GAAG,OAAO,CAOvF;AAED,+FAA+F;AAC/F,wBAAgB,6BAA6B,CACzC,YAAY,CAAC,EAAE,MAAM,EACrB,oBAAoB,GAAE,WAAW,EAAO,GACzC,OAAO,CAMT;AAED,wBAAgB,8BAA8B,CAC1C,UAAU,EAAE,UAAU,EAAE,GAAG,SAAS,EACpC,YAAY,CAAC,EAAE,mBAAmB,GACnC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAGvC"}
@@ -1,34 +0,0 @@
1
- import { UserPreferencesKeys } from '@rh-support/react-context';
2
- import find from 'lodash/find';
3
- import findKey from 'lodash/findKey';
4
- import { buildDefaultGroupFilterSelection, getDefaultCaseGroupForFilter } from './caseGroupDefaultUtils';
5
- export function decodeCaseListUrlFilterQuery(queryFromUrl) {
6
- if (!queryFromUrl || queryFromUrl === 'undefined') {
7
- return '';
8
- }
9
- try {
10
- const decoded = decodeURIComponent(queryFromUrl);
11
- const [urlQuery] = decoded.split(/ orderBy /i);
12
- return urlQuery && urlQuery !== 'undefined' ? urlQuery.trim() : '';
13
- }
14
- catch (_a) {
15
- const [urlQuery] = queryFromUrl.split(/ orderBy /i);
16
- return urlQuery && urlQuery !== 'undefined' ? urlQuery.trim() : '';
17
- }
18
- }
19
- export function hasDefaultSavedSearch(hydraUserPreferences = []) {
20
- const savedSearchPreference = find(hydraUserPreferences, (pref) => pref.key === UserPreferencesKeys.caseSavedSearchFilters);
21
- const savedSearchesObj = (savedSearchPreference === null || savedSearchPreference === void 0 ? void 0 : savedSearchPreference.value) ? JSON.parse(savedSearchPreference.value) : {};
22
- return Boolean(findKey(savedSearchesObj, { defaultChecked: true }));
23
- }
24
- /** Default group filter applies only when URL and saved-search do not own the filter state. */
25
- export function shouldApplyDefaultGroupFilter(queryFromUrl, hydraUserPreferences = []) {
26
- if (decodeCaseListUrlFilterQuery(queryFromUrl)) {
27
- return false;
28
- }
29
- return !hasDefaultSavedSearch(hydraUserPreferences);
30
- }
31
- export function getDefaultGroupFilterSelection(caseGroups, loggedInUser) {
32
- const defaultGroup = getDefaultCaseGroupForFilter(caseGroups, loggedInUser);
33
- return buildDefaultGroupFilterSelection(defaultGroup);
34
- }
@@ -1,10 +0,0 @@
1
- import { ICaseGroup } from '@cee-eng/hydrajs/@types/api/public/caseGroups';
2
- import type { ILoggedInSsoContact } from '@rh-support/utils';
3
- /** Resolves the user's default case group from contact preference, falling back to isDefault flags. */
4
- export declare function getDefaultCaseGroupForFilter(caseGroups: ICaseGroup[] | undefined, loggedInUser?: ILoggedInSsoContact): ICaseGroup | undefined;
5
- /** Builds the group filter chip/select values for a default case group. */
6
- export declare function buildDefaultGroupFilterSelection(defaultGroup?: ICaseGroup): Array<{
7
- key: string;
8
- value: string;
9
- }>;
10
- //# sourceMappingURL=caseGroupDefaultUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caseGroupDefaultUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseGroupDefaultUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,uGAAuG;AACvG,wBAAgB,4BAA4B,CACxC,UAAU,EAAE,UAAU,EAAE,GAAG,SAAS,EACpC,YAAY,CAAC,EAAE,mBAAmB,GACnC,UAAU,GAAG,SAAS,CAYxB;AAED,2EAA2E;AAC3E,wBAAgB,gCAAgC,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAMjH"}
@@ -1,20 +0,0 @@
1
- /** Resolves the user's default case group from contact preference, falling back to isDefault flags. */
2
- export function getDefaultCaseGroupForFilter(caseGroups, loggedInUser) {
3
- var _a;
4
- const groups = caseGroups || [];
5
- const defaultCaseGroupId = (_a = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.defaultCaseGroup) !== null && _a !== void 0 ? _a : null;
6
- if (defaultCaseGroupId && defaultCaseGroupId !== '-1') {
7
- const match = groups.find((group) => group.groupNum === defaultCaseGroupId);
8
- if (match) {
9
- return match;
10
- }
11
- }
12
- return groups.find((group) => group.isDefault);
13
- }
14
- /** Builds the group filter chip/select values for a default case group. */
15
- export function buildDefaultGroupFilterSelection(defaultGroup) {
16
- if (!(defaultGroup === null || defaultGroup === void 0 ? void 0 : defaultGroup.name)) {
17
- return [];
18
- }
19
- return [{ key: defaultGroup.groupNum, value: defaultGroup.name }];
20
- }
@@ -1,28 +0,0 @@
1
- import type { ApolloClient } from '@apollo/client';
2
- import { ICaseListItem } from '@rh-support/utils';
3
- import { ICaseListFilterState } from '../components/case-list/CaseListFilterReducer';
4
- export interface IGraphQLCaseListResponse {
5
- caseListResponse: {
6
- response: {
7
- docs: ICaseListItem[];
8
- numFound: number;
9
- start: number;
10
- };
11
- };
12
- showErrorMessage: boolean;
13
- hasNextPage: boolean;
14
- endCursor: string | undefined;
15
- }
16
- export declare function clearPageCursors(): void;
17
- export declare function getCaseListFromGraphQL(filterState: ICaseListFilterState, apolloClient: ApolloClient, limitOverride?: number, signal?: AbortSignal, selectedCaseNumbers?: string[], includeSecureSupportCases?: boolean): Promise<IGraphQLCaseListResponse>;
18
- export interface ILoadMoreResult {
19
- docs: ICaseListItem[];
20
- hasNextPage: boolean;
21
- endCursor: string | undefined;
22
- }
23
- /**
24
- * Fetches the next page of cases for infinite scroll.
25
- * Uses the provided `afterCursor` instead of the page-based cursor store.
26
- */
27
- export declare function loadMoreCases(filterState: ICaseListFilterState, apolloClient: ApolloClient, afterCursor: string, signal?: AbortSignal, includeSecureSupportCases?: boolean): Promise<ILoadMoreResult>;
28
- //# sourceMappingURL=caseListGraphQLUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caseListGraphQLUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseListGraphQLUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAKH,aAAa,EAEhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,oBAAoB,EAAkB,MAAM,+CAA+C,CAAC;AASrG,MAAM,WAAW,wBAAwB;IACrC,gBAAgB,EAAE;QACd,QAAQ,EAAE;YACN,IAAI,EAAE,aAAa,EAAE,CAAC;YACtB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACjB,CAAC;KACL,CAAC;IACF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAwDD,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAkFD,wBAAsB,sBAAsB,CACxC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,YAAY,EAC1B,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,EACpB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAC9B,yBAAyB,UAAQ,GAClC,OAAO,CAAC,wBAAwB,CAAC,CA6FnC;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAC/B,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,EACpB,yBAAyB,UAAQ,GAClC,OAAO,CAAC,eAAe,CAAC,CAoD1B"}