@rh-support/cases 0.2.42 → 0.2.56
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.
- package/README.md +2 -0
- package/lib/esm/components/case-list/CaseList.d.ts.map +1 -1
- package/lib/esm/components/case-list/CaseList.js +4 -2
- package/lib/esm/components/case-list/case-search/AdvanceSearch.d.ts +1 -0
- package/lib/esm/components/case-list/case-search/AdvanceSearch.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/AdvanceSearch.js +2 -0
- package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.d.ts +2 -0
- package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/BookmarkedSearchesSelector.js +10 -4
- package/lib/esm/components/case-list/case-search/CaseSearch.d.ts +5 -1
- package/lib/esm/components/case-list/case-search/CaseSearch.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/CaseSearch.js +4 -3
- package/lib/esm/components/case-list/case-search/SaveCaseSearchModal.d.ts +3 -1
- package/lib/esm/components/case-list/case-search/SaveCaseSearchModal.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/SaveCaseSearchModal.js +8 -10
- package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.d.ts.map +1 -1
- package/lib/esm/components/case-list/case-search/useAdvanceSearchParser.js +6 -1
- package/lib/esm/hooks/useFilterStateOnLoad.d.ts +4 -1
- package/lib/esm/hooks/useFilterStateOnLoad.d.ts.map +1 -1
- package/lib/esm/hooks/useFilterStateOnLoad.js +5 -6
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseList.d.ts","sourceRoot":"","sources":["../../../../src/components/case-list/CaseList.tsx"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAChC,OAAO,0BAA0B,CAAC;AA4BlC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAKH,0BAA0B,EAI7B,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,mBAAmB,EAAe,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,IAAI,CAAC;AAM1C,OAAO,EAAgB,WAAW,EAA2B,MAAM,uBAAuB,CAAC;AA2B3F,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC3D,YAAY,EAAE,cAAc,EAAE,CAAC;CAClC;AAED,oBAAY,YAAY,GAAG,0BAA0B,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;AAM5F,MAAM,WAAW,gBAAgB;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"CaseList.d.ts","sourceRoot":"","sources":["../../../../src/components/case-list/CaseList.tsx"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAChC,OAAO,0BAA0B,CAAC;AA4BlC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAKH,0BAA0B,EAI7B,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,mBAAmB,EAAe,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,IAAI,CAAC;AAM1C,OAAO,EAAgB,WAAW,EAA2B,MAAM,uBAAuB,CAAC;AA2B3F,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC3D,YAAY,EAAE,cAAc,EAAE,CAAC;CAClC;AAED,oBAAY,YAAY,GAAG,0BAA0B,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;AAM5F,MAAM,WAAW,gBAAgB;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,eA+brC"}
|
|
@@ -70,6 +70,7 @@ export function CaseList(props) {
|
|
|
70
70
|
let isSearchTypeChanged = filterState.filterQueryInfo.type !== prevSearchType;
|
|
71
71
|
const [hasError, setHasError] = useState(null);
|
|
72
72
|
const [isSolrSearchDown, setSolrSearchDown] = useState(false);
|
|
73
|
+
const [defaultSavedSearchName, setDefaultSavedSearchName] = useState('');
|
|
73
74
|
function getCases(currentFilterState) {
|
|
74
75
|
return __awaiter(this, void 0, void 0, function* () {
|
|
75
76
|
let showError;
|
|
@@ -258,7 +259,8 @@ export function CaseList(props) {
|
|
|
258
259
|
// move saved user data in localstorage to user preferences db - needs to be removed after a while
|
|
259
260
|
useMoveCache.save();
|
|
260
261
|
// set filter state based on url or default saved search
|
|
261
|
-
const initFilterState = useFilterStateInit.set(queryFromUrl, pageSizeFromUrl, currentPageFromUrl, searchType);
|
|
262
|
+
const { initFilterState, defaultSearchName } = useFilterStateInit.set(queryFromUrl, pageSizeFromUrl, currentPageFromUrl, searchType);
|
|
263
|
+
setDefaultSavedSearchName(defaultSearchName);
|
|
262
264
|
// set default params when they are empty
|
|
263
265
|
if (!queryFromUrl) {
|
|
264
266
|
searchParams[FILTER_URL_QUERY_SEARCH_PARAM] = ' orderBy lastModifiedDate desc';
|
|
@@ -304,7 +306,7 @@ export function CaseList(props) {
|
|
|
304
306
|
React.createElement("div", { className: "open-case" },
|
|
305
307
|
React.createElement(NewCaseButton, { routeProps: props.routeProps })),
|
|
306
308
|
React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading case search input') } },
|
|
307
|
-
React.createElement(CaseSearch,
|
|
309
|
+
React.createElement(CaseSearch, { defaultSavedSearchName: defaultSavedSearchName }))),
|
|
308
310
|
isBasicSearchMode && (React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading filter chips') } },
|
|
309
311
|
React.createElement(CaseListFilterChips, { productVersionPivotValues: get(pivotValues, SolrPivotKeys.product_version, []), isSolrSearchDown: isSolrSearchDown })))),
|
|
310
312
|
React.createElement("section", { className: "case-search-bottom" },
|
|
@@ -4,6 +4,7 @@ interface IProps {
|
|
|
4
4
|
onSearchTypeChange?: (newType: CaseSearchQueryType) => void;
|
|
5
5
|
onSearchClear?: () => void;
|
|
6
6
|
onSearchSubmit: (parsedQuery: string) => void;
|
|
7
|
+
onAdvancedSearchValidation: (validation: boolean) => void;
|
|
7
8
|
}
|
|
8
9
|
export declare function AdvanceSearch(props: IProps): JSX.Element;
|
|
9
10
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvanceSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/AdvanceSearch.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAMhE,UAAU,MAAM;IACZ,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"AdvanceSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/AdvanceSearch.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAMhE,UAAU,MAAM;IACZ,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,0BAA0B,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,eAwV1C"}
|
|
@@ -23,6 +23,7 @@ export function AdvanceSearch(props) {
|
|
|
23
23
|
try {
|
|
24
24
|
parse(queryString);
|
|
25
25
|
setIsParsingSuccessful(true);
|
|
26
|
+
props.onAdvancedSearchValidation(true);
|
|
26
27
|
try {
|
|
27
28
|
// to trigger the autocomplete on a valid selection
|
|
28
29
|
parse(queryString + ' ');
|
|
@@ -34,6 +35,7 @@ export function AdvanceSearch(props) {
|
|
|
34
35
|
}
|
|
35
36
|
catch (e) {
|
|
36
37
|
setIsParsingSuccessful(false);
|
|
38
|
+
props.onAdvancedSearchValidation(false);
|
|
37
39
|
parserErrorRef.current = e;
|
|
38
40
|
autoCompleteSetup(e.expected, queryString.substring(e.location.start.offset, queryString.length));
|
|
39
41
|
}
|
|
@@ -2,6 +2,8 @@ import { CaseSearchQueryType } from '../../../enums/caseSearch';
|
|
|
2
2
|
interface IProps {
|
|
3
3
|
currentCaseSearchString: string;
|
|
4
4
|
currentSearchType: CaseSearchQueryType;
|
|
5
|
+
isAdvancedSearchValid: boolean;
|
|
6
|
+
defaultSavedSearchName: string;
|
|
5
7
|
}
|
|
6
8
|
export declare function BookmarkedSearchesSelector(props: IProps): JSX.Element;
|
|
7
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookmarkedSearchesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/BookmarkedSearchesSelector.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAWhE,UAAU,MAAM;IACZ,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"BookmarkedSearchesSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/BookmarkedSearchesSelector.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAWhE,UAAU,MAAM;IACZ,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,mBAAmB,CAAC;IACvC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,eAyNvD"}
|
|
@@ -10,6 +10,7 @@ import isEmpty from 'lodash/isEmpty';
|
|
|
10
10
|
import isEqual from 'lodash/isEqual';
|
|
11
11
|
import React, { useContext, useEffect, useRef, useState } from 'react';
|
|
12
12
|
import { Trans, useTranslation } from 'react-i18next';
|
|
13
|
+
import { CaseSearchQueryType } from '../../../enums/caseSearch';
|
|
13
14
|
import { CaseListFilterDispatchContext, CaseListFilterStateContext, initialCaseFilterState, } from '../CaseListFilterContext';
|
|
14
15
|
import { isNoFilterApplied, isOnlyDefaultFilterApplied } from '../CaseListFilterHelpers';
|
|
15
16
|
import { clearFilters, updateFilterQuery, updateFilterState, updateSort } from '../CaseListFilterReducer';
|
|
@@ -68,7 +69,7 @@ export function BookmarkedSearchesSelector(props) {
|
|
|
68
69
|
setSelectedSearch(selectedItem);
|
|
69
70
|
const { filterState: filterStateSaved, queryString, type, sortState } = searchQuery;
|
|
70
71
|
// update filters with new value
|
|
71
|
-
|
|
72
|
+
updateFilterQuery(dispatch, { queryString: queryString || '', type: type || CaseSearchQueryType.BASIC });
|
|
72
73
|
updateFilterState(dispatch, { filterInfo: Object.assign(Object.assign({}, initialCaseFilterState.filterInfo), filterStateSaved) });
|
|
73
74
|
sortState && updateSort(dispatch, sortState);
|
|
74
75
|
doToggle && toggleMenu(!isMenuOpen);
|
|
@@ -90,6 +91,9 @@ export function BookmarkedSearchesSelector(props) {
|
|
|
90
91
|
setIsAddingBookmarkSearch(true);
|
|
91
92
|
modalToggle();
|
|
92
93
|
};
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
!isEmpty(props.defaultSavedSearchName) && setSelectedSearch(props.defaultSavedSearchName);
|
|
96
|
+
}, [props.defaultSavedSearchName]);
|
|
93
97
|
const renderSavedSearchItems = Object.keys(bookmarkedSearches)
|
|
94
98
|
.sort()
|
|
95
99
|
.map((bookmarkedSearch) => {
|
|
@@ -114,14 +118,16 @@ export function BookmarkedSearchesSelector(props) {
|
|
|
114
118
|
...(renderSavedSearchItems.length !== 0 ? [React.createElement(DropdownSeparator, { key: "separator" })] : []),
|
|
115
119
|
...(!isEmpty(mostRecentSearch) ? renderMostRecentSearch : []),
|
|
116
120
|
];
|
|
121
|
+
const advancedSearchPhraseIsNotValid = filterState.filterQueryInfo.type === CaseSearchQueryType.ADVANCED && !props.isAdvancedSearchValid;
|
|
122
|
+
const noFilterOrSearchQueryApplied = !props.currentCaseSearchString && (isOnlyDefaultFilterApplied(filterState) || isNoFilterApplied(filterState));
|
|
117
123
|
return (React.createElement(React.Fragment, null,
|
|
118
124
|
React.createElement("div", { className: "bookmark-search-dropdown-wrapper" },
|
|
119
125
|
React.createElement(Dropdown, { className: "bookmark-search-dropdown", isOpen: isMenuOpen, dropdownItems: renderListItems, toggle: React.createElement(DropdownToggle, { splitButtonItems: [
|
|
120
126
|
React.createElement(DropdownToggleAction, { onClick: onSaveForLaterClick, key: "action", isDisabled: !!selectedSearch ||
|
|
121
|
-
|
|
122
|
-
|
|
127
|
+
noFilterOrSearchQueryApplied ||
|
|
128
|
+
advancedSearchPhraseIsNotValid, "data-tracking-id": "case-list-bookmark-search-trigger" }, selectedSearch ? selectedSearch : React.createElement(Trans, null, "Save for later")),
|
|
123
129
|
], splitButtonVariant: "action", onToggle: onMenuToggle, "aria-label": t(`${isMenuOpen ? 'Close' : 'Open'} bookmarked searches selector'`), isDisabled: !bookmarkedSearches }), disabled: hydraUserPreferences.isFetching || hydraUserPreferences.isError }),
|
|
124
130
|
flatMap(filterInfo).length === 0 && (React.createElement(Button, { variant: "link", onClick: onBookmarkSelectorChange('', mostRecentSearch, false), "data-tracking-id": "case-most-recent-search-button", className: "most-recent-search-button" },
|
|
125
131
|
React.createElement(Trans, null, "Restore most recent filters")))),
|
|
126
|
-
React.createElement(ConfirmationServiceProvider, null, isSaveSearchModalOpen && (React.createElement(SaveCaseSearchModal, { isModalOpen: isSaveSearchModalOpen, modalToggle: modalToggle, isAdding: isAddingBookmarkSearch, selectedSearchNameToEdit: selectedSearchNameToEdit })))));
|
|
132
|
+
React.createElement(ConfirmationServiceProvider, null, isSaveSearchModalOpen && (React.createElement(SaveCaseSearchModal, { currentCaseSearchString: props.currentCaseSearchString, currentSearchType: props.currentSearchType, isModalOpen: isSaveSearchModalOpen, modalToggle: modalToggle, isAdding: isAddingBookmarkSearch, selectedSearchNameToEdit: selectedSearchNameToEdit })))));
|
|
127
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/CaseSearch.tsx"],"names":[],"mappings":"AAeA,wBAAgB,UAAU,
|
|
1
|
+
{"version":3,"file":"CaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/CaseSearch.tsx"],"names":[],"mappings":"AAeA,UAAU,MAAM;IACZ,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,eAqJvC"}
|
|
@@ -11,7 +11,7 @@ import { CaseListFilterDispatchContext, CaseListFilterStateContext } from '../Ca
|
|
|
11
11
|
import { initialFilterInfo, updateFilterQuery, updateFilterState } from '../CaseListFilterReducer';
|
|
12
12
|
import { AdvanceSearch } from './AdvanceSearch';
|
|
13
13
|
import { BookmarkedSearchesSelector } from './BookmarkedSearchesSelector';
|
|
14
|
-
export function CaseSearch() {
|
|
14
|
+
export function CaseSearch(props) {
|
|
15
15
|
const { t } = useTranslation();
|
|
16
16
|
const ability = useContext(AbilityContext);
|
|
17
17
|
const canUseAdvancedSearch = ability.can(resourceActions.PATCH, resources.CASE_LIST, CaseListFields.ADVANCED_SEARCH);
|
|
@@ -19,6 +19,7 @@ export function CaseSearch() {
|
|
|
19
19
|
const { filterQueryInfo } = filterState;
|
|
20
20
|
const [searchVal, setSearchVal] = useState(filterQueryInfo.queryString);
|
|
21
21
|
const [searchType, setSearchType] = useState(CaseSearchQueryType.BASIC);
|
|
22
|
+
const [isAdvancedSearchValid, setIsAdvancedSearchValid] = useState(true);
|
|
22
23
|
const dispatch = useContext(CaseListFilterDispatchContext);
|
|
23
24
|
const { isFetching } = useCaseListStateContext();
|
|
24
25
|
useEffect(() => {
|
|
@@ -90,10 +91,10 @@ export function CaseSearch() {
|
|
|
90
91
|
};
|
|
91
92
|
const renderAdvanceSearch = () => {
|
|
92
93
|
return canUseAdvancedSearch ? (React.createElement(React.Fragment, null,
|
|
93
|
-
React.createElement(AdvanceSearch, { onSearchValChange: onSearchValChange, onSearchClear: clearSearchVal, onSearchSubmit: onCaseSearch, onSearchTypeChange: onSearchTypeChange }))) : (React.createElement(React.Fragment, null));
|
|
94
|
+
React.createElement(AdvanceSearch, { onSearchValChange: onSearchValChange, onSearchClear: clearSearchVal, onSearchSubmit: onCaseSearch, onSearchTypeChange: onSearchTypeChange, onAdvancedSearchValidation: (isValid) => setIsAdvancedSearchValid(isValid) }))) : (React.createElement(React.Fragment, null));
|
|
94
95
|
};
|
|
95
96
|
return (React.createElement(React.Fragment, null,
|
|
96
97
|
React.createElement("form", { onSubmit: handleSubmit, onKeyDown: handleSearchInputKeyDown },
|
|
97
98
|
React.createElement("div", { className: "form-group case-search-form-group" }, CaseSearchQueryType.BASIC === searchType ? renderBasicSearch() : renderAdvanceSearch())),
|
|
98
|
-
React.createElement(BookmarkedSearchesSelector, { currentCaseSearchString: searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim(), currentSearchType: searchType })));
|
|
99
|
+
React.createElement(BookmarkedSearchesSelector, { currentCaseSearchString: searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim(), currentSearchType: searchType, isAdvancedSearchValid: isAdvancedSearchValid, defaultSavedSearchName: props.defaultSavedSearchName })));
|
|
99
100
|
}
|
|
@@ -3,7 +3,9 @@ interface IProps {
|
|
|
3
3
|
modalToggle: () => void;
|
|
4
4
|
isAdding: boolean;
|
|
5
5
|
selectedSearchNameToEdit: string;
|
|
6
|
+
currentCaseSearchString: string;
|
|
7
|
+
currentSearchType: string;
|
|
6
8
|
}
|
|
7
|
-
export declare function SaveCaseSearchModal({ isModalOpen, modalToggle, isAdding, selectedSearchNameToEdit }: IProps): JSX.Element;
|
|
9
|
+
export declare function SaveCaseSearchModal({ isModalOpen, modalToggle, isAdding, selectedSearchNameToEdit, currentCaseSearchString, currentSearchType, }: IProps): JSX.Element;
|
|
8
10
|
export {};
|
|
9
11
|
//# sourceMappingURL=SaveCaseSearchModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SaveCaseSearchModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/SaveCaseSearchModal.tsx"],"names":[],"mappings":"AA4BA,UAAU,MAAM;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,wBAAwB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"SaveCaseSearchModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/SaveCaseSearchModal.tsx"],"names":[],"mappings":"AA4BA,UAAU,MAAM;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,mBAAmB,CAAC,EAChC,WAAW,EACX,WAAW,EACX,QAAQ,EACR,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,GACpB,EAAE,MAAM,eAwQR"}
|
|
@@ -19,7 +19,7 @@ import { Trans, useTranslation } from 'react-i18next';
|
|
|
19
19
|
import { CaseSearchQueryType } from '../../../enums/caseSearch';
|
|
20
20
|
import { createUserFriendlyQueryFromFilterState } from '../../../utils/caseSearchUtils';
|
|
21
21
|
import { CaseListFilterStateContext } from '../CaseListFilterContext';
|
|
22
|
-
export function SaveCaseSearchModal({ isModalOpen, modalToggle, isAdding, selectedSearchNameToEdit }) {
|
|
22
|
+
export function SaveCaseSearchModal({ isModalOpen, modalToggle, isAdding, selectedSearchNameToEdit, currentCaseSearchString, currentSearchType, }) {
|
|
23
23
|
const { t } = useTranslation();
|
|
24
24
|
const [localSavedSearchName, setLocalSavedSearchName] = useState('');
|
|
25
25
|
const [localDefaultChecked, setLocalDefaultChecked] = useState(false);
|
|
@@ -70,13 +70,12 @@ export function SaveCaseSearchModal({ isModalOpen, modalToggle, isAdding, select
|
|
|
70
70
|
// need to remove old default search if there is any
|
|
71
71
|
localDefaultChecked && setDefaultSearchToFalse();
|
|
72
72
|
if (isAdding) {
|
|
73
|
-
const type = filterState.filterQueryInfo.type;
|
|
74
73
|
previousBookmarkedSearchesObj[localSavedSearchName] = {
|
|
75
74
|
filterState: pickBy(filterState.filterInfo, (value) => value.length !== 0),
|
|
76
75
|
sortState: sortInfo,
|
|
77
|
-
type,
|
|
76
|
+
type: currentSearchType,
|
|
77
|
+
queryString: currentCaseSearchString,
|
|
78
78
|
defaultChecked: localDefaultChecked,
|
|
79
|
-
queryString: getQueryStr(),
|
|
80
79
|
};
|
|
81
80
|
}
|
|
82
81
|
else {
|
|
@@ -129,11 +128,10 @@ export function SaveCaseSearchModal({ isModalOpen, modalToggle, isAdding, select
|
|
|
129
128
|
const getQueryStr = () => {
|
|
130
129
|
let queryStr = '';
|
|
131
130
|
if (isAdding) {
|
|
132
|
-
const type = filterState.filterQueryInfo.type;
|
|
133
131
|
queryStr =
|
|
134
|
-
|
|
135
|
-
? createUserFriendlyQueryFromFilterState(filterInfo,
|
|
136
|
-
:
|
|
132
|
+
currentSearchType === CaseSearchQueryType.BASIC
|
|
133
|
+
? createUserFriendlyQueryFromFilterState(filterInfo, currentCaseSearchString)
|
|
134
|
+
: currentCaseSearchString;
|
|
137
135
|
}
|
|
138
136
|
else if (selectedSearchNameToEdit && previousBookmarkedSearchesObj[selectedSearchNameToEdit]) {
|
|
139
137
|
queryStr = createUserFriendlyQueryFromFilterState(previousBookmarkedSearchesObj[selectedSearchNameToEdit].filterState, previousBookmarkedSearchesObj[selectedSearchNameToEdit].queryString);
|
|
@@ -141,14 +139,14 @@ export function SaveCaseSearchModal({ isModalOpen, modalToggle, isAdding, select
|
|
|
141
139
|
else {
|
|
142
140
|
queryStr = previousBookmarkedSearchesObj[localSavedSearchName] || '';
|
|
143
141
|
}
|
|
144
|
-
return queryStr;
|
|
142
|
+
return queryStr || '';
|
|
145
143
|
};
|
|
146
144
|
useEffect(() => {
|
|
147
145
|
var _a;
|
|
148
146
|
setLocalSavedSearchName(selectedSearchNameToEdit);
|
|
149
147
|
setLocalDefaultChecked(((_a = previousBookmarkedSearchesObj[selectedSearchNameToEdit]) === null || _a === void 0 ? void 0 : _a.defaultChecked) || false);
|
|
150
148
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
151
|
-
}, [filterInfo, filterQueryInfo.queryString, isAdding, selectedSearchNameToEdit]);
|
|
149
|
+
}, [filterInfo, filterQueryInfo.queryString, isAdding, selectedSearchNameToEdit, currentCaseSearchString]);
|
|
152
150
|
return (React.createElement(Modal, { variant: ModalVariant.medium, title: isAdding ? t('Save search and filters') : t('Edit saved search and filters'), isOpen: isModalOpen, onClose: closeModal, style: { overflow: 'visible' }, actions: [
|
|
153
151
|
React.createElement(Button, { key: "save", variant: ButtonVariant.primary, isLoading: isUpdating, spinnerAriaValueText: hydraUserPreferences.isFetching ? 'Saving' : undefined, isDisabled: hydraUserPreferences.isFetching ||
|
|
154
152
|
(saveButtonIsClicked && (isEmpty(localSavedSearchName.trim()) || isDuplicateNameError)), "data-tracking-id": isAdding ? 'case-list-bookmark-search-saved' : 'case-list-bookmark-search-edited', onClick: save },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAdvanceSearchParser.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/useAdvanceSearchParser.tsx"],"names":[],"mappings":"AAWA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,MAAM,EAAE;;CAAA;yBASzB,MAAM;6BASF,MAAM;;
|
|
1
|
+
{"version":3,"file":"useAdvanceSearchParser.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/useAdvanceSearchParser.tsx"],"names":[],"mappings":"AAWA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,MAAM,EAAE;;CAAA;yBASzB,MAAM;6BASF,MAAM;;EA4EzC"}
|
|
@@ -26,7 +26,12 @@ export default function useAdvanceSearchParser({ onInit }) {
|
|
|
26
26
|
return '';
|
|
27
27
|
};
|
|
28
28
|
const initParser = () => {
|
|
29
|
-
|
|
29
|
+
try {
|
|
30
|
+
parserRef.current = PEG.generate(grammerStringRef.current);
|
|
31
|
+
}
|
|
32
|
+
catch (_a) {
|
|
33
|
+
parserRef.current = null;
|
|
34
|
+
}
|
|
30
35
|
};
|
|
31
36
|
// write products, severity and status to grammar string once we have the values from facets
|
|
32
37
|
useEffect(() => {
|
|
@@ -1,5 +1,8 @@
|
|
|
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, currentPageFromUrl: number, searchType: CaseSearchQueryType) => {
|
|
4
|
+
initFilterState: any;
|
|
5
|
+
defaultSearchName: string;
|
|
6
|
+
};
|
|
4
7
|
};
|
|
5
8
|
//# sourceMappingURL=useFilterStateOnLoad.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFilterStateOnLoad.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFilterStateOnLoad.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFilterStateOnLoad.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFilterStateOnLoad.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAI1D,wBAAgB,oBAAoB;wBAkBd,MAAM,mBACH,MAAM,sBACH,MAAM,cACd,mBAAmB;;;;EAsDtC"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { GlobalMetadataStateContext, UserPreferencesKeys } from '@rh-support/react-context';
|
|
2
2
|
import find from 'lodash/find';
|
|
3
3
|
import findKey from 'lodash/findKey';
|
|
4
|
-
import isEmpty from 'lodash/isEmpty';
|
|
5
4
|
import { useContext, useMemo } from 'react';
|
|
6
5
|
import { CaseListFilterStateContext, initialCaseFilterState } from '../components/case-list/CaseListFilterContext';
|
|
7
|
-
import { isArrayHashMapEmpty } from '../components/case-list/CaseListFilterHelpers';
|
|
8
6
|
import { SolrKeys } from '../enums/filters';
|
|
9
7
|
import { createFilterStateFromUrlQuery } from '../utils/caseSearchUtils';
|
|
10
8
|
export function useFilterStateOnLoad() {
|
|
@@ -14,15 +12,13 @@ export function useFilterStateOnLoad() {
|
|
|
14
12
|
const savedSearchesObj = useMemo(() => ((savesSearches === null || savesSearches === void 0 ? void 0 : savesSearches.value) ? JSON.parse(savesSearches.value) : {}), [savesSearches]);
|
|
15
13
|
const set = (queryFromUrl, pageSizeFromUrl, currentPageFromUrl, searchType) => {
|
|
16
14
|
const filterStateFromURL = createFilterStateFromUrlQuery(queryFromUrl, globalMetadataState, pageSizeFromUrl, currentPageFromUrl, searchType);
|
|
17
|
-
const hasFilterStateFromURL = !isArrayHashMapEmpty(filterStateFromURL.filterInfo) &&
|
|
18
|
-
!isEmpty(filterStateFromURL.filterQueryInfo.queryString);
|
|
19
15
|
let savedSearchFilterState = null;
|
|
20
16
|
const defaultSavedSearchKey = findKey(savedSearchesObj, { defaultChecked: true });
|
|
21
17
|
if (defaultSavedSearchKey) {
|
|
22
18
|
const { filterState: filterStateSaved, queryString, type, sortState, } = savedSearchesObj[defaultSavedSearchKey];
|
|
23
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) });
|
|
24
20
|
}
|
|
25
|
-
let defaultFilterState =
|
|
21
|
+
let defaultFilterState = queryFromUrl
|
|
26
22
|
? filterStateFromURL
|
|
27
23
|
: savedSearchFilterState
|
|
28
24
|
? savedSearchFilterState
|
|
@@ -32,7 +28,10 @@ export function useFilterStateOnLoad() {
|
|
|
32
28
|
const updatedFilterInfo = Object.assign(Object.assign({}, filterState.filterInfo), { [SolrKeys.group]: [{ key: defaultGroup.groupNum, value: defaultGroup.name }] });
|
|
33
29
|
defaultFilterState = Object.assign(Object.assign({}, filterState), { filterInfo: updatedFilterInfo });
|
|
34
30
|
}
|
|
35
|
-
return
|
|
31
|
+
return {
|
|
32
|
+
initFilterState: defaultFilterState,
|
|
33
|
+
defaultSearchName: defaultSavedSearchKey && !queryFromUrl ? defaultSavedSearchKey : '',
|
|
34
|
+
};
|
|
36
35
|
};
|
|
37
36
|
return {
|
|
38
37
|
set,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/cases",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.56",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -53,10 +53,10 @@
|
|
|
53
53
|
"@patternfly/react-core": "4.194.0",
|
|
54
54
|
"@patternfly/react-table": "4.63.0",
|
|
55
55
|
"@rh-support/api": "0.3.10",
|
|
56
|
-
"@rh-support/components": "1.1.
|
|
57
|
-
"@rh-support/react-context": "0.2.
|
|
56
|
+
"@rh-support/components": "1.1.39",
|
|
57
|
+
"@rh-support/react-context": "0.2.40",
|
|
58
58
|
"@rh-support/types": "0.2.0",
|
|
59
|
-
"@rh-support/user-permissions": "0.2.
|
|
59
|
+
"@rh-support/user-permissions": "0.2.30",
|
|
60
60
|
"@rh-support/utils": "0.2.21",
|
|
61
61
|
"i18next": "^19.0.1",
|
|
62
62
|
"localforage": "^1.7.3",
|
|
@@ -101,5 +101,5 @@
|
|
|
101
101
|
"not ie <= 11",
|
|
102
102
|
"not op_mini all"
|
|
103
103
|
],
|
|
104
|
-
"gitHead": "
|
|
104
|
+
"gitHead": "2717a54ca918fae7f6461e1e29c9bb869bf5f947"
|
|
105
105
|
}
|