@rh-support/cases 1.0.3 → 1.0.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"AdvanceSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/AdvanceSearch.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAKhE,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,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,0BAA0B,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,eAgT1C"}
1
+ {"version":3,"file":"AdvanceSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/AdvanceSearch.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAIhE,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,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,0BAA0B,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,eAwS1C"}
@@ -5,15 +5,13 @@ import isEmpty from 'lodash/isEmpty';
5
5
  import React, { useContext, useEffect, useRef, useState } from 'react';
6
6
  import { Trans, useTranslation } from 'react-i18next';
7
7
  import { CaseSearchQueryType } from '../../../enums/caseSearch';
8
- import { CaseListFilterDispatchContext, CaseListFilterStateContext } from '../CaseListFilterContext';
9
- import { updateFilterQuery } from '../CaseListFilterReducer';
8
+ import { CaseListFilterStateContext } from '../CaseListFilterContext';
10
9
  import useAdvanceSearchParser from './useAdvanceSearchParser';
11
10
  export function AdvanceSearch(props) {
12
11
  const { t } = useTranslation();
13
12
  const filterState = useContext(CaseListFilterStateContext);
14
13
  const { filterQueryInfo } = filterState;
15
14
  const isFirstMountRef = useRef(true);
16
- const dispatch = useContext(CaseListFilterDispatchContext);
17
15
  const [inputString, setInputString] = useState('');
18
16
  const [autoCompleteList, setAutoCompleteList] = useState([]);
19
17
  const dropdownWrapperRef = useRef(null);
@@ -35,7 +33,12 @@ export function AdvanceSearch(props) {
35
33
  setIsParsingSuccessful(false);
36
34
  props.onAdvancedSearchValidation(false);
37
35
  parserErrorRef.current = e;
38
- autoCompleteSetup(e.expected, inputString.substring(e.location.start.offset, inputString.length));
36
+ // sometimes a race condition happens. Before parse js runs successfully we
37
+ // reach to this line because of that wrapped this line in try/catch
38
+ try {
39
+ autoCompleteSetup(e.expected, inputString.substring(e.location.start.offset, inputString.length));
40
+ }
41
+ catch (_a) { }
39
42
  }
40
43
  };
41
44
  const { parse, parseSafe, parserRef } = useAdvanceSearchParser({ onInit: parseQuery });
@@ -200,20 +203,6 @@ export function AdvanceSearch(props) {
200
203
  props.onSearchSubmit && props.onSearchSubmit(CaseSearchQueryType.ADVANCED, parsedQuery);
201
204
  };
202
205
  const onBasicClick = () => {
203
- var _a, _b;
204
- if (inputString) {
205
- if (((_a = filterState.filterQueryInfo) === null || _a === void 0 ? void 0 : _a.queryString) === '') {
206
- props.onSearchValChange && props.onSearchValChange('');
207
- }
208
- updateFilterQuery(dispatch, {
209
- type: CaseSearchQueryType.BASIC,
210
- queryString: ((_b = filterState.filterQueryInfo) === null || _b === void 0 ? void 0 : _b.queryString) || '',
211
- parsedQuery: '',
212
- });
213
- }
214
- else {
215
- updateFilterQuery(dispatch, Object.assign(Object.assign({}, filterState.filterQueryInfo), { type: CaseSearchQueryType.BASIC }));
216
- }
217
206
  props.onSearchTypeChange && props.onSearchTypeChange(CaseSearchQueryType.BASIC);
218
207
  };
219
208
  const isQueryInValid = inputString && !isParsingSuccessful;
@@ -1 +1 @@
1
- {"version":3,"file":"CaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/CaseSearch.tsx"],"names":[],"mappings":"AAkBA,UAAU,MAAM;IACZ,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,eAuKvC"}
1
+ {"version":3,"file":"CaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/CaseSearch.tsx"],"names":[],"mappings":"AAsBA,UAAU,MAAM;IACZ,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,eAsLvC"}
@@ -2,13 +2,13 @@ import { Button, SearchInput } from '@patternfly/react-core';
2
2
  import { GlobalMetadataStateContext } from '@rh-support/react-context';
3
3
  import { AbilityContext, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
4
4
  import isEmpty from 'lodash/isEmpty';
5
- import React, { useContext, useEffect, useState } from 'react';
5
+ import React, { useCallback, useContext, useEffect, useState } from 'react';
6
6
  import { Trans, useTranslation } from 'react-i18next';
7
7
  import { CaseSearchQueryType } from '../../../enums/caseSearch';
8
8
  import { createFilterStateFromAdvancedQuery, createUserFriendlyQueryFromFilterStateAdvancedSearch, } from '../../../utils/caseSearchUtils';
9
9
  import { useCaseListStateContext } from '../CaseListContext';
10
- import { CaseListFilterDispatchContext, CaseListFilterStateContext } from '../CaseListFilterContext';
11
- import { updateFilterQuery, updateFilterState } from '../CaseListFilterReducer';
10
+ import { CaseListFilterDispatchContext, CaseListFilterStateContext, initialPaginationInfo, } from '../CaseListFilterContext';
11
+ import { initialFilterInfo, updateFilterQuery, updateFilterState } from '../CaseListFilterReducer';
12
12
  import { AdvanceSearch } from './AdvanceSearch';
13
13
  import { BookmarkedSearchesSelector } from './BookmarkedSearchesSelector';
14
14
  export function CaseSearch(props) {
@@ -19,23 +19,28 @@ export function CaseSearch(props) {
19
19
  const filterState = useContext(CaseListFilterStateContext);
20
20
  const { filterQueryInfo } = filterState;
21
21
  const [searchVal, setSearchVal] = useState(filterQueryInfo.queryString);
22
- const [searchType, setSearchType] = useState(CaseSearchQueryType.BASIC);
23
22
  const [isAdvancedSearchValid, setIsAdvancedSearchValid] = useState(true);
24
23
  const dispatch = useContext(CaseListFilterDispatchContext);
25
24
  const { isFetching } = useCaseListStateContext();
25
+ const getType = useCallback(() => (filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.type) || CaseSearchQueryType.BASIC, [filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.type]);
26
26
  // on queryString and parsedQuery change need to update search
27
27
  useEffect(() => {
28
- setSearchVal(filterQueryInfo.queryString);
29
- }, [filterQueryInfo]);
30
- useEffect(() => {
31
- if (searchType === filterQueryInfo.type)
32
- return;
33
- setSearchType(filterQueryInfo.type);
34
- // eslint-disable-next-line react-hooks/exhaustive-deps
35
- }, [filterQueryInfo.type]);
28
+ if (getType() === CaseSearchQueryType.ADVANCED) {
29
+ setSearchVal(filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.parsedQuery);
30
+ }
31
+ else {
32
+ setSearchVal(filterQueryInfo.queryString);
33
+ }
34
+ }, [filterQueryInfo, getType]);
36
35
  const onSearchValChange = (value) => {
37
36
  if (isEmpty(value.trim())) {
38
- clearSearchVal();
37
+ setSearchVal('');
38
+ // clear search but keep type and sort info
39
+ updateFilterState(dispatch, Object.assign(Object.assign({}, filterState), { filterInfo: initialFilterInfo, filterQueryInfo: {
40
+ queryString: '',
41
+ parsedQuery: '',
42
+ type: CaseSearchQueryType.ADVANCED,
43
+ }, paginationInfo: initialPaginationInfo }));
39
44
  }
40
45
  else {
41
46
  setSearchVal(value.trim());
@@ -44,10 +49,10 @@ export function CaseSearch(props) {
44
49
  const clearSearchVal = () => {
45
50
  setSearchVal('');
46
51
  (filterQueryInfo === null || filterQueryInfo === void 0 ? void 0 : filterQueryInfo.queryString) &&
47
- updateFilterQuery(dispatch, { type: searchType, queryString: '', parsedQuery: '' });
52
+ updateFilterQuery(dispatch, { type: getType(), queryString: '', parsedQuery: '' });
48
53
  };
49
54
  const onCaseSearch = (parsedQuery = '', queryString = searchVal) => {
50
- updateFilterQuery(dispatch, { type: searchType, queryString, parsedQuery });
55
+ updateFilterQuery(dispatch, { type: getType(), queryString, parsedQuery });
51
56
  };
52
57
  const onCaseSearchAdvanced = (type, parsedQuery = '', queryStringInputBox = searchVal) => {
53
58
  const newFilterState = createFilterStateFromAdvancedQuery(parsedQuery.replace(/ and /g, ' AND ').replace(/ or /g, ' OR '), globalMetadataState, filterState, queryStringInputBox, type);
@@ -64,7 +69,9 @@ export function CaseSearch(props) {
64
69
  parsedQuery,
65
70
  });
66
71
  }
67
- setSearchType(newType);
72
+ else {
73
+ updateFilterQuery(dispatch, Object.assign(Object.assign({}, filterState.filterQueryInfo), { type: CaseSearchQueryType.BASIC }));
74
+ }
68
75
  };
69
76
  // To check is Search Button is disabled or not
70
77
  const isSearchButtonDisabled = isEmpty(filterQueryInfo.queryString) && isEmpty(searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim());
@@ -79,7 +86,7 @@ export function CaseSearch(props) {
79
86
  const handleSubmit = (ev) => {
80
87
  ev.preventDefault();
81
88
  // for advance search submit should only happen on btn click or ctrl+enter which will be handled manually
82
- searchType === CaseSearchQueryType.BASIC && onCaseSearch();
89
+ getType() === CaseSearchQueryType.BASIC && onCaseSearch();
83
90
  };
84
91
  const renderBasicSearch = () => {
85
92
  return (React.createElement(React.Fragment, null,
@@ -96,6 +103,6 @@ export function CaseSearch(props) {
96
103
  };
97
104
  return (React.createElement(React.Fragment, null,
98
105
  React.createElement("form", { onSubmit: handleSubmit, onKeyDown: handleSearchInputKeyDown },
99
- React.createElement("div", { className: "form-group case-search-form-group" }, CaseSearchQueryType.BASIC === searchType ? renderBasicSearch() : renderAdvanceSearch())),
100
- React.createElement(BookmarkedSearchesSelector, { currentCaseSearchString: searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim(), currentSearchType: searchType, isAdvancedSearchValid: isAdvancedSearchValid, defaultSavedSearchName: props.defaultSavedSearchName })));
106
+ React.createElement("div", { className: "form-group case-search-form-group" }, CaseSearchQueryType.BASIC === getType() ? renderBasicSearch() : renderAdvanceSearch())),
107
+ React.createElement(BookmarkedSearchesSelector, { currentCaseSearchString: searchVal === null || searchVal === void 0 ? void 0 : searchVal.trim(), currentSearchType: getType(), isAdvancedSearchValid: isAdvancedSearchValid, defaultSavedSearchName: props.defaultSavedSearchName })));
101
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useAdvanceSearchParser.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/useAdvanceSearchParser.tsx"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,MAAM,EAAE;;CAAA;yBASzB,MAAM;6BAIF,MAAM;;EAwLzC"}
1
+ {"version":3,"file":"useAdvanceSearchParser.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-search/useAdvanceSearchParser.tsx"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,MAAM,EAAE;;CAAA;yBASzB,MAAM;6BAIF,MAAM;;EA0LzC"}
@@ -50,7 +50,7 @@ export default function useAdvanceSearchParser({ onInit }) {
50
50
 
51
51
  andSequence = parts:(" and " sequencePart)+ { return [].concat.apply([], parts).join(""); }
52
52
  orSequence = parts:(" or " sequencePart)+ { return [].concat.apply([], parts).join(""); }
53
- sequencePart = criteria / "(" sq:sequence ")" { return '(' + sq + ')' }
53
+ sequencePart = criteria / "("__ sq:sequence __")" { return '(' + sq + ')' }
54
54
 
55
55
  criteria = basicCriteria / notCriteria
56
56
  notCriteria = "-"criteria:basicCriteria {return '-' + criteria; }
@@ -169,6 +169,8 @@ export default function useAdvanceSearchParser({ onInit }) {
169
169
  / accountNameMultipleValue / _
170
170
  accountNameMultipleValue = "(" val:(accountNameValue)+ ")" { return joinByOr(val); }
171
171
 
172
+ __ = [ ]*
173
+
172
174
  _ "whitespace"
173
175
  = [ \\t\\r\\n\\f]+
174
176
 
@@ -1,4 +1,4 @@
1
- import { SolrKeys } from './filters';
1
+ import { SFDCKeys, SolrKeys } from './filters';
2
2
  export declare enum CaseStatus {
3
3
  WaitingOnCustomer = "Waiting on Customer",
4
4
  WaitingOnRedHat = "Waiting on Red Hat",
@@ -42,4 +42,18 @@ export declare const caseListSortColumnIdsToSolrMap: {
42
42
  type: SolrKeys;
43
43
  closedDate: SolrKeys;
44
44
  };
45
+ export declare const caseListSortColumnIdsToSFDCMap: {
46
+ number: SFDCKeys;
47
+ summary: SFDCKeys;
48
+ severity: SFDCKeys;
49
+ contactName: SFDCKeys;
50
+ createdDate: SFDCKeys;
51
+ status: SFDCKeys;
52
+ lastModifiedDate: SFDCKeys;
53
+ accountNumber: SFDCKeys;
54
+ folderName: SFDCKeys;
55
+ alternateCaseId: SFDCKeys;
56
+ type: SFDCKeys;
57
+ closedDate: SFDCKeys;
58
+ };
45
59
  //# sourceMappingURL=case.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../../src/enums/case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,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"}
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"}
@@ -1,4 +1,4 @@
1
- import { SolrKeys } from './filters';
1
+ import { SFDCKeys, SolrKeys } from './filters';
2
2
  export var CaseStatus;
3
3
  (function (CaseStatus) {
4
4
  CaseStatus["WaitingOnCustomer"] = "Waiting on Customer";
@@ -35,7 +35,7 @@ export const caseListSortColumnIdsToSolrMap = {
35
35
  [CaseListColumnIds.caseId]: SolrKeys.caseNumber,
36
36
  [CaseListColumnIds.summary]: SolrKeys.caseSummary,
37
37
  [CaseListColumnIds.severity]: SolrKeys.severity,
38
- [CaseListColumnIds.owner]: SolrKeys.createdBy,
38
+ [CaseListColumnIds.owner]: SolrKeys.contactName,
39
39
  [CaseListColumnIds.created]: SolrKeys.createdDate,
40
40
  [CaseListColumnIds.status]: SolrKeys.status,
41
41
  [CaseListColumnIds.modified]: SolrKeys.modifiedDate,
@@ -45,3 +45,17 @@ export const caseListSortColumnIdsToSolrMap = {
45
45
  [CaseListColumnIds.type]: SolrKeys.type,
46
46
  [CaseListColumnIds.caseClosedDate]: SolrKeys.caseClosedDate,
47
47
  };
48
+ export const caseListSortColumnIdsToSFDCMap = {
49
+ [CaseListColumnIds.caseId]: SFDCKeys.caseNumber,
50
+ [CaseListColumnIds.summary]: SFDCKeys.caseSummary,
51
+ [CaseListColumnIds.severity]: SFDCKeys.severity,
52
+ [CaseListColumnIds.owner]: SFDCKeys.contactName,
53
+ [CaseListColumnIds.created]: SFDCKeys.createdDate,
54
+ [CaseListColumnIds.status]: SFDCKeys.status,
55
+ [CaseListColumnIds.modified]: SFDCKeys.modifiedDate,
56
+ [CaseListColumnIds.accountNumber]: SFDCKeys.accountNumber,
57
+ [CaseListColumnIds.group]: SFDCKeys.groupName,
58
+ [CaseListColumnIds.alternateCaseId]: SFDCKeys.alternateId,
59
+ [CaseListColumnIds.type]: SFDCKeys.caseType,
60
+ [CaseListColumnIds.caseClosedDate]: SFDCKeys.caseClosedDate,
61
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"caseSearchUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseSearchUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAUxD,OAAO,EACH,oBAAoB,EACpB,WAAW,EAId,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAEH,mBAAmB,EAEtB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,6BAA6B,UAAU,CAAC;AACrD,eAAO,MAAM,oCAAoC,MAAM,CAAC;AACxD,eAAO,MAAM,iCAAiC,SAAS,CAAC;AACxD,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,iBAAS,8BAA8B,CAAC,WAAW,EAAE,oBAAoB,EAAE,YAAY,EAAE,QAAQ,OA4DhG;AAED,iBAAS,sCAAsC,CAC3C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,OAAe,UAwBnC;AAED,iBAAS,oDAAoD,CACzD,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,OAAe,UAgDnC;AAeD,iBAAS,wCAAwC,CAC7C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,eAAe,QAAK,UAoCvB;AASD,iBAAS,yBAAyB,CAC9B,WAAW,EAAE,oBAAoB,EACjC,kBAAkB,EAAE,QAAQ,EAC5B,oBAAoB,KAAA,EACpB,UAAU,SAAI,EACd,UAAU,SAAO,OAcpB;AAkBD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvC,OAAO,CAAC,eAAe,CAAC,CAkE1B;AAED,iBAAS,6BAA6B,CAAC,QAAQ,GAAE,qBAAqB,EAAO,GAAG,qBAAqB,EAAE,CAEtG;AAcD,iBAAS,6BAA6B,CAAC,WAAW,EAAE,oBAAoB,UAUvE;AAED,iBAAS,6BAA6B,CAClC,QAAQ,EAAE,MAAM,EAChB,mBAAmB,EAAE,oBAAoB,EACzC,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,GAAE,mBAA+C,wBAsD9D;AAGD,iBAAS,kCAAkC,CACvC,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,oBAAoB,EACzC,kBAAkB,EAAE,oBAAoB,EACxC,WAAW,GAAE,MAAW,EACxB,IAAI,GAAE,mBAA+C,wBAqCxD;AAgGD,OAAO,EACH,8BAA8B,EAC9B,sCAAsC,EACtC,oDAAoD,EACpD,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,wCAAwC,EACxC,kCAAkC,GACrC,CAAC"}
1
+ {"version":3,"file":"caseSearchUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseSearchUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAUxD,OAAO,EACH,oBAAoB,EACpB,WAAW,EAId,MAAM,+CAA+C,CAAC;AAOvD,OAAO,EAEH,mBAAmB,EAEtB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,6BAA6B,UAAU,CAAC;AACrD,eAAO,MAAM,oCAAoC,MAAM,CAAC;AACxD,eAAO,MAAM,iCAAiC,SAAS,CAAC;AACxD,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,iBAAS,8BAA8B,CAAC,WAAW,EAAE,oBAAoB,EAAE,YAAY,EAAE,QAAQ,OA4DhG;AAED,iBAAS,sCAAsC,CAC3C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,OAAe,UAwBnC;AAED,iBAAS,oDAAoD,CACzD,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,OAAe,UA6CnC;AAkBD,iBAAS,wCAAwC,CAC7C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,eAAe,QAAK,UA6BvB;AASD,iBAAS,yBAAyB,CAC9B,WAAW,EAAE,oBAAoB,EACjC,kBAAkB,EAAE,QAAQ,EAC5B,oBAAoB,KAAA,EACpB,UAAU,SAAI,EACd,UAAU,SAAO,OAcpB;AAkBD,iBAAS,8BAA8B,CACnC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,QAAQ,EACtB,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvC,OAAO,CAAC,eAAe,CAAC,CAgE1B;AAED,iBAAS,6BAA6B,CAAC,QAAQ,GAAE,qBAAqB,EAAO,GAAG,qBAAqB,EAAE,CAEtG;AAcD,iBAAS,6BAA6B,CAAC,WAAW,EAAE,oBAAoB,UAUvE;AAED,iBAAS,6BAA6B,CAClC,QAAQ,EAAE,MAAM,EAChB,mBAAmB,EAAE,oBAAoB,EACzC,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,GAAE,mBAA+C,wBAsD9D;AAGD,iBAAS,kCAAkC,CACvC,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,oBAAoB,EACzC,kBAAkB,EAAE,oBAAoB,EACxC,WAAW,GAAE,MAAW,EACxB,IAAI,GAAE,mBAA+C,wBAqCxD;AAgGD,OAAO,EACH,8BAA8B,EAC9B,sCAAsC,EACtC,oDAAoD,EACpD,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,wCAAwC,EACxC,kCAAkC,GACrC,CAAC"}
@@ -17,7 +17,7 @@ import merge from 'lodash/merge';
17
17
  import SolrQueryBuilder from 'solr-query-builder';
18
18
  import { getLabel } from '../components/case-list/case-list-filters/AccountsBookmarkedGroupFilter';
19
19
  import { initialCaseFilterState } from '../components/case-list/CaseListFilterContext';
20
- import { CaseListColumnIds, caseListSortColumnIdsToSolrMap, CaseStatus } from '../enums/case';
20
+ import { CaseListColumnIds, caseListSortColumnIdsToSFDCMap, caseListSortColumnIdsToSolrMap, CaseStatus, } from '../enums/case';
21
21
  import { advanceSearchFieldNameToSolrFieldMapping, CaseSearchQueryType, fieldNameToSolrFieldMapping, } from '../enums/caseSearch';
22
22
  import { AdditionalFilterLabels, advancedSearchMap, ProductVersionKey, sfdcFieldToSolrMap, SolrKeys, SolrPivotKeys, SolrTags, } from '../enums/filters';
23
23
  export const FILTER_URL_QUERY_SEARCH_PARAM = 'query';
@@ -115,18 +115,13 @@ function createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo, filter
115
115
  const productVersionQuery = createProductVersionQueryStringFromFilterState(filterInfo);
116
116
  // add text: to string search and create and with the rest
117
117
  const q = parseSolrQuery(filterQuery);
118
- const newFilterInfo = {};
119
118
  let advanceToBasicQuery = [];
119
+ let freeTextQuery = [];
120
120
  Object.keys(q || {}).forEach((_key) => {
121
- if (_key === SolrKeys.product) {
122
- newFilterInfo[SolrPivotKeys.product_version] = generateProductVersionPivotValue(q[_key]);
123
- }
124
- // if it's an unnamed field we should add it to free text querystring
125
- else if (_key === '<implicit>' || _key === 'undefined') {
126
- advanceToBasicQuery.push(q[_key]);
121
+ if (_key === '<implicit>' || _key === 'undefined') {
122
+ freeTextQuery.push(q[_key]);
127
123
  }
128
124
  else {
129
- // it means field is not supported as a filter
130
125
  if (!fieldNameToSolrFieldMapping[_key]) {
131
126
  // if it's supported in basic search mode then add it as a query string in the search input
132
127
  if (advanceSearchFieldNameToSolrFieldMapping[_key] || SolrKeys[_key]) {
@@ -135,15 +130,17 @@ function createUserFriendlyQueryFromFilterStateAdvancedSearch(filterInfo, filter
135
130
  }
136
131
  }
137
132
  });
138
- const textSearch = advanceToBasicQuery.length !== 0 ? [`text:"${advanceToBasicQuery.join(' ')}"`] : [];
133
+ freeTextQuery = freeTextQuery.length !== 0 ? [`text:"${flatMap(freeTextQuery).join(' ')}"`] : [];
139
134
  const parsedQueryString = []
140
- .concat(textSearch)
135
+ .concat(freeTextQuery)
136
+ .concat(advanceToBasicQuery)
141
137
  .concat(productVersionQuery ? productVersionQuery : [])
142
138
  .concat(filtersQuery !== '*:*' ? filtersQuery : []);
143
139
  return parsedQueryString.join(' and ').replace(/ AND /g, ' and ').replace(/ OR /g, ' or ');
144
140
  }
145
141
  function createProductVersionQueryStringFromFilterState(filterInfo) {
146
- const queryStringForProductFilter = buildSolrQuery({ [ProductVersionKey]: filterInfo[ProductVersionKey] });
142
+ var _a;
143
+ const queryStringForProductFilter = buildSolrQuery({ [ProductVersionKey]: filterInfo[ProductVersionKey] }, ((_a = filterInfo[ProductVersionKey]) === null || _a === void 0 ? void 0 : _a.length) > 1);
147
144
  let productVersionQuery = '';
148
145
  if (queryStringForProductFilter !== '*:*') {
149
146
  const regexForProductReplace = new RegExp(SolrKeys.product, 'g');
@@ -152,7 +149,7 @@ function createProductVersionQueryStringFromFilterState(filterInfo) {
152
149
  .replace(regexForProductReplace, fieldNameToSolrFieldMapping[SolrKeys.product])
153
150
  .replace(regexForVersionReplace, fieldNameToSolrFieldMapping[SolrKeys.version]);
154
151
  }
155
- return productVersionQuery.replace(/\(\s+/g, '(').replace(/\s\)+/g, ')');
152
+ return productVersionQuery;
156
153
  }
157
154
  function createAdvancedSearchQueryFromFilterState(filterInfo, keyword, useKeyForKVPair = []) {
158
155
  const finalQueryArr = [];
@@ -177,12 +174,7 @@ function createAdvancedSearchQueryFromFilterState(filterInfo, keyword, useKeyFor
177
174
  }
178
175
  const filtersQuery = advanceQuery.build().replace(/ AND /g, ' and ');
179
176
  const productVersionQuery = createProductVersionQueryStringFromFilterState(filterInfo);
180
- productVersionQuery &&
181
- finalQueryArr.push(productVersionQuery
182
- .replace(/\s?\(\s/g, '(')
183
- .replace(/\s?\)\s?/g, ')')
184
- .replace(/ OR /g, ' or ')
185
- .replace(/ AND /g, ' and '));
177
+ productVersionQuery && finalQueryArr.push(productVersionQuery.replace(/ OR /g, ' or ').replace(/ AND /g, ' and '));
186
178
  filtersQuery !== '*:*' && finalQueryArr.push(filtersQuery);
187
179
  return finalQueryArr.join(' and ');
188
180
  }
@@ -224,7 +216,6 @@ function objectFlip(obj, camelCaseKey = false) {
224
216
  }, {});
225
217
  }
226
218
  function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserAccount) {
227
- const solrFieldToSfdcMap = objectFlip(sfdcFieldToSolrMap, true);
228
219
  const { paginationInfo: { pageSize, currentPage }, sortInfo: { column, direction }, filterInfo, filterQueryInfo, } = filterState;
229
220
  const maxResults = pageSize;
230
221
  const offset = (currentPage - 1) * pageSize;
@@ -242,12 +233,11 @@ function createSFDCQueryFromFilterState(filterState, loggedInUser, loggedInUserA
242
233
  if ((filteredStatus || []).length > 1 && filteredStatus.includes(CaseStatus.Closed)) {
243
234
  filteredStatus = filteredStatus.filter((status) => status !== CaseStatus.Closed);
244
235
  }
245
- const sortFieldSolr = caseListSortColumnIdsToSolrMap[column];
246
236
  const sfdcFilter = {
247
237
  maxResults,
248
238
  offset,
249
239
  includeClosed,
250
- sortField: solrFieldToSfdcMap[sortFieldSolr],
240
+ sortField: caseListSortColumnIdsToSFDCMap[column],
251
241
  sortOrder: direction.toUpperCase(),
252
242
  };
253
243
  const queryString = (filterQueryInfo.queryString || '').trim();
@@ -443,7 +433,7 @@ function generateProductVersionPivotValue(values) {
443
433
  : {
444
434
  field: SolrKeys.product,
445
435
  value: item.value,
446
- [SolrKeys.version]: item[fieldNameToSolrFieldMapping[SolrKeys.version]].map((item) => ({
436
+ [SolrKeys.version]: (item[fieldNameToSolrFieldMapping[SolrKeys.version]] || []).map((item) => ({
447
437
  field: SolrKeys.version,
448
438
  value: item,
449
439
  })),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/cases",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -51,11 +51,11 @@
51
51
  "@patternfly/pfe-collapse": "1.12.3",
52
52
  "@patternfly/react-core": "4.202.16",
53
53
  "@patternfly/react-table": "4.71.16",
54
- "@rh-support/components": "1.2.0",
55
- "@rh-support/react-context": "1.0.1",
54
+ "@rh-support/components": "1.2.1",
55
+ "@rh-support/react-context": "1.0.2",
56
56
  "@rh-support/types": "0.2.0",
57
- "@rh-support/user-permissions": "1.0.0",
58
- "@rh-support/utils": "1.0.0",
57
+ "@rh-support/user-permissions": "1.0.1",
58
+ "@rh-support/utils": "1.0.1",
59
59
  "i18next": "^19.0.1",
60
60
  "localforage": "^1.7.3",
61
61
  "lodash": "^4.17.21",
@@ -99,5 +99,5 @@
99
99
  "not ie <= 11",
100
100
  "not op_mini all"
101
101
  ],
102
- "gitHead": "6ad83aaad97f659afae273d0bf00f1b7400584f1"
102
+ "gitHead": "4c44ec177438ff8e09a761a4f38ce3fbd83c7aaa"
103
103
  }