@blaze-cms/plugin-search-ui 0.124.0-alpha.21 → 0.125.0-admin-updates.0

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 (42) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/lib/components/SearchAdmin/RecentSearches/RecentSearches.js.map +1 -1
  3. package/lib/components/SearchAdmin/SearchAdmin.js +70 -13
  4. package/lib/components/SearchAdmin/SearchAdmin.js.map +1 -1
  5. package/lib/components/SearchAdmin/SearchAdminSideBar/SearchAdminSideBar.js +143 -0
  6. package/lib/components/SearchAdmin/SearchAdminSideBar/SearchAdminSideBar.js.map +1 -0
  7. package/lib/components/SearchAdmin/SearchAdminSideBar/index.js +16 -0
  8. package/lib/components/SearchAdmin/SearchAdminSideBar/index.js.map +1 -0
  9. package/lib/components/SearchAdmin/SearchBar/SearchBar.js.map +1 -1
  10. package/lib/components/SearchAdmin/SearchResults/SearchResults.js +18 -6
  11. package/lib/components/SearchAdmin/SearchResults/SearchResults.js.map +1 -1
  12. package/lib/components/SearchAdmin/TriggerModal/TriggerModal.js.map +1 -1
  13. package/lib/components/SearchPublishedContent/SearchPublishedContent.js +1 -1
  14. package/lib/components/SearchPublishedContent/SearchPublishedContent.js.map +1 -1
  15. package/lib/components/useLocalStorage/useLocalStorage.js.map +1 -1
  16. package/lib/components/useSearch/useSearch.js +14 -6
  17. package/lib/components/useSearch/useSearch.js.map +1 -1
  18. package/lib/components/useSearchResults/useSearchResults.js +1 -25
  19. package/lib/components/useSearchResults/useSearchResults.js.map +1 -1
  20. package/lib/hooks/useDebounceSearch.js.map +1 -1
  21. package/lib-es/components/SearchAdmin/SearchAdmin.js +34 -3
  22. package/lib-es/components/SearchAdmin/SearchAdmin.js.map +1 -1
  23. package/lib-es/components/SearchAdmin/SearchAdminSideBar/SearchAdminSideBar.js +79 -0
  24. package/lib-es/components/SearchAdmin/SearchAdminSideBar/SearchAdminSideBar.js.map +1 -0
  25. package/lib-es/components/SearchAdmin/SearchAdminSideBar/index.js +3 -0
  26. package/lib-es/components/SearchAdmin/SearchAdminSideBar/index.js.map +1 -0
  27. package/lib-es/components/SearchAdmin/SearchResults/SearchResults.js +18 -6
  28. package/lib-es/components/SearchAdmin/SearchResults/SearchResults.js.map +1 -1
  29. package/lib-es/components/SearchPublishedContent/SearchPublishedContent.js +1 -1
  30. package/lib-es/components/SearchPublishedContent/SearchPublishedContent.js.map +1 -1
  31. package/lib-es/components/useSearch/useSearch.js +7 -3
  32. package/lib-es/components/useSearch/useSearch.js.map +1 -1
  33. package/lib-es/components/useSearchResults/useSearchResults.js +1 -11
  34. package/lib-es/components/useSearchResults/useSearchResults.js.map +1 -1
  35. package/package.json +3 -3
  36. package/src/components/SearchAdmin/SearchAdmin.js +70 -40
  37. package/src/components/SearchAdmin/SearchAdminSideBar/SearchAdminSideBar.js +88 -0
  38. package/src/components/SearchAdmin/SearchAdminSideBar/index.js +3 -0
  39. package/src/components/SearchAdmin/SearchResults/SearchResults.js +42 -6
  40. package/src/components/SearchPublishedContent/SearchPublishedContent.js +1 -1
  41. package/src/components/useSearch/useSearch.js +10 -3
  42. package/src/components/useSearchResults/useSearchResults.js +1 -15
@@ -1 +1 @@
1
- {"version":3,"file":"SearchPublishedContent.js","names":["React","useState","useEffect","classnames","PropTypes","MdClose","MdSearch","useDebounce","useSearchResults","SEARCH_PUBLISHED","DEFAULT_RESULTS_KEYS","SEARCH_BUTTON","SearchPublishedContent","entities","children","resultKeys","getIsOpenSearchBar","SearchIcon","CloseIcon","className","onChange","placeholder","onEnterPress","inputRef","isSearchBarOpen","fields","displaySearchBar","setDisplaySearchBar","searchTerm","setSearchTerm","previousSearchTerm","setPreviousSearchTerm","debouncedSearchTerm","loading","results","setQueryParams","queryKey","current","focus","value","handleOnChange","target","handleKeyPress","event","onEnter","key","handleSearchBar","voidSearchTerm","searchWrapperClassname","triggerClassname","open","length","propTypes","array","func","isRequired","string","object","bool","defaultProps","state"],"sources":["../../../src/components/SearchPublishedContent/SearchPublishedContent.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { MdClose, MdSearch } from 'react-icons/md';\nimport { useDebounce } from '@blaze-react/utils/lib/customHooks';\nimport useSearchResults from '../useSearchResults';\nimport { SEARCH_PUBLISHED, DEFAULT_RESULTS_KEYS, SEARCH_BUTTON } from '../../constants';\n\nconst SearchPublishedContent = ({\n entities,\n children,\n resultKeys,\n getIsOpenSearchBar,\n SearchIcon,\n CloseIcon,\n className,\n onChange,\n placeholder,\n onEnterPress,\n inputRef,\n isSearchBarOpen,\n fields\n}) => {\n const [displaySearchBar, setDisplaySearchBar] = useState(isSearchBarOpen);\n const [searchTerm, setSearchTerm] = useState('');\n const [previousSearchTerm, setPreviousSearchTerm] = useState(null);\n const debouncedSearchTerm = useDebounce(searchTerm, 500);\n\n const [{ loading, results }, setQueryParams] = useSearchResults({\n queryKey: SEARCH_PUBLISHED,\n resultKeys,\n entities,\n fields\n });\n\n useEffect(\n () => {\n if (isSearchBarOpen !== displaySearchBar) {\n setDisplaySearchBar(isSearchBarOpen);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isSearchBarOpen]\n );\n\n useEffect(\n () => {\n if (inputRef && inputRef.current && displaySearchBar) {\n inputRef.current.focus();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [displaySearchBar]\n );\n\n useEffect(\n () => {\n if (debouncedSearchTerm && debouncedSearchTerm !== previousSearchTerm) {\n setQueryParams({ value: debouncedSearchTerm });\n setPreviousSearchTerm(debouncedSearchTerm);\n }\n },\n [debouncedSearchTerm, previousSearchTerm, setQueryParams]\n );\n\n const handleOnChange = ({ target: { value = '' } = {} }) => {\n onChange(value);\n setSearchTerm(value);\n };\n\n const handleKeyPress = event => {\n const onEnter = event.key === 'Enter';\n onEnter && onEnterPress();\n };\n\n const handleSearchBar = () => {\n const voidSearchTerm = '';\n displaySearchBar && setSearchTerm(voidSearchTerm);\n handleOnChange({ value: voidSearchTerm });\n if (isSearchBarOpen !== null) {\n getIsOpenSearchBar(!displaySearchBar);\n }\n setDisplaySearchBar(!displaySearchBar);\n };\n\n const searchWrapperClassname = classnames('search__wrapper', {\n 'search__wrapper--toggle-display': displaySearchBar,\n 'search__wrapper--toggle': !displaySearchBar\n });\n\n const triggerClassname = classnames('search__icon', {\n open: displaySearchBar\n });\n\n return (\n <div className={`search-wrapper ${className}`}>\n <div className=\"search search--header search--toggle\">\n <div className={searchWrapperClassname}>\n <input\n data-testid=\"search-input\"\n onKeyPress={handleKeyPress}\n placeholder={placeholder}\n type=\"text\"\n onChange={handleOnChange}\n value={searchTerm}\n ref={inputRef}\n />\n <button type=\"button\" className=\"icon-button icon-button--search icon-button--toggle\">\n <SearchIcon />\n </button>\n </div>\n <div\n role=\"button\"\n className={triggerClassname}\n onClick={handleSearchBar}\n id={SEARCH_BUTTON}\n title={SEARCH_BUTTON}>\n {!displaySearchBar ? <SearchIcon /> : <CloseIcon />}\n </div>\n </div>\n <div className=\"search-modal\">\n {children({ results: results.length && searchTerm ? results : [], loading })}\n </div>\n </div>\n );\n};\n\nSearchPublishedContent.propTypes = {\n entities: PropTypes.array,\n children: PropTypes.func.isRequired,\n resultKeys: PropTypes.string,\n getIsOpenSearchBar: PropTypes.func,\n SearchIcon: PropTypes.func,\n CloseIcon: PropTypes.func,\n onChange: PropTypes.func,\n onEnterPress: PropTypes.func,\n className: PropTypes.string,\n placeholder: PropTypes.string,\n inputRef: PropTypes.object,\n isSearchBarOpen: PropTypes.bool,\n fields: PropTypes.array\n};\n\nSearchPublishedContent.defaultProps = {\n entities: ['published_page'],\n placeholder: '',\n resultKeys: DEFAULT_RESULTS_KEYS,\n onChange: () => {},\n onEnterPress: () => {},\n getIsOpenSearchBar: state => state,\n SearchIcon: () => (\n <i>\n <MdSearch />\n </i>\n ),\n CloseIcon: () => (\n <i>\n <MdClose />\n </i>\n ),\n className: '',\n inputRef: null,\n isSearchBarOpen: null,\n fields: []\n};\n\nexport default SearchPublishedContent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SearchPublishedContent.js","names":["React","useState","useEffect","classnames","PropTypes","MdClose","MdSearch","useDebounce","useSearchResults","SEARCH_PUBLISHED","DEFAULT_RESULTS_KEYS","SEARCH_BUTTON","SearchPublishedContent","entities","children","resultKeys","getIsOpenSearchBar","SearchIcon","CloseIcon","className","onChange","placeholder","onEnterPress","inputRef","isSearchBarOpen","fields","displaySearchBar","setDisplaySearchBar","searchTerm","setSearchTerm","previousSearchTerm","setPreviousSearchTerm","debouncedSearchTerm","loading","results","setQueryParams","queryKey","current","focus","value","handleOnChange","target","handleKeyPress","event","onEnter","key","handleSearchBar","voidSearchTerm","searchWrapperClassname","triggerClassname","open","length","propTypes","array","func","isRequired","string","object","bool","defaultProps","state"],"sources":["../../../src/components/SearchPublishedContent/SearchPublishedContent.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { MdClose, MdSearch } from 'react-icons/md';\nimport { useDebounce } from '@blaze-react/utils/lib/customHooks';\nimport useSearchResults from '../useSearchResults';\nimport { SEARCH_PUBLISHED, DEFAULT_RESULTS_KEYS, SEARCH_BUTTON } from '../../constants';\n\nconst SearchPublishedContent = ({\n entities,\n children,\n resultKeys,\n getIsOpenSearchBar,\n SearchIcon,\n CloseIcon,\n className,\n onChange,\n placeholder,\n onEnterPress,\n inputRef,\n isSearchBarOpen,\n fields\n}) => {\n const [displaySearchBar, setDisplaySearchBar] = useState(isSearchBarOpen);\n const [searchTerm, setSearchTerm] = useState('');\n const [previousSearchTerm, setPreviousSearchTerm] = useState(null);\n const debouncedSearchTerm = useDebounce(searchTerm, 500);\n\n const [{ loading, results }, setQueryParams] = useSearchResults({\n queryKey: SEARCH_PUBLISHED,\n resultKeys,\n entities,\n fields\n });\n\n useEffect(\n () => {\n if (isSearchBarOpen !== displaySearchBar) {\n setDisplaySearchBar(isSearchBarOpen);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isSearchBarOpen]\n );\n\n useEffect(\n () => {\n if (inputRef && inputRef.current && displaySearchBar) {\n inputRef.current.focus();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [displaySearchBar]\n );\n\n useEffect(\n () => {\n if (debouncedSearchTerm && debouncedSearchTerm !== previousSearchTerm) {\n setQueryParams({ value: `${debouncedSearchTerm}*` });\n setPreviousSearchTerm(debouncedSearchTerm);\n }\n },\n [debouncedSearchTerm, previousSearchTerm, setQueryParams]\n );\n\n const handleOnChange = ({ target: { value = '' } = {} }) => {\n onChange(value);\n setSearchTerm(value);\n };\n\n const handleKeyPress = event => {\n const onEnter = event.key === 'Enter';\n onEnter && onEnterPress();\n };\n\n const handleSearchBar = () => {\n const voidSearchTerm = '';\n displaySearchBar && setSearchTerm(voidSearchTerm);\n handleOnChange({ value: voidSearchTerm });\n if (isSearchBarOpen !== null) {\n getIsOpenSearchBar(!displaySearchBar);\n }\n setDisplaySearchBar(!displaySearchBar);\n };\n\n const searchWrapperClassname = classnames('search__wrapper', {\n 'search__wrapper--toggle-display': displaySearchBar,\n 'search__wrapper--toggle': !displaySearchBar\n });\n\n const triggerClassname = classnames('search__icon', {\n open: displaySearchBar\n });\n\n return (\n <div className={`search-wrapper ${className}`}>\n <div className=\"search search--header search--toggle\">\n <div className={searchWrapperClassname}>\n <input\n data-testid=\"search-input\"\n onKeyPress={handleKeyPress}\n placeholder={placeholder}\n type=\"text\"\n onChange={handleOnChange}\n value={searchTerm}\n ref={inputRef}\n />\n <button type=\"button\" className=\"icon-button icon-button--search icon-button--toggle\">\n <SearchIcon />\n </button>\n </div>\n <div\n role=\"button\"\n className={triggerClassname}\n onClick={handleSearchBar}\n id={SEARCH_BUTTON}\n title={SEARCH_BUTTON}>\n {!displaySearchBar ? <SearchIcon /> : <CloseIcon />}\n </div>\n </div>\n <div className=\"search-modal\">\n {children({ results: results.length && searchTerm ? results : [], loading })}\n </div>\n </div>\n );\n};\n\nSearchPublishedContent.propTypes = {\n entities: PropTypes.array,\n children: PropTypes.func.isRequired,\n resultKeys: PropTypes.string,\n getIsOpenSearchBar: PropTypes.func,\n SearchIcon: PropTypes.func,\n CloseIcon: PropTypes.func,\n onChange: PropTypes.func,\n onEnterPress: PropTypes.func,\n className: PropTypes.string,\n placeholder: PropTypes.string,\n inputRef: PropTypes.object,\n isSearchBarOpen: PropTypes.bool,\n fields: PropTypes.array\n};\n\nSearchPublishedContent.defaultProps = {\n entities: ['published_page'],\n placeholder: '',\n resultKeys: DEFAULT_RESULTS_KEYS,\n onChange: () => {},\n onEnterPress: () => {},\n getIsOpenSearchBar: state => state,\n SearchIcon: () => (\n <i>\n <MdSearch />\n </i>\n ),\n CloseIcon: () => (\n <i>\n <MdClose />\n </i>\n ),\n className: '',\n inputRef: null,\n isSearchBarOpen: null,\n fields: []\n};\n\nexport default SearchPublishedContent;\n"],"mappings":"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"}
@@ -20,6 +20,7 @@ function useSearch({
20
20
  value: ''
21
21
  });
22
22
  const [searchedValue, setSearchedValue] = useState(null);
23
+ const [en, setEn] = useState([]);
23
24
  const [previousOffset, setPreviousOffset] = useState(null);
24
25
  const buildSearchQuery = searchQueries[queryKey];
25
26
  const [getSearchResults, {
@@ -55,13 +56,14 @@ function useSearch({
55
56
  } = queryParams;
56
57
  const isNewValueSet = value && value !== searchedValue;
57
58
  const isNewOffsetSet = previousOffset !== null && offset !== previousOffset;
59
+ const notSameLength = en.length !== entities.length;
58
60
  const parsedEntities = entities.length ? entities.map(entity => ({
59
61
  match: {
60
62
  docType: entity
61
63
  }
62
64
  })) : [];
63
65
 
64
- if (isNewValueSet || isNewOffsetSet) {
66
+ if (isNewValueSet || isNewOffsetSet || notSameLength) {
65
67
  getSearchResults({
66
68
  variables: {
67
69
  limit,
@@ -73,7 +75,8 @@ function useSearch({
73
75
  query_string: {
74
76
  query: value,
75
77
  fields,
76
- type: 'most_fields'
78
+ type: 'most_fields',
79
+ default_operator: 'AND'
77
80
  }
78
81
  }, {
79
82
  bool: {
@@ -87,8 +90,9 @@ function useSearch({
87
90
  });
88
91
  setSearchedValue(value);
89
92
  setPreviousOffset(offset);
93
+ setEn(entities);
90
94
  }
91
- }, [queryParams, queryParams.limit, queryParams.value, queryParams.offset, searchedValue, previousOffset, getSearchResults, entities, fields]);
95
+ }, [queryParams, queryParams.limit, queryParams.value, queryParams.offset, searchedValue, previousOffset, getSearchResults, entities, fields, entities.length, en.length]);
92
96
  return [{
93
97
  searchedValue: queryParams.value,
94
98
  loading,
@@ -1 +1 @@
1
- {"version":3,"file":"useSearch.js","names":["useState","useEffect","useLazyQuery","searchQueries","useSearch","queryKey","resultKeys","entities","fields","queryParams","setParams","limit","offset","value","searchedValue","setSearchedValue","previousOffset","setPreviousOffset","buildSearchQuery","getSearchResults","loading","data","search","results","jsonResults","total","ssr","handleQueryParams","newQueryParams","isNewValueSet","isNewOffsetSet","parsedEntities","length","map","entity","match","docType","variables","rawQuery","query","bool","must","query_string","type","should"],"sources":["../../../src/components/useSearch/useSearch.js"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { useLazyQuery } from '@apollo/client';\nimport searchQueries from '../../application/query';\n\nfunction useSearch({ queryKey, resultKeys, entities = [], fields }) {\n const [queryParams, setParams] = useState({ limit: 20, offset: 0, value: '' });\n const [searchedValue, setSearchedValue] = useState(null);\n const [previousOffset, setPreviousOffset] = useState(null);\n const buildSearchQuery = searchQueries[queryKey];\n const [\n getSearchResults,\n {\n loading,\n data: { search: { results, jsonResults, total } } = {\n search: { results: [], total: 0 }\n }\n }\n ] = useLazyQuery(buildSearchQuery({ resultKeys }), { ssr: false });\n // todo: remove ssr: false once this bug is resolved https://github.com/apollographql/apollo-client/issues/9108\n // without ssr: false clients can hang in ssr.\n\n const handleQueryParams = newQueryParams => {\n setParams({ ...queryParams, ...newQueryParams });\n };\n\n useEffect(\n () => {\n const { limit, offset, value } = queryParams;\n const isNewValueSet = value && value !== searchedValue;\n const isNewOffsetSet = previousOffset !== null && offset !== previousOffset;\n const parsedEntities = entities.length\n ? entities.map(entity => ({\n match: { docType: entity }\n }))\n : [];\n\n if (isNewValueSet || isNewOffsetSet) {\n getSearchResults({\n variables: {\n limit,\n offset,\n rawQuery: {\n query: {\n bool: {\n must: [\n {\n query_string: {\n query: value,\n fields,\n type: 'most_fields'\n }\n },\n {\n bool: {\n should: parsedEntities\n }\n }\n ]\n }\n }\n }\n }\n });\n setSearchedValue(value);\n setPreviousOffset(offset);\n }\n },\n [\n queryParams,\n queryParams.limit,\n queryParams.value,\n queryParams.offset,\n searchedValue,\n previousOffset,\n getSearchResults,\n entities,\n fields\n ]\n );\n\n return [\n { searchedValue: queryParams.value, loading, data: { results: results || jsonResults, total } },\n handleQueryParams\n ];\n}\n\nexport default useSearch;\n"],"mappings":";;;;;;AAAA,SAASA,QAAT,EAAmBC,SAAnB,QAAoC,OAApC;AACA,SAASC,YAAT,QAA6B,gBAA7B;AACA,OAAOC,aAAP,MAA0B,yBAA1B;;AAEA,SAASC,SAAT,CAAmB;EAAEC,QAAF;EAAYC,UAAZ;EAAwBC,QAAQ,GAAG,EAAnC;EAAuCC;AAAvC,CAAnB,EAAoE;EAClE,MAAM,CAACC,WAAD,EAAcC,SAAd,IAA2BV,QAAQ,CAAC;IAAEW,KAAK,EAAE,EAAT;IAAaC,MAAM,EAAE,CAArB;IAAwBC,KAAK,EAAE;EAA/B,CAAD,CAAzC;EACA,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoCf,QAAQ,CAAC,IAAD,CAAlD;EACA,MAAM,CAACgB,cAAD,EAAiBC,iBAAjB,IAAsCjB,QAAQ,CAAC,IAAD,CAApD;EACA,MAAMkB,gBAAgB,GAAGf,aAAa,CAACE,QAAD,CAAtC;EACA,MAAM,CACJc,gBADI,EAEJ;IACEC,OADF;IAEEC,IAAI,EAAE;MAAEC,MAAM,EAAE;QAAEC,OAAF;QAAWC,WAAX;QAAwBC;MAAxB;IAAV,IAA8C;MAClDH,MAAM,EAAE;QAAEC,OAAO,EAAE,EAAX;QAAeE,KAAK,EAAE;MAAtB;IAD0C;EAFtD,CAFI,IAQFvB,YAAY,CAACgB,gBAAgB,CAAC;IAAEZ;EAAF,CAAD,CAAjB,EAAmC;IAAEoB,GAAG,EAAE;EAAP,CAAnC,CARhB,CALkE,CAclE;EACA;;EAEA,MAAMC,iBAAiB,GAAGC,cAAc,IAAI;IAC1ClB,SAAS,iCAAMD,WAAN,GAAsBmB,cAAtB,EAAT;EACD,CAFD;;EAIA3B,SAAS,CACP,MAAM;IACJ,MAAM;MAAEU,KAAF;MAASC,MAAT;MAAiBC;IAAjB,IAA2BJ,WAAjC;IACA,MAAMoB,aAAa,GAAGhB,KAAK,IAAIA,KAAK,KAAKC,aAAzC;IACA,MAAMgB,cAAc,GAAGd,cAAc,KAAK,IAAnB,IAA2BJ,MAAM,KAAKI,cAA7D;IACA,MAAMe,cAAc,GAAGxB,QAAQ,CAACyB,MAAT,GACnBzB,QAAQ,CAAC0B,GAAT,CAAaC,MAAM,KAAK;MACtBC,KAAK,EAAE;QAAEC,OAAO,EAAEF;MAAX;IADe,CAAL,CAAnB,CADmB,GAInB,EAJJ;;IAMA,IAAIL,aAAa,IAAIC,cAArB,EAAqC;MACnCX,gBAAgB,CAAC;QACfkB,SAAS,EAAE;UACT1B,KADS;UAETC,MAFS;UAGT0B,QAAQ,EAAE;YACRC,KAAK,EAAE;cACLC,IAAI,EAAE;gBACJC,IAAI,EAAE,CACJ;kBACEC,YAAY,EAAE;oBACZH,KAAK,EAAE1B,KADK;oBAEZL,MAFY;oBAGZmC,IAAI,EAAE;kBAHM;gBADhB,CADI,EAQJ;kBACEH,IAAI,EAAE;oBACJI,MAAM,EAAEb;kBADJ;gBADR,CARI;cADF;YADD;UADC;QAHD;MADI,CAAD,CAAhB;MA0BAhB,gBAAgB,CAACF,KAAD,CAAhB;MACAI,iBAAiB,CAACL,MAAD,CAAjB;IACD;EACF,CAzCM,EA0CP,CACEH,WADF,EAEEA,WAAW,CAACE,KAFd,EAGEF,WAAW,CAACI,KAHd,EAIEJ,WAAW,CAACG,MAJd,EAKEE,aALF,EAMEE,cANF,EAOEG,gBAPF,EAQEZ,QARF,EASEC,MATF,CA1CO,CAAT;EAuDA,OAAO,CACL;IAAEM,aAAa,EAAEL,WAAW,CAACI,KAA7B;IAAoCO,OAApC;IAA6CC,IAAI,EAAE;MAAEE,OAAO,EAAEA,OAAO,IAAIC,WAAtB;MAAmCC;IAAnC;EAAnD,CADK,EAELE,iBAFK,CAAP;AAID;;AAED,eAAevB,SAAf"}
1
+ {"version":3,"file":"useSearch.js","names":["useState","useEffect","useLazyQuery","searchQueries","useSearch","queryKey","resultKeys","entities","fields","queryParams","setParams","limit","offset","value","searchedValue","setSearchedValue","en","setEn","previousOffset","setPreviousOffset","buildSearchQuery","getSearchResults","loading","data","search","results","jsonResults","total","ssr","handleQueryParams","newQueryParams","isNewValueSet","isNewOffsetSet","notSameLength","length","parsedEntities","map","entity","match","docType","variables","rawQuery","query","bool","must","query_string","type","default_operator","should"],"sources":["../../../src/components/useSearch/useSearch.js"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { useLazyQuery } from '@apollo/client';\nimport searchQueries from '../../application/query';\n\nfunction useSearch({ queryKey, resultKeys, entities = [], fields }) {\n const [queryParams, setParams] = useState({ limit: 20, offset: 0, value: '' });\n const [searchedValue, setSearchedValue] = useState(null);\n const [en, setEn] = useState([]);\n const [previousOffset, setPreviousOffset] = useState(null);\n\n const buildSearchQuery = searchQueries[queryKey];\n const [\n getSearchResults,\n {\n loading,\n data: { search: { results, jsonResults, total } } = {\n search: { results: [], total: 0 }\n }\n }\n ] = useLazyQuery(buildSearchQuery({ resultKeys }), { ssr: false });\n // todo: remove ssr: false once this bug is resolved https://github.com/apollographql/apollo-client/issues/9108\n // without ssr: false clients can hang in ssr.\n\n const handleQueryParams = newQueryParams => {\n setParams({ ...queryParams, ...newQueryParams });\n };\n\n useEffect(\n () => {\n const { limit, offset, value } = queryParams;\n const isNewValueSet = value && value !== searchedValue;\n const isNewOffsetSet = previousOffset !== null && offset !== previousOffset;\n const notSameLength = en.length !== entities.length;\n const parsedEntities = entities.length\n ? entities.map(entity => ({\n match: { docType: entity }\n }))\n : [];\n\n if (isNewValueSet || isNewOffsetSet || notSameLength) {\n getSearchResults({\n variables: {\n limit,\n offset,\n rawQuery: {\n query: {\n bool: {\n must: [\n {\n query_string: {\n query: value,\n fields,\n type: 'most_fields',\n default_operator: 'AND'\n }\n },\n {\n bool: {\n should: parsedEntities\n }\n }\n ]\n }\n }\n }\n }\n });\n setSearchedValue(value);\n setPreviousOffset(offset);\n setEn(entities);\n }\n },\n [\n queryParams,\n queryParams.limit,\n queryParams.value,\n queryParams.offset,\n searchedValue,\n previousOffset,\n getSearchResults,\n entities,\n fields,\n entities.length,\n en.length\n ]\n );\n\n return [\n { searchedValue: queryParams.value, loading, data: { results: results || jsonResults, total } },\n handleQueryParams\n ];\n}\n\nexport default useSearch;\n"],"mappings":"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"}
@@ -4,7 +4,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
4
4
 
5
5
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
 
7
- import { useState, useEffect } from 'react';
8
7
  import useSearch from '../useSearch';
9
8
 
10
9
  function useSearchResults({
@@ -26,17 +25,8 @@ function useSearchResults({
26
25
  entities,
27
26
  fields
28
27
  });
29
- const [currentResults, setCurrentResults] = useState([]);
30
- const [allResults, setAllResults] = useState([]);
31
- useEffect(() => {
32
- if (currentResults.length !== results.length) {
33
- setAllResults([...allResults, ...results]);
34
- setCurrentResults(results);
35
- }
36
- }, [allResults, currentResults, currentResults.length, results]);
37
28
 
38
29
  const clearList = params => {
39
- setAllResults([]);
40
30
  setParams(_objectSpread(_objectSpread({}, params), {}, {
41
31
  offset: 0
42
32
  }));
@@ -48,7 +38,7 @@ function useSearchResults({
48
38
 
49
39
  return [{
50
40
  loading,
51
- results: allResults,
41
+ results,
52
42
  total
53
43
  }, setQueryParams];
54
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useSearchResults.js","names":["useState","useEffect","useSearch","useSearchResults","queryKey","resultKeys","entities","fields","searchedValue","loading","data","results","total","setParams","currentResults","setCurrentResults","allResults","setAllResults","length","clearList","params","offset","setQueryParams","value"],"sources":["../../../src/components/useSearchResults/useSearchResults.js"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport useSearch from '../useSearch';\n\nfunction useSearchResults({ queryKey, resultKeys, entities, fields }) {\n const [\n {\n searchedValue,\n loading,\n data: { results, total }\n },\n setParams\n ] = useSearch({ queryKey, resultKeys, entities, fields });\n const [currentResults, setCurrentResults] = useState([]);\n const [allResults, setAllResults] = useState([]);\n\n useEffect(\n () => {\n if (currentResults.length !== results.length) {\n setAllResults([...allResults, ...results]);\n setCurrentResults(results);\n }\n },\n [allResults, currentResults, currentResults.length, results]\n );\n\n const clearList = params => {\n setAllResults([]);\n setParams({ ...params, offset: 0 });\n };\n\n const setQueryParams = params => {\n params.value !== searchedValue ? clearList(params) : setParams(params);\n };\n\n return [{ loading, results: allResults, total }, setQueryParams];\n}\n\nexport default useSearchResults;\n"],"mappings":";;;;;;AAAA,SAASA,QAAT,EAAmBC,SAAnB,QAAoC,OAApC;AACA,OAAOC,SAAP,MAAsB,cAAtB;;AAEA,SAASC,gBAAT,CAA0B;EAAEC,QAAF;EAAYC,UAAZ;EAAwBC,QAAxB;EAAkCC;AAAlC,CAA1B,EAAsE;EACpE,MAAM,CACJ;IACEC,aADF;IAEEC,OAFF;IAGEC,IAAI,EAAE;MAAEC,OAAF;MAAWC;IAAX;EAHR,CADI,EAMJC,SANI,IAOFX,SAAS,CAAC;IAAEE,QAAF;IAAYC,UAAZ;IAAwBC,QAAxB;IAAkCC;EAAlC,CAAD,CAPb;EAQA,MAAM,CAACO,cAAD,EAAiBC,iBAAjB,IAAsCf,QAAQ,CAAC,EAAD,CAApD;EACA,MAAM,CAACgB,UAAD,EAAaC,aAAb,IAA8BjB,QAAQ,CAAC,EAAD,CAA5C;EAEAC,SAAS,CACP,MAAM;IACJ,IAAIa,cAAc,CAACI,MAAf,KAA0BP,OAAO,CAACO,MAAtC,EAA8C;MAC5CD,aAAa,CAAC,CAAC,GAAGD,UAAJ,EAAgB,GAAGL,OAAnB,CAAD,CAAb;MACAI,iBAAiB,CAACJ,OAAD,CAAjB;IACD;EACF,CANM,EAOP,CAACK,UAAD,EAAaF,cAAb,EAA6BA,cAAc,CAACI,MAA5C,EAAoDP,OAApD,CAPO,CAAT;;EAUA,MAAMQ,SAAS,GAAGC,MAAM,IAAI;IAC1BH,aAAa,CAAC,EAAD,CAAb;IACAJ,SAAS,iCAAMO,MAAN;MAAcC,MAAM,EAAE;IAAtB,GAAT;EACD,CAHD;;EAKA,MAAMC,cAAc,GAAGF,MAAM,IAAI;IAC/BA,MAAM,CAACG,KAAP,KAAiBf,aAAjB,GAAiCW,SAAS,CAACC,MAAD,CAA1C,GAAqDP,SAAS,CAACO,MAAD,CAA9D;EACD,CAFD;;EAIA,OAAO,CAAC;IAAEX,OAAF;IAAWE,OAAO,EAAEK,UAApB;IAAgCJ;EAAhC,CAAD,EAA0CU,cAA1C,CAAP;AACD;;AAED,eAAenB,gBAAf"}
1
+ {"version":3,"file":"useSearchResults.js","names":["useSearch","useSearchResults","queryKey","resultKeys","entities","fields","searchedValue","loading","data","results","total","setParams","clearList","params","offset","setQueryParams","value"],"sources":["../../../src/components/useSearchResults/useSearchResults.js"],"sourcesContent":["import useSearch from '../useSearch';\n\nfunction useSearchResults({ queryKey, resultKeys, entities, fields }) {\n const [\n {\n searchedValue,\n loading,\n data: { results, total }\n },\n setParams\n ] = useSearch({ queryKey, resultKeys, entities, fields });\n\n const clearList = params => {\n setParams({ ...params, offset: 0 });\n };\n\n const setQueryParams = params => {\n params.value !== searchedValue ? clearList(params) : setParams(params);\n };\n\n return [{ loading, results, total }, setQueryParams];\n}\n\nexport default useSearchResults;\n"],"mappings":";;;;;;AAAA,OAAOA,SAAP,MAAsB,cAAtB;;AAEA,SAASC,gBAAT,CAA0B;EAAEC,QAAF;EAAYC,UAAZ;EAAwBC,QAAxB;EAAkCC;AAAlC,CAA1B,EAAsE;EACpE,MAAM,CACJ;IACEC,aADF;IAEEC,OAFF;IAGEC,IAAI,EAAE;MAAEC,OAAF;MAAWC;IAAX;EAHR,CADI,EAMJC,SANI,IAOFX,SAAS,CAAC;IAAEE,QAAF;IAAYC,UAAZ;IAAwBC,QAAxB;IAAkCC;EAAlC,CAAD,CAPb;;EASA,MAAMO,SAAS,GAAGC,MAAM,IAAI;IAC1BF,SAAS,iCAAME,MAAN;MAAcC,MAAM,EAAE;IAAtB,GAAT;EACD,CAFD;;EAIA,MAAMC,cAAc,GAAGF,MAAM,IAAI;IAC/BA,MAAM,CAACG,KAAP,KAAiBV,aAAjB,GAAiCM,SAAS,CAACC,MAAD,CAA1C,GAAqDF,SAAS,CAACE,MAAD,CAA9D;EACD,CAFD;;EAIA,OAAO,CAAC;IAAEN,OAAF;IAAWE,OAAX;IAAoBC;EAApB,CAAD,EAA8BK,cAA9B,CAAP;AACD;;AAED,eAAed,gBAAf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/plugin-search-ui",
3
- "version": "0.124.0-alpha.21",
3
+ "version": "0.125.0-admin-updates.0",
4
4
  "description": "Blaze plugin search ui",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "license": "GPL-3.0",
29
29
  "dependencies": {
30
- "@blaze-cms/admin-ui-utils": "^0.124.0-alpha.2",
30
+ "@blaze-cms/admin-ui-utils": "^0.125.0-admin-updates.0",
31
31
  "@blaze-cms/core-errors": "^0.118.0",
32
32
  "@blaze-cms/setup-ui": "^0.92.0",
33
33
  "@blaze-react/button": "0.5.19",
@@ -52,5 +52,5 @@
52
52
  "lib/*",
53
53
  "lib-es/*"
54
54
  ],
55
- "gitHead": "6c17771cbc704bc1bc0943f71a0b8f8e3eb531fa"
55
+ "gitHead": "935ad60cd8cb3d04e45459a93a04bc0846644445"
56
56
  }
@@ -1,21 +1,28 @@
1
1
  import React, { useState, useRef, useEffect } from 'react';
2
2
  import classnames from 'classnames';
3
+ import { useDebounce } from '@blaze-react/utils/lib/customHooks';
3
4
  import useLocalStorage from '../useLocalStorage';
4
5
  import SearchBar from './SearchBar';
5
6
  import RecentSearches from './RecentSearches';
6
7
  import SearchResults from './SearchResults';
7
8
  import TriggerModal from './TriggerModal';
9
+ import SearchAdminSideBar from './SearchAdminSideBar';
8
10
  import useSearchResults from '../useSearchResults';
9
11
  import { SEARCH_ADMIN } from '../../constants';
10
12
 
11
13
  const SearchAdmin = () => {
12
14
  const [searchTerm, setSearchTerm] = useState('');
15
+ const [openSearchSideBar, setOpenSearchSideBar] = useState(true);
16
+ const [entityValues, setEntityValues] = useState([]);
17
+
13
18
  const [recentSearches, setRecentSearches] = useLocalStorage('recentSearches', []);
14
19
  const [displaySearchModalFrame, setDisplaySearchModalFrame] = useState(false);
15
20
  const [enableResults, setEnableResults] = useState(true);
16
21
  const searchInputRef = useRef(null);
22
+ const debouncedEntityValues = useDebounce(entityValues, 500);
17
23
  const [{ loading, results, total }, setQueryParams] = useSearchResults({
18
- queryKey: SEARCH_ADMIN
24
+ queryKey: SEARCH_ADMIN,
25
+ entities: debouncedEntityValues.map(e => e.id)
19
26
  });
20
27
 
21
28
  useEffect(
@@ -68,6 +75,10 @@ const SearchAdmin = () => {
68
75
  'modal--show': displaySearchModalFrame
69
76
  });
70
77
 
78
+ const searchModalSideBarClassName = classnames('modal__search__sidebar', {
79
+ 'modal__search__sidebar--close': !openSearchSideBar
80
+ });
81
+
71
82
  const isEmptySearchTermAndData = !searchTerm && !results.length;
72
83
  const isEmptySearchTermnAndDisabledResults = !searchTerm && !enableResults;
73
84
  const shouldDisplayRecentSearches =
@@ -75,51 +86,70 @@ const SearchAdmin = () => {
75
86
 
76
87
  const showResults = enableResults && results.length;
77
88
 
89
+ const handleSetEntityValues = newEntity => {
90
+ const entityExists = entityValues.some(entity => entity.id === newEntity.id);
91
+ if (entityExists) {
92
+ setEntityValues(entityValues.filter(entity => entity.id !== newEntity.id));
93
+ } else {
94
+ setEntityValues([...entityValues, newEntity]);
95
+ }
96
+ };
97
+
78
98
  return (
79
99
  <div className="search search--header">
80
100
  <TriggerModal toggleSearchModal={toggleSearchModal} />
81
101
  <div className={searchModalResultsClassName}>
82
102
  {displaySearchModalFrame && (
83
- <>
84
- <div className="modal__header modal__header--search">
85
- <SearchBar
86
- toggleSearchModal={toggleSearchModal}
87
- handleKeyDown={handleKeyDown}
88
- searchInputRef={searchInputRef}
89
- handleSearchTerm={handleSearchTerm}
90
- searchTerm={searchTerm}
91
- search={() => search({ value: searchTerm })}
92
- />
93
- </div>
94
- {shouldDisplayRecentSearches ? (
95
- <RecentSearches
96
- recentSearches={recentSearches}
97
- handleSearchTerm={handleSearchTerm}
98
- search={search}
99
- />
100
- ) : (
101
- <>
102
- {!showResults && (
103
- <div className="list list--search">
104
- <div className="header header--list">
105
- <h2>No Results</h2>
103
+ <div className="modal__search">
104
+ <SearchAdminSideBar
105
+ searchModalSideBarClassName={searchModalSideBarClassName}
106
+ openSearchSideBar={openSearchSideBar}
107
+ setOpenSearchSideBar={setOpenSearchSideBar}
108
+ handleSetEntityValues={handleSetEntityValues}
109
+ entityValues={entityValues}
110
+ setEntityValues={setEntityValues}
111
+ />
112
+ <div className="modal__search__content">
113
+ <div className="modal__header modal__header--search">
114
+ <SearchBar
115
+ toggleSearchModal={toggleSearchModal}
116
+ handleKeyDown={handleKeyDown}
117
+ searchInputRef={searchInputRef}
118
+ handleSearchTerm={handleSearchTerm}
119
+ searchTerm={searchTerm}
120
+ search={() => search({ value: searchTerm })}
121
+ />
122
+ </div>
123
+ {shouldDisplayRecentSearches ? (
124
+ <RecentSearches
125
+ recentSearches={recentSearches}
126
+ handleSearchTerm={handleSearchTerm}
127
+ search={search}
128
+ />
129
+ ) : (
130
+ <>
131
+ {!showResults && (
132
+ <div className="list list--search">
133
+ <div className="header header--list">
134
+ <h2>No Results</h2>
135
+ </div>
106
136
  </div>
107
- </div>
108
- )}
109
- </>
110
- )}
111
- {showResults && (
112
- <SearchResults
113
- currentValue={searchTerm}
114
- searchTerm={searchTerm}
115
- loading={loading}
116
- results={results}
117
- total={total}
118
- setQueryParams={setQueryParams}
119
- closeModal={toggleSearchModal}
120
- />
121
- )}
122
- </>
137
+ )}
138
+ </>
139
+ )}
140
+ {showResults && (
141
+ <SearchResults
142
+ currentValue={searchTerm}
143
+ searchTerm={searchTerm}
144
+ loading={loading}
145
+ results={results}
146
+ total={total}
147
+ setQueryParams={setQueryParams}
148
+ closeModal={toggleSearchModal}
149
+ />
150
+ )}
151
+ </div>
152
+ </div>
123
153
  )}
124
154
  </div>
125
155
  </div>
@@ -0,0 +1,88 @@
1
+ import React, { useState } from 'react';
2
+ import { useQuery } from '@apollo/client';
3
+ import { getQuery } from '@blaze-cms/admin-ui-utils';
4
+ import { Checkbox } from '@blaze-react/checkboxes';
5
+
6
+ const MENU_PERMISSIONS = ['update:any', 'update:own', 'create:any', 'create:own'];
7
+
8
+ const SearchAdminSideBar = ({
9
+ searchModalSideBarClassName,
10
+ openSearchSideBar,
11
+ setOpenSearchSideBar,
12
+ handleSetEntityValues,
13
+ entityValues,
14
+ setEntityValues
15
+ }) => {
16
+ const [loadMore, setLoadMore] = useState(false);
17
+ const { data: { getEntitySchemas = [] } = {}, loading } = useQuery(
18
+ getQuery('GET_USER_EDITABLE_ENTITIES'),
19
+ {
20
+ variables: {
21
+ canDoActions: MENU_PERMISSIONS
22
+ }
23
+ }
24
+ );
25
+
26
+ if (loading) return null;
27
+
28
+ const filteredEntitiesSchemas = getEntitySchemas.filter(entity => {
29
+ if (Object.keys(entity.extras).length) {
30
+ return entity.extras.searchIndexes.includes('admin');
31
+ }
32
+ return false;
33
+ });
34
+
35
+ const entitiesToShow = filteredEntitiesSchemas.slice(
36
+ 0,
37
+ loadMore ? filteredEntitiesSchemas.length : 5
38
+ );
39
+
40
+ return (
41
+ <div className={searchModalSideBarClassName}>
42
+ <div
43
+ className="modal__search__sidebar__button"
44
+ role="button"
45
+ onClick={() => setOpenSearchSideBar(!openSearchSideBar)}>
46
+ <i className="material-icons">
47
+ {openSearchSideBar ? 'keyboard_arrow_left' : 'keyboard_arrow_right'}
48
+ </i>
49
+ </div>
50
+ <div className="modal__search__sidebar__container">
51
+ <div className="modal__search__sidebar__wrapper">
52
+ <div className="modal__search__sidebar__filters">
53
+ <i className="material-icons modal__search__sidebar__icon">tune</i>
54
+ <span>Filters</span>
55
+ </div>
56
+ <div
57
+ className="modal__search__sidebar__clear"
58
+ role="button"
59
+ onClick={() => setEntityValues([])}>
60
+ <span>Clear all</span>
61
+ <i className="material-icons modal__search__sidebar__icon--clear">replay</i>
62
+ </div>
63
+ </div>
64
+ <div className="modal__search__sidebar__entity-list">
65
+ <h1>Entity list</h1>
66
+ {entitiesToShow.map(entity => (
67
+ <Checkbox
68
+ checked={entityValues.some(_entity => _entity.id === entity.id)}
69
+ label={entity.displayName}
70
+ id={entity.id}
71
+ name={entity.id}
72
+ onChange={({ value: { checked } }) => handleSetEntityValues(entity)}
73
+ />
74
+ ))}
75
+ <div
76
+ className="modal__search__sidebar__more"
77
+ role="button"
78
+ onClick={() => setLoadMore(!loadMore)}>
79
+ <i className="material-icons">{!loadMore ? 'navigate_next' : 'expand_less'}</i>
80
+ <span>{loadMore ? 'Less' : 'More'}</span>
81
+ </div>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ );
86
+ };
87
+
88
+ export default SearchAdminSideBar;
@@ -0,0 +1,3 @@
1
+ import SearchAdminSideBar from './SearchAdminSideBar';
2
+
3
+ export default SearchAdminSideBar;
@@ -54,7 +54,9 @@ const SearchResults = ({
54
54
  {loading && <span>Loading...</span>}
55
55
  <div className="modal__content modal__content--search">
56
56
  <div className="header header--list">
57
- <h2>{total} results</h2>
57
+ <h2 className="header--list--results">
58
+ About <b>{total}</b> search keywords results
59
+ </h2>
58
60
  </div>
59
61
  <VirtualList
60
62
  width="100%"
@@ -65,15 +67,24 @@ const SearchResults = ({
65
67
  scrollToIndex={currentIndex}
66
68
  onItemsRendered={handleRenderedItems}
67
69
  renderItem={({ index, style }) => {
68
- const { id, docType, updated, name } = results[index];
70
+ const {
71
+ id,
72
+ docType,
73
+ updated,
74
+ name,
75
+ entityIdentifier,
76
+ published,
77
+ created,
78
+ status
79
+ } = results[index];
69
80
  const updatedDate = updated ? getDateFormat(updated) : null;
81
+ const createdDate = created ? getDateFormat(created) : null;
82
+ const publishedDate = published ? getDateFormat(published) : null;
70
83
  return (
71
84
  <div key={index} style={style} className="list__item--resultWrapper">
72
85
  <div className="list__item list__item--result">
73
86
  <div className="list__item-row list__item-row--result">
74
- <span className="badge badge--primary">
75
- {docType} {updatedDate}
76
- </span>
87
+ <span className="list__item-identifier">{entityIdentifier}</span>
77
88
  <a
78
89
  href={getNavigationRoute({
79
90
  id,
@@ -85,9 +96,34 @@ const SearchResults = ({
85
96
  docType
86
97
  })
87
98
  }
88
- className="list__item-text list__item-text--result">
99
+ className="list__item-link">
89
100
  {name}
90
101
  </a>
102
+
103
+ <div className="list__item-dates">
104
+ {publishedDate && (
105
+ <span>
106
+ <b>Published: </b>
107
+ {publishedDate}
108
+ </span>
109
+ )}
110
+ <span>
111
+ <b>Created: </b>
112
+ {createdDate}
113
+ </span>
114
+ <span>
115
+ <b>Updated: </b>
116
+ {updatedDate}
117
+ </span>
118
+ </div>
119
+ <div className="list__item-status">
120
+ {status && (
121
+ <span>
122
+ <b>Status: </b>
123
+ {status}
124
+ </span>
125
+ )}
126
+ </div>
91
127
  </div>
92
128
  </div>
93
129
  </div>
@@ -56,7 +56,7 @@ const SearchPublishedContent = ({
56
56
  useEffect(
57
57
  () => {
58
58
  if (debouncedSearchTerm && debouncedSearchTerm !== previousSearchTerm) {
59
- setQueryParams({ value: debouncedSearchTerm });
59
+ setQueryParams({ value: `${debouncedSearchTerm}*` });
60
60
  setPreviousSearchTerm(debouncedSearchTerm);
61
61
  }
62
62
  },
@@ -5,7 +5,9 @@ import searchQueries from '../../application/query';
5
5
  function useSearch({ queryKey, resultKeys, entities = [], fields }) {
6
6
  const [queryParams, setParams] = useState({ limit: 20, offset: 0, value: '' });
7
7
  const [searchedValue, setSearchedValue] = useState(null);
8
+ const [en, setEn] = useState([]);
8
9
  const [previousOffset, setPreviousOffset] = useState(null);
10
+
9
11
  const buildSearchQuery = searchQueries[queryKey];
10
12
  const [
11
13
  getSearchResults,
@@ -28,13 +30,14 @@ function useSearch({ queryKey, resultKeys, entities = [], fields }) {
28
30
  const { limit, offset, value } = queryParams;
29
31
  const isNewValueSet = value && value !== searchedValue;
30
32
  const isNewOffsetSet = previousOffset !== null && offset !== previousOffset;
33
+ const notSameLength = en.length !== entities.length;
31
34
  const parsedEntities = entities.length
32
35
  ? entities.map(entity => ({
33
36
  match: { docType: entity }
34
37
  }))
35
38
  : [];
36
39
 
37
- if (isNewValueSet || isNewOffsetSet) {
40
+ if (isNewValueSet || isNewOffsetSet || notSameLength) {
38
41
  getSearchResults({
39
42
  variables: {
40
43
  limit,
@@ -47,7 +50,8 @@ function useSearch({ queryKey, resultKeys, entities = [], fields }) {
47
50
  query_string: {
48
51
  query: value,
49
52
  fields,
50
- type: 'most_fields'
53
+ type: 'most_fields',
54
+ default_operator: 'AND'
51
55
  }
52
56
  },
53
57
  {
@@ -63,6 +67,7 @@ function useSearch({ queryKey, resultKeys, entities = [], fields }) {
63
67
  });
64
68
  setSearchedValue(value);
65
69
  setPreviousOffset(offset);
70
+ setEn(entities);
66
71
  }
67
72
  },
68
73
  [
@@ -74,7 +79,9 @@ function useSearch({ queryKey, resultKeys, entities = [], fields }) {
74
79
  previousOffset,
75
80
  getSearchResults,
76
81
  entities,
77
- fields
82
+ fields,
83
+ entities.length,
84
+ en.length
78
85
  ]
79
86
  );
80
87
 
@@ -1,4 +1,3 @@
1
- import { useState, useEffect } from 'react';
2
1
  import useSearch from '../useSearch';
3
2
 
4
3
  function useSearchResults({ queryKey, resultKeys, entities, fields }) {
@@ -10,21 +9,8 @@ function useSearchResults({ queryKey, resultKeys, entities, fields }) {
10
9
  },
11
10
  setParams
12
11
  ] = useSearch({ queryKey, resultKeys, entities, fields });
13
- const [currentResults, setCurrentResults] = useState([]);
14
- const [allResults, setAllResults] = useState([]);
15
-
16
- useEffect(
17
- () => {
18
- if (currentResults.length !== results.length) {
19
- setAllResults([...allResults, ...results]);
20
- setCurrentResults(results);
21
- }
22
- },
23
- [allResults, currentResults, currentResults.length, results]
24
- );
25
12
 
26
13
  const clearList = params => {
27
- setAllResults([]);
28
14
  setParams({ ...params, offset: 0 });
29
15
  };
30
16
 
@@ -32,7 +18,7 @@ function useSearchResults({ queryKey, resultKeys, entities, fields }) {
32
18
  params.value !== searchedValue ? clearList(params) : setParams(params);
33
19
  };
34
20
 
35
- return [{ loading, results: allResults, total }, setQueryParams];
21
+ return [{ loading, results, total }, setQueryParams];
36
22
  }
37
23
 
38
24
  export default useSearchResults;