@rh-support/cases 2.6.186 → 2.6.187

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 (134) hide show
  1. package/lib/esm/components/case-list/CaseList.d.ts +0 -7
  2. package/lib/esm/components/case-list/CaseList.d.ts.map +1 -1
  3. package/lib/esm/components/case-list/CaseList.js +195 -113
  4. package/lib/esm/components/case-list/CaseListContext.d.ts.map +1 -1
  5. package/lib/esm/components/case-list/CaseListContext.js +5 -2
  6. package/lib/esm/components/case-list/CaseListFilterContext.d.ts.map +1 -1
  7. package/lib/esm/components/case-list/CaseListFilterContext.js +2 -1
  8. package/lib/esm/components/case-list/CaseListFilterHelpers.d.ts +3 -2
  9. package/lib/esm/components/case-list/CaseListFilterHelpers.d.ts.map +1 -1
  10. package/lib/esm/components/case-list/CaseListFilterHelpers.js +19 -6
  11. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts +35 -4
  12. package/lib/esm/components/case-list/CaseListFilterReducer.d.ts.map +1 -1
  13. package/lib/esm/components/case-list/CaseListFilterReducer.js +4 -12
  14. package/lib/esm/components/case-list/CaseListReducer.d.ts +22 -10
  15. package/lib/esm/components/case-list/CaseListReducer.d.ts.map +1 -1
  16. package/lib/esm/components/case-list/CaseListReducer.js +25 -7
  17. package/lib/esm/components/case-list/case-list-filters/AccountsFilter.d.ts.map +1 -1
  18. package/lib/esm/components/case-list/case-list-filters/AccountsFilter.js +18 -11
  19. package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.d.ts.map +1 -1
  20. package/lib/esm/components/case-list/case-list-filters/AdditionalFilters.js +6 -2
  21. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts +1 -7
  22. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.d.ts.map +1 -1
  23. package/lib/esm/components/case-list/case-list-filters/CaseListFilterChips.js +12 -16
  24. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts +2 -5
  25. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.d.ts.map +1 -1
  26. package/lib/esm/components/case-list/case-list-filters/CaseListFilters.js +12 -13
  27. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilterChip.d.ts.map +1 -1
  28. package/lib/esm/components/case-list/case-list-filters/CreatorSsoNameFilterChip.js +3 -0
  29. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.d.ts +11 -1
  30. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.d.ts.map +1 -1
  31. package/lib/esm/components/case-list/case-list-filters/GroupsFilter.js +116 -71
  32. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts +1 -3
  33. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.d.ts.map +1 -1
  34. package/lib/esm/components/case-list/case-list-filters/ProductFilterChip.js +2 -2
  35. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts +5 -4
  36. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.d.ts.map +1 -1
  37. package/lib/esm/components/case-list/case-list-filters/ProductsFilter.js +15 -54
  38. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts +0 -3
  39. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.d.ts.map +1 -1
  40. package/lib/esm/components/case-list/case-list-filters/SeverityFilter.js +18 -44
  41. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts +0 -3
  42. package/lib/esm/components/case-list/case-list-filters/StatusFilter.d.ts.map +1 -1
  43. package/lib/esm/components/case-list/case-list-filters/StatusFilter.js +14 -44
  44. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts +1 -3
  45. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.d.ts.map +1 -1
  46. package/lib/esm/components/case-list/case-list-filters/VersionsFilter.js +60 -59
  47. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts +7 -3
  48. package/lib/esm/components/case-list/case-list-table/CaseListTable.d.ts.map +1 -1
  49. package/lib/esm/components/case-list/case-list-table/CaseListTable.js +77 -60
  50. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts +0 -5
  51. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.d.ts.map +1 -1
  52. package/lib/esm/components/case-list/case-list-table/DownloadCSVFileModal.js +38 -68
  53. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.d.ts.map +1 -1
  54. package/lib/esm/components/case-list/case-list-table/ExportCaseListCSV.js +5 -15
  55. package/lib/esm/components/case-list/case-list-table/SeverityLabel.js +1 -1
  56. package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.d.ts.map +1 -1
  57. package/lib/esm/components/case-list/case-list-table/TableActionsDropdown.js +2 -3
  58. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts +8 -0
  59. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.d.ts.map +1 -0
  60. package/lib/esm/components/case-list/case-search/AdvanceSearchToggleButton.js +8 -0
  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 +1 -0
  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 +55 -24
  65. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts +10 -0
  66. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.d.ts.map +1 -0
  67. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAccountSection.js +29 -0
  68. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts +10 -0
  69. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.d.ts.map +1 -0
  70. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchAuditsSection.js +16 -0
  71. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts +9 -0
  72. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.d.ts.map +1 -0
  73. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchCaseSection.js +21 -0
  74. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts +12 -0
  75. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.d.ts.map +1 -0
  76. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchDateRangeField.js +31 -0
  77. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts +10 -0
  78. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.d.ts.map +1 -0
  79. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchFieldBlock.js +10 -0
  80. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts +10 -0
  81. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.d.ts.map +1 -0
  82. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchModal.js +92 -0
  83. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts +9 -0
  84. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.d.ts.map +1 -0
  85. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchOwnerSection.js +20 -0
  86. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts +9 -0
  87. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.d.ts.map +1 -0
  88. package/lib/esm/components/case-list/case-search/advance-search-modal/AdvanceSearchProductSection.js +28 -0
  89. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts +9 -0
  90. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.d.ts.map +1 -0
  91. package/lib/esm/components/case-list/case-search/advance-search-modal/ProductVersionDrilldownSelect.js +241 -0
  92. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts +11 -0
  93. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.d.ts.map +1 -0
  94. package/lib/esm/components/case-list/case-search/advance-search-modal/SelectableLabelFilter.js +23 -0
  95. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.d.ts.map +1 -1
  96. package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +2 -1
  97. package/lib/esm/css/caseList.css +111 -22
  98. package/lib/esm/css/caseSearch.css +114 -0
  99. package/lib/esm/enums/case.d.ts +2 -1
  100. package/lib/esm/enums/case.d.ts.map +1 -1
  101. package/lib/esm/enums/case.js +14 -1
  102. package/lib/esm/enums/caseSearch.d.ts +1 -0
  103. package/lib/esm/enums/caseSearch.d.ts.map +1 -1
  104. package/lib/esm/enums/caseSearch.js +1 -1
  105. package/lib/esm/hooks/useExportCaseListCSV.d.ts.map +1 -1
  106. package/lib/esm/hooks/useExportCaseListCSV.js +1 -9
  107. package/lib/esm/hooks/useFilterStateOnLoad.d.ts +1 -1
  108. package/lib/esm/hooks/useFilterStateOnLoad.d.ts.map +1 -1
  109. package/lib/esm/test-utils/mockData.js +1 -1
  110. package/lib/esm/utils/advanceSearchFormMapper.d.ts +11 -0
  111. package/lib/esm/utils/advanceSearchFormMapper.d.ts.map +1 -0
  112. package/lib/esm/utils/advanceSearchFormMapper.js +71 -0
  113. package/lib/esm/utils/advanceSearchUtils.d.ts +24 -0
  114. package/lib/esm/utils/advanceSearchUtils.d.ts.map +1 -0
  115. package/lib/esm/utils/advanceSearchUtils.js +149 -0
  116. package/lib/esm/utils/caseListGraphQLUtils.d.ts +28 -0
  117. package/lib/esm/utils/caseListGraphQLUtils.d.ts.map +1 -0
  118. package/lib/esm/utils/caseListGraphQLUtils.js +280 -0
  119. package/lib/esm/utils/caseListMapper.d.ts +6 -0
  120. package/lib/esm/utils/caseListMapper.d.ts.map +1 -0
  121. package/lib/esm/utils/caseListMapper.js +36 -0
  122. package/lib/esm/utils/caseListVariablesBuilder.d.ts +15 -0
  123. package/lib/esm/utils/caseListVariablesBuilder.d.ts.map +1 -0
  124. package/lib/esm/utils/caseListVariablesBuilder.js +399 -0
  125. package/lib/esm/utils/caseSearchUtils.d.ts.map +1 -1
  126. package/lib/esm/utils/caseSearchUtils.js +26 -1
  127. package/lib/esm/utils/constants.d.ts +4 -1
  128. package/lib/esm/utils/constants.d.ts.map +1 -1
  129. package/lib/esm/utils/constants.js +20 -2
  130. package/lib/esm/utils/mockSolrResponse.js +1 -1
  131. package/lib/esm/utils/statusUtils.d.ts +4 -0
  132. package/lib/esm/utils/statusUtils.d.ts.map +1 -0
  133. package/lib/esm/utils/statusUtils.js +36 -0
  134. package/package.json +8 -8
@@ -186,11 +186,17 @@
186
186
  .cases-main .case-search-table {
187
187
  -ms-flex: 1;
188
188
  flex-grow: 1;
189
- display: block;
190
- overflow-x: auto;
189
+ display: flex;
190
+ flex-direction: column;
191
+ min-width: 0;
191
192
  border-radius: 0 0 16px !important;
192
193
  }
193
194
 
195
+ .cases-main .case-search-table > .pf-v6-c-scroll-inner-wrapper {
196
+ overflow-x: auto;
197
+ flex: 1;
198
+ }
199
+
194
200
  .case-search-bottom .case-list-table-toolbar {
195
201
  -ms-flex-align: center;
196
202
  align-items: center;
@@ -200,6 +206,10 @@
200
206
  background-color: var(--pf-t--color--gray--10);
201
207
  border-top: 1px solid var(--pf-t--global--border--color--100);
202
208
  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;
203
213
  }
204
214
 
205
215
  .case-search-bottom .case-list-table-toolbar .toolbar-actions {
@@ -219,18 +229,21 @@
219
229
  color: #06c !important;
220
230
  }
221
231
 
222
- .case-search-bottom .case-list-table-toolbar .toolbar-pagination button[disabled] {
223
- color: #999;
224
- }
225
-
226
232
  .case-search-bottom .case-list-table-toolbar button.pf-m-secondary:not([disabled]),
227
233
  .case-search-bottom .case-list-table-toolbar button.pf-m-tertiary:not([disabled]),
228
234
  .case-search-bottom .case-list-table-toolbar button.pf-m-control:not([disabled]) {
229
235
  background-color: #fff;
230
236
  }
231
237
 
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
+
232
246
  .cases-main .case-search-table .case-list-table {
233
- border-top: 1px solid var(--pf-t--global--border--color--100);
234
247
  border-right: 1px solid var(--pf-t--global--border--color--100);
235
248
  border-bottom: 1px solid var(--pf-t--global--border--color--100);
236
249
  }
@@ -277,17 +290,6 @@
277
290
  text-transform: uppercase;
278
291
  }
279
292
 
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
-
291
293
  .case-search-bottom #case-filters-panel {
292
294
  -ms-flex: 100%;
293
295
  flex-basis: 100%;
@@ -300,11 +302,13 @@
300
302
  border-right: 1px solid var(--pf-t--global--border--color--100);
301
303
  border-bottom: 1px solid var(--pf-t--global--border--color--100);
302
304
  border-radius: 0 0 0 16px;
305
+ align-self: stretch;
303
306
  }
304
307
 
305
308
  .case-search-filters .filter-header {
306
309
  min-height: 4rem;
307
310
  margin: 0;
311
+ padding: 0;
308
312
  }
309
313
 
310
314
  .case-search-filters .filter-header .pf-v6-svg {
@@ -349,6 +353,10 @@
349
353
  font-size: 1rem;
350
354
  font-weight: 600;
351
355
  height: 4.3rem;
356
+ position: sticky;
357
+ top: 0;
358
+ z-index: 100;
359
+ background-color: #f2f2f2;
352
360
 
353
361
  .pf-v6-c-button__icon.pf-m-end {
354
362
  margin-right: -4px !important;
@@ -359,6 +367,8 @@
359
367
  .filter-wrapper {
360
368
  padding: 24px;
361
369
  background-color: var(--pf-t--color--gray--10);
370
+ position: relative;
371
+ z-index: 0;
362
372
  }
363
373
 
364
374
  .filter-wrapper .filter-group > * {
@@ -413,10 +423,6 @@
413
423
  .case-search-bottom .case-list-table-toolbar .toolbar-actions > * {
414
424
  margin-bottom: 0;
415
425
  }
416
-
417
- .case-search-bottom .case-list-table-toolbar .toolbar-pagination {
418
- margin-top: 0;
419
- }
420
426
  }
421
427
 
422
428
  @media (min-width: 768px) {
@@ -645,3 +651,86 @@ th#product.pf-v6-c-table__th {
645
651
  .case-list-table .pf-v6-c-table__button {
646
652
  margin-bottom: 0px !important;
647
653
  }
654
+
655
+ .skeleton-loader-row {
656
+ height: 62px;
657
+ }
658
+
659
+ .skeleton-loader-row .skeleton-sentinel {
660
+ display: flex;
661
+ align-items: center;
662
+ height: 100%;
663
+ }
664
+
665
+ .skeleton-loader-row .skeleton-bar {
666
+ display: block;
667
+ height: 24px;
668
+ border-radius: 4px;
669
+ background-color: #e0e0e0;
670
+ animation: skeleton-pulse 1.5s ease-in-out infinite;
671
+ }
672
+
673
+ .skeleton-loader-row .skeleton-bar--checkbox {
674
+ display: inline-block;
675
+ width: 16px;
676
+ height: 16px;
677
+ border-radius: 3px;
678
+ }
679
+
680
+ @keyframes skeleton-pulse {
681
+ 0% {
682
+ opacity: 1;
683
+ }
684
+ 50% {
685
+ opacity: 0.4;
686
+ }
687
+ 100% {
688
+ opacity: 1;
689
+ }
690
+ }
691
+
692
+ .infinite-scroll-footer-message {
693
+ display: flex;
694
+ justify-content: center;
695
+ align-items: center;
696
+ gap: 8px;
697
+ padding: 12px 0;
698
+ position: sticky;
699
+ left: 0;
700
+ background-color: #fff;
701
+ }
702
+
703
+ .infinite-scroll-footer-text,
704
+ .infinite-scroll-alert,
705
+ .infinite-scroll-alert * {
706
+ font-size: 14px !important;
707
+ }
708
+
709
+ .infinite-scroll-footer-message .pf-v6-c-alert.pf-m-inline.pf-m-plain {
710
+ padding: 0;
711
+ }
712
+
713
+ .infinite-scroll-footer-message .pf-v6-c-button.pf-m-link.pf-m-inline {
714
+ text-decoration: none;
715
+ }
716
+
717
+ .infinite-scroll-retry-btn.pf-v6-c-button.pf-m-secondary {
718
+ border-radius: 999px;
719
+ padding: 8px 24px;
720
+ gap: 6px;
721
+ font-size: 14px;
722
+ font-weight: 400;
723
+ line-height: 1.5;
724
+ display: inline-flex;
725
+ align-items: center;
726
+ }
727
+
728
+ .infinite-scroll-retry-btn .pf-v6-c-button__icon {
729
+ display: inline-flex;
730
+ align-items: center;
731
+ line-height: 0;
732
+ }
733
+
734
+ .infinite-scroll-retry-btn .pf-v6-c-button__icon svg {
735
+ vertical-align: middle;
736
+ }
@@ -42,6 +42,102 @@
42
42
  min-width: 30rem;
43
43
  }
44
44
 
45
+ .case-search-form-group,
46
+ .case-search-input-container,
47
+ .cases-main .case-search-top .search-wrapper,
48
+ .cases-main .case-search-top .search-wrapper form,
49
+ .cases-main .case-search-top {
50
+ overflow: visible;
51
+ }
52
+
53
+ .advance-search-panel-container {
54
+ position: relative;
55
+ flex-shrink: 0;
56
+ }
57
+
58
+ .case-search-form-group .advance-search-toggle-btn.pf-v6-c-button {
59
+ border-radius: var(--pf-t--global--border--radius--pill);
60
+ flex-shrink: 0;
61
+ margin-left: 0;
62
+ }
63
+
64
+ .advance-search-panel-container:has(.advance-search-modal) {
65
+ z-index: var(--pf-t--global--z-index--xl);
66
+ }
67
+
68
+ .advance-search-modal-backdrop {
69
+ position: fixed;
70
+ inset: 0;
71
+ z-index: 0;
72
+ background-color: transparent;
73
+ }
74
+
75
+ .pf-v6-c-modal-box.advance-search-modal {
76
+ position: absolute;
77
+ top: calc(100% + var(--pf-t--global--spacer--sm, 8px));
78
+ right: 0;
79
+ z-index: 1;
80
+ margin: 0;
81
+ width: 360px;
82
+ max-width: min(400px, calc(100vw - var(--pf-t--global--spacer--lg, 24px)));
83
+ max-height: min(70vh, calc(100dvh - var(--pf-t--global--spacer--2xl, 48px)));
84
+ border-radius: 0;
85
+ --pf-v6-c-modal-box--BorderRadius: 0;
86
+ --pf-v6-c-modal-box--Width: 400px;
87
+ display: flex;
88
+ flex-direction: column;
89
+ overflow: hidden;
90
+ min-height: 0;
91
+ }
92
+
93
+ .pf-v6-c-modal-box.advance-search-modal > .pf-v6-c-modal-box__body {
94
+ flex: 1 1 auto;
95
+ min-height: 0;
96
+ overflow: auto;
97
+ -ms-overflow-style: none;
98
+ scrollbar-width: none;
99
+ }
100
+
101
+ .pf-v6-c-modal-box.advance-search-modal > .pf-v6-c-modal-box__body::-webkit-scrollbar {
102
+ display: none;
103
+ }
104
+
105
+ .pf-v6-c-modal-box.advance-search-modal > .pf-v6-c-modal-box__footer {
106
+ flex: 0 0 auto;
107
+ width: 100%;
108
+ background-color: var(--pf-v6-c-modal-box--BackgroundColor);
109
+ }
110
+
111
+ .advance-search-modal .pf-v6-c-expandable-section__toggle .pf-v6-c-button.pf-m-link {
112
+ --pf-v6-c-button--m-link--Color: var(--pf-t--global--text--color--regular, #151515);
113
+ --pf-v6-c-button--m-link--hover--Color: var(--pf-t--global--text--color--regular, #151515);
114
+ --pf-v6-c-button--m-link--visited--Color: var(--pf-t--global--text--color--regular, #151515);
115
+ }
116
+
117
+ .advance-search-modal .advance-search-expandable-section {
118
+ --pf-v6-c-expandable-section--Gap: 0;
119
+ }
120
+
121
+ .advance-search-modal .advance-search-expandable-section .pf-v6-c-expandable-section__toggle {
122
+ padding-inline: var(--pf-t--global--spacer--md);
123
+ }
124
+
125
+ .advance-search-modal .advance-search-expandable-section .pf-v6-c-expandable-section__content {
126
+ padding-inline: 0;
127
+ }
128
+
129
+ .advance-search-product-version-search .pf-v6-c-search-input {
130
+ width: 100%;
131
+ }
132
+
133
+ .advance-search-product-menu-item-badge.pf-v6-c-badge {
134
+ --pf-v6-c-badge--BorderRadius: var(--pf-t--global--border--radius--pill);
135
+ --pf-v6-c-badge--Color: var(--pf-t--global--text--color--on-brand--default);
136
+ --pf-v6-c-badge--BackgroundColor: var(--pf-t--global--color--brand--default);
137
+ font-size: var(--pf-t--global--font--size--body--sm);
138
+ min-width: 1.25rem;
139
+ }
140
+
45
141
  .case-search-form-group .filter-save-success-msg {
46
142
  color: var(--pf-v5-global--success-color--200);
47
143
  padding: 6px 0px;
@@ -59,3 +155,21 @@
59
155
  margin-left: 0.5rem;
60
156
  }
61
157
  }
158
+
159
+ .advance-search-modal .advance-search-dropdown-toggle-content {
160
+ gap: var(--pf-t--global--spacer--sm);
161
+ }
162
+
163
+ .advance-search-modal .advance-search-dropdown-toggle-badge-wrap {
164
+ flex-shrink: 0;
165
+ }
166
+
167
+ .advance-search-modal .advance-search-dropdown-toggle-badge.pf-v6-c-badge,
168
+ .advance-search-modal .pf-v6-c-text-input-group .advance-search-dropdown-toggle-badge.pf-v6-c-badge {
169
+ --pf-v6-c-badge--BorderRadius: var(--pf-t--global--border--radius--pill);
170
+ --pf-v6-c-badge--Color: var(--pf-t--global--text--color--on-brand--default);
171
+ --pf-v6-c-badge--BackgroundColor: var(--pf-t--global--color--brand--default);
172
+ font-size: var(--pf-t--global--font--size--body--sm);
173
+ font-weight: var(--pf-t--global--font--weight--body--bold);
174
+ padding-inline: var(--pf-t--global--spacer--sm);
175
+ }
@@ -9,7 +9,7 @@ export declare enum CaseStatus {
9
9
  export declare enum CaseSeverity {
10
10
  Urgent = "1 - Urgent",
11
11
  Important = "2 - Important",
12
- Normal = "3 - Normal",
12
+ Medium = "3 - Medium",
13
13
  Low = "4 - Low"
14
14
  }
15
15
  export declare const caseListFields = "case_createdByName,case_createdDate,case_lastModifiedDate,case_lastModifiedByName,id,uri,case_summary,case_status,case_product,case_version,case_accountNumber,case_number,case_contactName,case_owner,case_severity,case_last_public_update_date,case_last_public_update_by,case_customer_escalation,case_folderName,case_closedDate";
@@ -56,6 +56,7 @@ export declare const caseListSortColumnIdsToSFDCMap: {
56
56
  type: SFDCKeys;
57
57
  closedDate: SFDCKeys;
58
58
  };
59
+ export declare const caseListSortColumnIdsToGraphQLMap: Record<string, string>;
59
60
  export declare const caseTableColumSortNamesMap: {
60
61
  number: string;
61
62
  summary: string;
@@ -1 +1 @@
1
- {"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../../src/enums/case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE/C,oBAAY,UAAU;IAClB,iBAAiB,wBAAwB;IACzC,eAAe,uBAAuB;IACtC,IAAI,mBAAmB;IACvB,MAAM,WAAW;IACjB,GAAG,cAAc;CACpB;AAED,oBAAY,YAAY;IACpB,MAAM,eAAe;IACrB,SAAS,kBAAkB;IAC3B,MAAM,eAAe;IACrB,GAAG,YAAY;CAClB;AAED,eAAO,MAAM,cAAc,0UACgT,CAAC;AAE5U,oBAAY,iBAAiB;IACzB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,KAAK,gBAAgB;IACrB,OAAO,gBAAgB;IACvB,MAAM,WAAW;IACjB,QAAQ,qBAAqB;IAC7B,iBAAiB,YAAY;IAC7B,aAAa,kBAAkB;IAC/B,KAAK,eAAe;IACpB,eAAe,oBAAoB;IACnC,IAAI,SAAS;IACb,cAAc,eAAe;CAChC;AAED,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;CAa1C,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;CAa1C,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;CAatC,CAAC"}
1
+ {"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../../src/enums/case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE/C,oBAAY,UAAU;IAClB,iBAAiB,wBAAwB;IACzC,eAAe,uBAAuB;IACtC,IAAI,mBAAmB;IACvB,MAAM,WAAW;IACjB,GAAG,cAAc;CACpB;AAED,oBAAY,YAAY;IACpB,MAAM,eAAe;IACrB,SAAS,kBAAkB;IAC3B,MAAM,eAAe;IACrB,GAAG,YAAY;CAClB;AAED,eAAO,MAAM,cAAc,0UACgT,CAAC;AAE5U,oBAAY,iBAAiB;IACzB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,KAAK,gBAAgB;IACrB,OAAO,gBAAgB;IACvB,MAAM,WAAW;IACjB,QAAQ,qBAAqB;IAC7B,iBAAiB,YAAY;IAC7B,aAAa,kBAAkB;IAC/B,KAAK,eAAe;IACpB,eAAe,oBAAoB;IACnC,IAAI,SAAS;IACb,cAAc,eAAe;CAChC;AAED,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;CAa1C,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;CAa1C,CAAC;AAGF,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWpE,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;CAatC,CAAC"}
@@ -11,7 +11,7 @@ export var CaseSeverity;
11
11
  (function (CaseSeverity) {
12
12
  CaseSeverity["Urgent"] = "1 - Urgent";
13
13
  CaseSeverity["Important"] = "2 - Important";
14
- CaseSeverity["Normal"] = "3 - Normal";
14
+ CaseSeverity["Medium"] = "3 - Medium";
15
15
  CaseSeverity["Low"] = "4 - Low";
16
16
  })(CaseSeverity || (CaseSeverity = {}));
17
17
  export const caseListFields = 'case_createdByName,case_createdDate,case_lastModifiedDate,case_lastModifiedByName,id,uri,case_summary,case_status,case_product,case_version,case_accountNumber,case_number,case_contactName,case_owner,case_severity,case_last_public_update_date,case_last_public_update_by,case_customer_escalation,case_folderName,case_closedDate';
@@ -59,6 +59,19 @@ export const caseListSortColumnIdsToSFDCMap = {
59
59
  [CaseListColumnIds.type]: SFDCKeys.caseType,
60
60
  [CaseListColumnIds.caseClosedDate]: SFDCKeys.caseClosedDate,
61
61
  };
62
+ // Maps CaseListColumnIds to GraphQL SalesforceSupportCase_OrderBy field paths
63
+ export const caseListSortColumnIdsToGraphQLMap = {
64
+ [CaseListColumnIds.caseId]: 'CaseNumber',
65
+ [CaseListColumnIds.summary]: 'Subject',
66
+ [CaseListColumnIds.severity]: 'Priority',
67
+ [CaseListColumnIds.owner]: 'OwnerId',
68
+ [CaseListColumnIds.created]: 'CreatedDate',
69
+ [CaseListColumnIds.status]: 'Status',
70
+ [CaseListColumnIds.modified]: 'LastModifiedDate',
71
+ [CaseListColumnIds.accountNumber]: 'Account_Number__c',
72
+ [CaseListColumnIds.type]: 'Type',
73
+ [CaseListColumnIds.caseClosedDate]: 'ClosedDate',
74
+ };
62
75
  export const caseTableColumSortNamesMap = {
63
76
  [CaseListColumnIds.caseId]: 'Case ID',
64
77
  [CaseListColumnIds.summary]: 'Title',
@@ -33,6 +33,7 @@ export declare const advanceSearchFieldNameToSolrFieldMapping: {
33
33
  case_description: string;
34
34
  case_summary: string;
35
35
  case_alternate_id: string;
36
+ case_openshift_cluster_id: string;
36
37
  case_closedDate: string;
37
38
  case_product: string;
38
39
  case_status: string;
@@ -1 +1 @@
1
- {"version":3,"file":"caseSearch.d.ts","sourceRoot":"","sources":["../../../src/enums/caseSearch.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,oBAAY,mBAAmB;IAC3B,KAAK,UAAU;IACf,QAAQ,aAAa;CACxB;AAED,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;CAavC,CAAC;AAEF,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBpD,CAAC"}
1
+ {"version":3,"file":"caseSearch.d.ts","sourceRoot":"","sources":["../../../src/enums/caseSearch.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,oBAAY,mBAAmB;IAC3B,KAAK,UAAU;IACf,QAAQ,aAAa;CACxB;AAED,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;CAavC,CAAC;AAEF,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmBpD,CAAC"}
@@ -19,4 +19,4 @@ export const fieldNameToSolrFieldMapping = {
19
19
  [SolrKeys.type]: 'supportType',
20
20
  [SolrKeys.isPrivate]: 'private',
21
21
  };
22
- export const advanceSearchFieldNameToSolrFieldMapping = Object.assign(Object.assign({}, fieldNameToSolrFieldMapping), { [SolrKeys.fts]: 'FTS', [SolrKeys.cep]: 'CEP', [SolrKeys.accountName]: 'accountName', [SolrKeys.caseNumber]: 'caseNumber', [SolrKeys.caseOwner]: 'ownerSSO', [SolrKeys.modifiedBy]: 'lastModifiedByName', [SolrKeys.createdBySsoUsername]: 'createdBySSO', [SolrKeys.createdBy]: 'createdByName', [SolrKeys.contactName]: 'contactName', [SolrKeys.caseContactSSO]: 'contactSSO', [SolrKeys.modifiedDate]: 'lastModifiedDate', [SolrKeys.createdDate]: 'createdDate', [SolrKeys.description]: 'description', [SolrKeys.caseSummary]: 'summary', [SolrKeys.alternateId]: 'personalReferenceNumber', [SolrKeys.caseClosedDate]: 'closedDate' });
22
+ export const advanceSearchFieldNameToSolrFieldMapping = Object.assign(Object.assign({}, fieldNameToSolrFieldMapping), { [SolrKeys.fts]: 'FTS', [SolrKeys.cep]: 'CEP', [SolrKeys.accountName]: 'accountName', [SolrKeys.caseNumber]: 'caseNumber', [SolrKeys.caseOwner]: 'ownerSSO', [SolrKeys.modifiedBy]: 'lastModifiedByName', [SolrKeys.createdBySsoUsername]: 'createdBySSO', [SolrKeys.createdBy]: 'createdByName', [SolrKeys.contactName]: 'contactName', [SolrKeys.caseContactSSO]: 'contactSSO', [SolrKeys.modifiedDate]: 'lastModifiedDate', [SolrKeys.createdDate]: 'createdDate', [SolrKeys.description]: 'description', [SolrKeys.caseSummary]: 'summary', [SolrKeys.alternateId]: 'personalReferenceNumber', [SolrKeys.openshiftClusterId]: 'openshiftClusterId', [SolrKeys.caseClosedDate]: 'closedDate' });
@@ -1 +1 @@
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
+ {"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,18 +1,12 @@
1
- import { useFetch } from '@rh-support/components';
2
1
  import { useState } from 'react';
3
2
  import { useTranslation } from 'react-i18next';
4
- import { getCaseListFromSolr } from '../utils/caseListUtils';
5
3
  export const MAX_LIMIT = 1000;
6
4
  export function useExportCaseListCSV(props) {
7
5
  const { isExportCsvDisabled, selectedCases } = props;
8
6
  const { t } = useTranslation();
9
- // const currentFilteredCaseCount = currentFilteredCaseList?.numFound ?? 0;
10
- const { isFetching } = useFetch(getCaseListFromSolr, { propgateErrors: true });
11
7
  const [openUpdateSeverityModal, setOpenUpdateSeverityModal] = useState(false);
12
- const isFetchingCSVData = isFetching;
13
8
  let showError = selectedCases.length > MAX_LIMIT;
14
- const isBtnDisabled = isFetchingCSVData || showError;
15
- // To show tooltip if export csv is disabled when SOLR is down
9
+ const isBtnDisabled = showError;
16
10
  const getTooltipContent = () => {
17
11
  let tooltipText = t('Your download will include the first 1000 cases in your list.');
18
12
  if (showError) {
@@ -23,9 +17,7 @@ export function useExportCaseListCSV(props) {
23
17
  }
24
18
  return tooltipText;
25
19
  };
26
- // To check if export csv button is disabled
27
20
  const isExportButtonDisabled = isBtnDisabled || isExportCsvDisabled;
28
- // To toggle download csv modal
29
21
  const toggleDownloadCSVModal = () => {
30
22
  setOpenUpdateSeverityModal((openUpdateSeverityModal) => !openUpdateSeverityModal);
31
23
  };
@@ -1,6 +1,6 @@
1
1
  import { CaseSearchQueryType } from '../enums/caseSearch';
2
2
  export declare function useFilterStateOnLoad(): {
3
- set: (queryFromUrl: string, pageSizeFromUrl: number, currentPageFromUrl: number, searchType: CaseSearchQueryType) => {
3
+ set: (queryFromUrl: string, pageSizeFromUrl: number | undefined, 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;AAK1D,wBAAgB,oBAAoB;wBAkBd,MAAM,mBACH,MAAM,sBACH,MAAM,cACd,mBAAmB;;;;EA+DtC"}
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,GAAG,SAAS,sBACf,MAAM,cACd,mBAAmB;;;;EA+DtC"}
@@ -740,7 +740,7 @@ export const filterValuesFromFacetResponseMock = {
740
740
  count: 111,
741
741
  },
742
742
  {
743
- value: '3 (Normal)',
743
+ value: '3 (Medium)',
744
744
  count: 12198,
745
745
  },
746
746
  {
@@ -0,0 +1,11 @@
1
+ import { IAdvanceSearchDateRanges, IAdvanceSearchFormState, ICaseListFilterState, IFilterInfo } from '../components/case-list/CaseListFilterReducer';
2
+ import { CaseSearchQueryType } from '../enums/caseSearch';
3
+ export declare const hasAdvanceSearchActiveState: (filterState: ICaseListFilterState) => boolean;
4
+ export declare const deriveSearchQueryType: (filterState: ICaseListFilterState) => CaseSearchQueryType;
5
+ export declare const toNameOrSsoFilterValues: (value: string) => string[];
6
+ export declare const mapAdvanceSearchFormToFilterInfo: (formState: IAdvanceSearchFormState) => IFilterInfo;
7
+ export declare const mergeAdvanceSearchFormIntoFilterInfo: (formState: IAdvanceSearchFormState, currentFilterInfo?: Partial<IFilterInfo>) => IFilterInfo;
8
+ export declare const buildAdvanceSearchParsedQuery: (formState: IAdvanceSearchFormState, filterInfo: Partial<IFilterInfo>) => string;
9
+ export declare const mapAdvanceSearchFormToDateRanges: (formState: IAdvanceSearchFormState) => IAdvanceSearchDateRanges;
10
+ export declare const createCaseListFilterStateFromAdvanceSearchForm: (formState: IAdvanceSearchFormState, currentFilterState: ICaseListFilterState) => ICaseListFilterState;
11
+ //# sourceMappingURL=advanceSearchFormMapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanceSearchFormMapper.d.ts","sourceRoot":"","sources":["../../../src/utils/advanceSearchFormMapper.ts"],"names":[],"mappings":"AAIA,OAAO,EAGH,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,WAAW,EACd,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK1D,eAAO,MAAM,2BAA2B,GAAI,aAAa,oBAAoB,KAAG,OACwB,CAAC;AAEzG,eAAO,MAAM,qBAAqB,GAAI,aAAa,oBAAoB,KAAG,mBAC6B,CAAC;AAIxG,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,KAAG,MAAM,EAc7D,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAAI,WAAW,uBAAuB,KAAG,WAsBrF,CAAC;AAEF,eAAO,MAAM,oCAAoC,GAC7C,WAAW,uBAAuB,EAClC,oBAAmB,OAAO,CAAC,WAAW,CAAM,KAC7C,WAoBF,CAAC;AAmBF,eAAO,MAAM,6BAA6B,GACtC,WAAW,uBAAuB,EAClC,YAAY,OAAO,CAAC,WAAW,CAAC,KACjC,MASF,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAAI,WAAW,uBAAuB,KAAG,wBAIpF,CAAC;AAEH,eAAO,MAAM,8CAA8C,GACvD,WAAW,uBAAuB,EAClC,oBAAoB,oBAAoB,KACzC,oBA0BF,CAAC"}
@@ -0,0 +1,71 @@
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
+ };
@@ -0,0 +1,24 @@
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
@@ -0,0 +1 @@
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,MAyBtF,CAAC"}