@blaze-cms/plugin-search-ui 0.130.0-admin-updates.0 → 0.130.0-structured-data.1

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 (34) hide show
  1. package/CHANGELOG.md +2 -19
  2. package/lib/components/SearchAdmin/SearchAdmin.js +19 -59
  3. package/lib/components/SearchAdmin/SearchAdmin.js.map +1 -1
  4. package/lib/components/SearchAdmin/SearchResults/SearchResults.js +13 -47
  5. package/lib/components/SearchAdmin/SearchResults/SearchResults.js.map +1 -1
  6. package/lib/components/useLocalStorage/useLocalStorage.js +1 -0
  7. package/lib/components/useLocalStorage/useLocalStorage.js.map +1 -1
  8. package/lib/components/useSearch/useSearch.js +5 -11
  9. package/lib/components/useSearch/useSearch.js.map +1 -1
  10. package/lib/components/useSearchResults/useSearchResults.js +9 -9
  11. package/lib/components/useSearchResults/useSearchResults.js.map +1 -1
  12. package/lib-es/components/SearchAdmin/SearchAdmin.js +10 -33
  13. package/lib-es/components/SearchAdmin/SearchAdmin.js.map +1 -1
  14. package/lib-es/components/SearchAdmin/SearchResults/SearchResults.js +11 -38
  15. package/lib-es/components/SearchAdmin/SearchResults/SearchResults.js.map +1 -1
  16. package/lib-es/components/useSearch/useSearch.js +2 -5
  17. package/lib-es/components/useSearch/useSearch.js.map +1 -1
  18. package/lib-es/components/useSearchResults/useSearchResults.js +3 -3
  19. package/lib-es/components/useSearchResults/useSearchResults.js.map +1 -1
  20. package/package.json +6 -6
  21. package/src/components/SearchAdmin/SearchAdmin.js +41 -61
  22. package/src/components/SearchAdmin/SearchResults/SearchResults.js +41 -98
  23. package/src/components/useSearch/useSearch.js +2 -8
  24. package/src/components/useSearchResults/useSearchResults.js +4 -3
  25. package/lib/components/SearchAdmin/SearchAdminSideBar/SearchAdminSideBar.js +0 -113
  26. package/lib/components/SearchAdmin/SearchAdminSideBar/SearchAdminSideBar.js.map +0 -1
  27. package/lib/components/SearchAdmin/SearchAdminSideBar/index.js +0 -12
  28. package/lib/components/SearchAdmin/SearchAdminSideBar/index.js.map +0 -1
  29. package/lib-es/components/SearchAdmin/SearchAdminSideBar/SearchAdminSideBar.js +0 -76
  30. package/lib-es/components/SearchAdmin/SearchAdminSideBar/SearchAdminSideBar.js.map +0 -1
  31. package/lib-es/components/SearchAdmin/SearchAdminSideBar/index.js +0 -3
  32. package/lib-es/components/SearchAdmin/SearchAdminSideBar/index.js.map +0 -1
  33. package/src/components/SearchAdmin/SearchAdminSideBar/SearchAdminSideBar.js +0 -88
  34. package/src/components/SearchAdmin/SearchAdminSideBar/index.js +0 -3
@@ -1,30 +1,24 @@
1
1
  import React, { useState, useRef, useEffect } from 'react';
2
2
  import classnames from 'classnames';
3
- import { useDebounce } from '@blaze-react/utils/lib/customHooks';
4
3
  import useLocalStorage from '../useLocalStorage';
5
4
  import SearchBar from './SearchBar';
6
5
  import RecentSearches from './RecentSearches';
7
6
  import SearchResults from './SearchResults';
8
7
  import TriggerModal from './TriggerModal';
9
- import SearchAdminSideBar from './SearchAdminSideBar';
10
8
  import useSearchResults from '../useSearchResults';
11
9
  import { SEARCH_ADMIN } from '../../constants';
12
10
  const SearchAdmin = () => {
13
11
  const [searchTerm, setSearchTerm] = useState('');
14
- const [openSearchSideBar, setOpenSearchSideBar] = useState(true);
15
- const [entityValues, setEntityValues] = useState([]);
16
12
  const [recentSearches, setRecentSearches] = useLocalStorage('recentSearches', []);
17
13
  const [displaySearchModalFrame, setDisplaySearchModalFrame] = useState(false);
18
14
  const [enableResults, setEnableResults] = useState(true);
19
15
  const searchInputRef = useRef(null);
20
- const debouncedEntityValues = useDebounce(entityValues, 500);
21
16
  const [{
22
17
  loading,
23
18
  results,
24
19
  total
25
20
  }, setQueryParams] = useSearchResults({
26
- queryKey: SEARCH_ADMIN,
27
- entities: debouncedEntityValues.map(e => e.id)
21
+ queryKey: SEARCH_ADMIN
28
22
  });
29
23
  useEffect(() => {
30
24
  if (searchInputRef && searchInputRef.current) {
@@ -78,38 +72,17 @@ const SearchAdmin = () => {
78
72
  const searchModalResultsClassName = classnames('modal modal--full-screen modal--search', {
79
73
  'modal--show': displaySearchModalFrame
80
74
  });
81
- const searchModalSideBarClassName = classnames('modal__search__sidebar', {
82
- 'modal__search__sidebar--close': !openSearchSideBar
83
- });
84
75
  const isEmptySearchTermAndData = !searchTerm && !results.length;
85
76
  const isEmptySearchTermnAndDisabledResults = !searchTerm && !enableResults;
86
77
  const shouldDisplayRecentSearches = isEmptySearchTermAndData || isEmptySearchTermnAndDisabledResults;
87
- const handleSetEntityValues = newEntity => {
88
- const entityExists = entityValues.some(entity => entity.id === newEntity.id);
89
- if (entityExists) {
90
- setEntityValues(entityValues.filter(entity => entity.id !== newEntity.id));
91
- } else {
92
- setEntityValues([...entityValues, newEntity]);
93
- }
94
- };
78
+ const showResults = enableResults && results.length;
95
79
  return /*#__PURE__*/React.createElement("div", {
96
80
  className: "search search--header"
97
81
  }, /*#__PURE__*/React.createElement(TriggerModal, {
98
82
  toggleSearchModal: toggleSearchModal
99
83
  }), /*#__PURE__*/React.createElement("div", {
100
84
  className: searchModalResultsClassName
101
- }, displaySearchModalFrame && /*#__PURE__*/React.createElement("div", {
102
- className: "modal__search"
103
- }, /*#__PURE__*/React.createElement(SearchAdminSideBar, {
104
- searchModalSideBarClassName: searchModalSideBarClassName,
105
- openSearchSideBar: openSearchSideBar,
106
- setOpenSearchSideBar: setOpenSearchSideBar,
107
- handleSetEntityValues: handleSetEntityValues,
108
- entityValues: entityValues,
109
- setEntityValues: setEntityValues
110
- }), /*#__PURE__*/React.createElement("div", {
111
- className: "modal__search__content"
112
- }, /*#__PURE__*/React.createElement("div", {
85
+ }, displaySearchModalFrame && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
113
86
  className: "modal__header modal__header--search"
114
87
  }, /*#__PURE__*/React.createElement(SearchBar, {
115
88
  toggleSearchModal: toggleSearchModal,
@@ -120,11 +93,15 @@ const SearchAdmin = () => {
120
93
  search: () => search({
121
94
  value: searchTerm
122
95
  })
123
- })), shouldDisplayRecentSearches && /*#__PURE__*/React.createElement(RecentSearches, {
96
+ })), shouldDisplayRecentSearches ? /*#__PURE__*/React.createElement(RecentSearches, {
124
97
  recentSearches: recentSearches,
125
98
  handleSearchTerm: handleSearchTerm,
126
99
  search: search
127
- }), enableResults && /*#__PURE__*/React.createElement(SearchResults, {
100
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, !showResults && /*#__PURE__*/React.createElement("div", {
101
+ className: "list list--search"
102
+ }, /*#__PURE__*/React.createElement("div", {
103
+ className: "header header--list"
104
+ }, /*#__PURE__*/React.createElement("h2", null, "No Results")))), showResults && /*#__PURE__*/React.createElement(SearchResults, {
128
105
  currentValue: searchTerm,
129
106
  searchTerm: searchTerm,
130
107
  loading: loading,
@@ -132,7 +109,7 @@ const SearchAdmin = () => {
132
109
  total: total,
133
110
  setQueryParams: setQueryParams,
134
111
  closeModal: toggleSearchModal
135
- })))));
112
+ }))));
136
113
  };
137
114
  export default SearchAdmin;
138
115
  //# sourceMappingURL=SearchAdmin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchAdmin.js","names":["React","useState","useRef","useEffect","classnames","useDebounce","useLocalStorage","SearchBar","RecentSearches","SearchResults","TriggerModal","SearchAdminSideBar","useSearchResults","SEARCH_ADMIN","SearchAdmin","searchTerm","setSearchTerm","openSearchSideBar","setOpenSearchSideBar","entityValues","setEntityValues","recentSearches","setRecentSearches","displaySearchModalFrame","setDisplaySearchModalFrame","enableResults","setEnableResults","searchInputRef","debouncedEntityValues","loading","results","total","setQueryParams","queryKey","entities","map","e","id","current","focus","handleSearchTerm","target","value","toggleSearchModal","search","MAX_RECENT_SEARCHES","recentSearchesCopy","slice","includes","push","length","shift","handleKeyDown","key","clear","searchModalResultsClassName","searchModalSideBarClassName","isEmptySearchTermAndData","isEmptySearchTermnAndDisabledResults","shouldDisplayRecentSearches","handleSetEntityValues","newEntity","entityExists","some","entity","filter","createElement","className","currentValue","closeModal"],"sources":["../../../src/components/SearchAdmin/SearchAdmin.js"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport classnames from 'classnames';\nimport { useDebounce } from '@blaze-react/utils/lib/customHooks';\nimport useLocalStorage from '../useLocalStorage';\nimport SearchBar from './SearchBar';\nimport RecentSearches from './RecentSearches';\nimport SearchResults from './SearchResults';\nimport TriggerModal from './TriggerModal';\nimport SearchAdminSideBar from './SearchAdminSideBar';\nimport useSearchResults from '../useSearchResults';\nimport { SEARCH_ADMIN } from '../../constants';\n\nconst SearchAdmin = () => {\n const [searchTerm, setSearchTerm] = useState('');\n const [openSearchSideBar, setOpenSearchSideBar] = useState(true);\n const [entityValues, setEntityValues] = useState([]);\n\n const [recentSearches, setRecentSearches] = useLocalStorage('recentSearches', []);\n const [displaySearchModalFrame, setDisplaySearchModalFrame] = useState(false);\n const [enableResults, setEnableResults] = useState(true);\n const searchInputRef = useRef(null);\n const debouncedEntityValues = useDebounce(entityValues, 500);\n const [{ loading, results, total }, setQueryParams] = useSearchResults({\n queryKey: SEARCH_ADMIN,\n entities: debouncedEntityValues.map(e => e.id)\n });\n\n useEffect(\n () => {\n if (searchInputRef && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n },\n [displaySearchModalFrame]\n );\n\n const handleSearchTerm = ({ target: { value } }) => {\n setSearchTerm(value);\n };\n\n const toggleSearchModal = () => {\n setSearchTerm(null);\n setEnableResults(false);\n setDisplaySearchModalFrame(!displaySearchModalFrame);\n };\n\n const search = ({ value }) => {\n if (!value) return;\n !enableResults && setEnableResults(true);\n const MAX_RECENT_SEARCHES = 5;\n const recentSearchesCopy = recentSearches.slice();\n\n if (!recentSearchesCopy.includes(value)) {\n recentSearchesCopy.push(value);\n if (recentSearchesCopy.length > MAX_RECENT_SEARCHES) {\n recentSearchesCopy.shift();\n }\n }\n\n setRecentSearches(recentSearchesCopy);\n setQueryParams({ value });\n };\n\n const handleKeyDown = ({ key }) => {\n if (key === 'Enter') {\n if (!searchTerm) return clear();\n search({ value: searchTerm });\n }\n };\n\n const clear = () => {\n setSearchTerm('');\n setEnableResults(false);\n };\n\n const searchModalResultsClassName = classnames('modal modal--full-screen modal--search', {\n 'modal--show': displaySearchModalFrame\n });\n\n const searchModalSideBarClassName = classnames('modal__search__sidebar', {\n 'modal__search__sidebar--close': !openSearchSideBar\n });\n\n const isEmptySearchTermAndData = !searchTerm && !results.length;\n const isEmptySearchTermnAndDisabledResults = !searchTerm && !enableResults;\n const shouldDisplayRecentSearches =\n isEmptySearchTermAndData || isEmptySearchTermnAndDisabledResults;\n\n const handleSetEntityValues = newEntity => {\n const entityExists = entityValues.some(entity => entity.id === newEntity.id);\n if (entityExists) {\n setEntityValues(entityValues.filter(entity => entity.id !== newEntity.id));\n } else {\n setEntityValues([...entityValues, newEntity]);\n }\n };\n\n return (\n <div className=\"search search--header\">\n <TriggerModal toggleSearchModal={toggleSearchModal} />\n <div className={searchModalResultsClassName}>\n {displaySearchModalFrame && (\n <div className=\"modal__search\">\n <SearchAdminSideBar\n searchModalSideBarClassName={searchModalSideBarClassName}\n openSearchSideBar={openSearchSideBar}\n setOpenSearchSideBar={setOpenSearchSideBar}\n handleSetEntityValues={handleSetEntityValues}\n entityValues={entityValues}\n setEntityValues={setEntityValues}\n />\n <div className=\"modal__search__content\">\n <div className=\"modal__header modal__header--search\">\n <SearchBar\n toggleSearchModal={toggleSearchModal}\n handleKeyDown={handleKeyDown}\n searchInputRef={searchInputRef}\n handleSearchTerm={handleSearchTerm}\n searchTerm={searchTerm}\n search={() => search({ value: searchTerm })}\n />\n </div>\n {shouldDisplayRecentSearches && (\n <RecentSearches\n recentSearches={recentSearches}\n handleSearchTerm={handleSearchTerm}\n search={search}\n />\n )}\n {enableResults && (\n <SearchResults\n currentValue={searchTerm}\n searchTerm={searchTerm}\n loading={loading}\n results={results}\n total={total}\n setQueryParams={setQueryParams}\n closeModal={toggleSearchModal}\n />\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default SearchAdmin;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SearchAdmin.js","names":["React","useState","useRef","useEffect","classnames","useLocalStorage","SearchBar","RecentSearches","SearchResults","TriggerModal","useSearchResults","SEARCH_ADMIN","SearchAdmin","searchTerm","setSearchTerm","recentSearches","setRecentSearches","displaySearchModalFrame","setDisplaySearchModalFrame","enableResults","setEnableResults","searchInputRef","loading","results","total","setQueryParams","queryKey","current","focus","handleSearchTerm","target","value","toggleSearchModal","search","MAX_RECENT_SEARCHES","recentSearchesCopy","slice","includes","push","length","shift","handleKeyDown","key","clear","searchModalResultsClassName","isEmptySearchTermAndData","isEmptySearchTermnAndDisabledResults","shouldDisplayRecentSearches","showResults","createElement","className","Fragment","currentValue","closeModal"],"sources":["../../../src/components/SearchAdmin/SearchAdmin.js"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport classnames from 'classnames';\nimport useLocalStorage from '../useLocalStorage';\nimport SearchBar from './SearchBar';\nimport RecentSearches from './RecentSearches';\nimport SearchResults from './SearchResults';\nimport TriggerModal from './TriggerModal';\nimport useSearchResults from '../useSearchResults';\nimport { SEARCH_ADMIN } from '../../constants';\n\nconst SearchAdmin = () => {\n const [searchTerm, setSearchTerm] = useState('');\n const [recentSearches, setRecentSearches] = useLocalStorage('recentSearches', []);\n const [displaySearchModalFrame, setDisplaySearchModalFrame] = useState(false);\n const [enableResults, setEnableResults] = useState(true);\n const searchInputRef = useRef(null);\n const [{ loading, results, total }, setQueryParams] = useSearchResults({\n queryKey: SEARCH_ADMIN\n });\n\n useEffect(\n () => {\n if (searchInputRef && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n },\n [displaySearchModalFrame]\n );\n\n const handleSearchTerm = ({ target: { value } }) => {\n setSearchTerm(value);\n };\n const toggleSearchModal = () => {\n setSearchTerm(null);\n setEnableResults(false);\n setDisplaySearchModalFrame(!displaySearchModalFrame);\n };\n const search = ({ value }) => {\n if (!value) return;\n !enableResults && setEnableResults(true);\n const MAX_RECENT_SEARCHES = 5;\n const recentSearchesCopy = recentSearches.slice();\n\n if (!recentSearchesCopy.includes(value)) {\n recentSearchesCopy.push(value);\n if (recentSearchesCopy.length > MAX_RECENT_SEARCHES) {\n recentSearchesCopy.shift();\n }\n }\n\n setRecentSearches(recentSearchesCopy);\n setQueryParams({ value });\n };\n\n const handleKeyDown = ({ key }) => {\n if (key === 'Enter') {\n if (!searchTerm) return clear();\n search({ value: searchTerm });\n }\n };\n\n const clear = () => {\n setSearchTerm('');\n setEnableResults(false);\n };\n\n const searchModalResultsClassName = classnames('modal modal--full-screen modal--search', {\n 'modal--show': displaySearchModalFrame\n });\n\n const isEmptySearchTermAndData = !searchTerm && !results.length;\n const isEmptySearchTermnAndDisabledResults = !searchTerm && !enableResults;\n const shouldDisplayRecentSearches =\n isEmptySearchTermAndData || isEmptySearchTermnAndDisabledResults;\n\n const showResults = enableResults && results.length;\n\n return (\n <div className=\"search search--header\">\n <TriggerModal toggleSearchModal={toggleSearchModal} />\n <div className={searchModalResultsClassName}>\n {displaySearchModalFrame && (\n <>\n <div className=\"modal__header modal__header--search\">\n <SearchBar\n toggleSearchModal={toggleSearchModal}\n handleKeyDown={handleKeyDown}\n searchInputRef={searchInputRef}\n handleSearchTerm={handleSearchTerm}\n searchTerm={searchTerm}\n search={() => search({ value: searchTerm })}\n />\n </div>\n {shouldDisplayRecentSearches ? (\n <RecentSearches\n recentSearches={recentSearches}\n handleSearchTerm={handleSearchTerm}\n search={search}\n />\n ) : (\n <>\n {!showResults && (\n <div className=\"list list--search\">\n <div className=\"header header--list\">\n <h2>No Results</h2>\n </div>\n </div>\n )}\n </>\n )}\n {showResults && (\n <SearchResults\n currentValue={searchTerm}\n searchTerm={searchTerm}\n loading={loading}\n results={results}\n total={total}\n setQueryParams={setQueryParams}\n closeModal={toggleSearchModal}\n />\n )}\n </>\n )}\n </div>\n </div>\n );\n};\n\nexport default SearchAdmin;\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable jsx-a11y/anchor-is-valid */
2
2
  /* eslint-disable jsx-a11y/no-static-element-interactions */
3
- import React, { useState, useEffect } from 'react';
3
+ import React, { useState } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import VirtualList from 'react-tiny-virtual-list';
6
6
  import { withRouter } from 'react-router-dom';
@@ -16,16 +16,6 @@ const SearchResults = ({
16
16
  }) => {
17
17
  const [verifiedRanges, setVerifiedRanges] = useState([]);
18
18
  const [currentIndex, setCurrentIndex] = useState(0);
19
- const [currentResults, setCurrentResults] = useState([]);
20
- const [currentTotal, setCurrentTotal] = useState(0);
21
- useEffect(() => {
22
- if (!loading) {
23
- const [lowestRange] = verifiedRanges;
24
- setCurrentTotal(total);
25
- setCurrentResults(results);
26
- if (lowestRange > results.length) setVerifiedRanges([]);
27
- }
28
- }, [loading, results, total, verifiedRanges]);
29
19
  const handleRenderedItems = async ({
30
20
  startIndex
31
21
  }) => {
@@ -61,21 +51,14 @@ const SearchResults = ({
61
51
  const year = String(newDate.getYear()).slice(-2);
62
52
  return `${day}.${month}.${year}`;
63
53
  };
64
- if (!currentResults.length) return /*#__PURE__*/React.createElement("div", {
65
- className: "list list--search"
66
- }, /*#__PURE__*/React.createElement("div", {
67
- className: "header header--list"
68
- }, /*#__PURE__*/React.createElement("h2", null, "No Results")));
69
- return /*#__PURE__*/React.createElement("div", {
54
+ return /*#__PURE__*/React.createElement(React.Fragment, null, loading && /*#__PURE__*/React.createElement("span", null, "Loading..."), /*#__PURE__*/React.createElement("div", {
70
55
  className: "modal__content modal__content--search"
71
56
  }, /*#__PURE__*/React.createElement("div", {
72
57
  className: "header header--list"
73
- }, /*#__PURE__*/React.createElement("h2", {
74
- className: "header--list--results"
75
- }, "About ", /*#__PURE__*/React.createElement("b", null, currentTotal), " search keywords results")), /*#__PURE__*/React.createElement(VirtualList, {
58
+ }, /*#__PURE__*/React.createElement("h2", null, total, " results")), /*#__PURE__*/React.createElement(VirtualList, {
76
59
  width: "100%",
77
60
  height: window.innerHeight - SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST,
78
- itemCount: currentResults.length,
61
+ itemCount: results.length,
79
62
  itemSize: SEARCH_RESULTS_ITEM_SIZE,
80
63
  overscanCount: SEARCH_RESULTS_OVER_SCAN_BUFFER,
81
64
  scrollToIndex: currentIndex,
@@ -88,15 +71,9 @@ const SearchResults = ({
88
71
  id,
89
72
  docType,
90
73
  updated,
91
- name,
92
- entityIdentifier,
93
- published,
94
- created,
95
- status
96
- } = currentResults[index];
74
+ name
75
+ } = results[index];
97
76
  const updatedDate = updated ? getDateFormat(updated) : null;
98
- const createdDate = created ? getDateFormat(created) : null;
99
- const publishedDate = published ? getDateFormat(published) : null;
100
77
  return /*#__PURE__*/React.createElement("div", {
101
78
  key: index,
102
79
  style: style,
@@ -106,8 +83,8 @@ const SearchResults = ({
106
83
  }, /*#__PURE__*/React.createElement("div", {
107
84
  className: "list__item-row list__item-row--result"
108
85
  }, /*#__PURE__*/React.createElement("span", {
109
- className: "list__item-identifier"
110
- }, entityIdentifier), /*#__PURE__*/React.createElement("a", {
86
+ className: "badge badge--primary"
87
+ }, docType, " ", updatedDate), /*#__PURE__*/React.createElement("a", {
111
88
  href: getNavigationRoute({
112
89
  id,
113
90
  docType
@@ -116,14 +93,10 @@ const SearchResults = ({
116
93
  id,
117
94
  docType
118
95
  }),
119
- className: "list__item-link"
120
- }, name), /*#__PURE__*/React.createElement("div", {
121
- className: "list__item-dates"
122
- }, publishedDate && /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("b", null, "Published: "), publishedDate), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("b", null, "Created: "), createdDate), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("b", null, "Updated: "), updatedDate)), /*#__PURE__*/React.createElement("div", {
123
- className: "list__item-status"
124
- }, status && /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("b", null, "Status: "), status)))));
96
+ className: "list__item-text list__item-text--result"
97
+ }, name))));
125
98
  }
126
- }), loading && /*#__PURE__*/React.createElement("span", null, "Loading..."));
99
+ })));
127
100
  };
128
101
  SearchResults.propTypes = {
129
102
  loading: PropTypes.bool.isRequired,
@@ -1 +1 @@
1
- {"version":3,"file":"SearchResults.js","names":["React","useState","useEffect","PropTypes","VirtualList","withRouter","SEARCH_RESULTS_OVER_SCAN_BUFFER","SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST","SEARCH_RESULTS_ITEM_SIZE","FILE","SearchResults","currentValue","loading","results","total","setQueryParams","closeModal","history","verifiedRanges","setVerifiedRanges","currentIndex","setCurrentIndex","currentResults","setCurrentResults","currentTotal","setCurrentTotal","lowestRange","length","handleRenderedItems","startIndex","rowsLength","loadIndex","Math","floor","includes","value","offset","getNavigationRoute","id","docType","navigate","push","getDateFormat","date","newDate","Date","day","getDate","slice","month","getMonth","year","String","getYear","createElement","className","width","height","window","innerHeight","itemCount","itemSize","overscanCount","scrollToIndex","onItemsRendered","renderItem","index","style","updated","name","entityIdentifier","published","created","status","updatedDate","createdDate","publishedDate","key","href","onClick","propTypes","bool","isRequired","array","number","func","object","string"],"sources":["../../../../src/components/SearchAdmin/SearchResults/SearchResults.js"],"sourcesContent":["/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport VirtualList from 'react-tiny-virtual-list';\nimport { withRouter } from 'react-router-dom';\nimport {\n SEARCH_RESULTS_OVER_SCAN_BUFFER,\n SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST,\n SEARCH_RESULTS_ITEM_SIZE,\n FILE\n} from '../../../constants';\n\nconst SearchResults = ({\n currentValue,\n loading,\n results,\n total,\n setQueryParams,\n closeModal,\n history\n}) => {\n const [verifiedRanges, setVerifiedRanges] = useState([]);\n const [currentIndex, setCurrentIndex] = useState(0);\n const [currentResults, setCurrentResults] = useState([]);\n const [currentTotal, setCurrentTotal] = useState(0);\n\n useEffect(\n () => {\n if (!loading) {\n const [lowestRange] = verifiedRanges;\n setCurrentTotal(total);\n setCurrentResults(results);\n if (lowestRange > results.length) setVerifiedRanges([]);\n }\n },\n [loading, results, total, verifiedRanges]\n );\n\n const handleRenderedItems = async ({ startIndex }) => {\n const rowsLength = results.length;\n const loadIndex = Math.floor(rowsLength / 2) - SEARCH_RESULTS_OVER_SCAN_BUFFER;\n if (loadIndex > 0 && loadIndex < startIndex && !verifiedRanges.includes(loadIndex)) {\n setQueryParams({ value: currentValue, offset: results.length });\n setVerifiedRanges([...verifiedRanges, loadIndex]);\n setCurrentIndex(startIndex + SEARCH_RESULTS_OVER_SCAN_BUFFER);\n }\n };\n\n const getNavigationRoute = ({ id, docType }) =>\n docType === FILE ? `/media/edit/${id}` : `/data-listing/${docType}/update/${id}`;\n\n const navigate = ({ id, docType }) => {\n history.push(getNavigationRoute({ id, docType }));\n closeModal();\n };\n\n const getDateFormat = date => {\n const newDate = new Date(date);\n const day = `0${newDate.getDate()}`.slice(-2);\n const month = `0${newDate.getMonth() + 1}`.slice(-2);\n const year = String(newDate.getYear()).slice(-2);\n return `${day}.${month}.${year}`;\n };\n\n if (!currentResults.length)\n return (\n <div className=\"list list--search\">\n <div className=\"header header--list\">\n <h2>No Results</h2>\n </div>\n </div>\n );\n\n return (\n <div className=\"modal__content modal__content--search\">\n <div className=\"header header--list\">\n <h2 className=\"header--list--results\">\n About <b>{currentTotal}</b> search keywords results\n </h2>\n </div>\n <VirtualList\n width=\"100%\"\n height={window.innerHeight - SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST}\n itemCount={currentResults.length}\n itemSize={SEARCH_RESULTS_ITEM_SIZE}\n overscanCount={SEARCH_RESULTS_OVER_SCAN_BUFFER}\n scrollToIndex={currentIndex}\n onItemsRendered={handleRenderedItems}\n renderItem={({ index, style }) => {\n const {\n id,\n docType,\n updated,\n name,\n entityIdentifier,\n published,\n created,\n status\n } = currentResults[index];\n const updatedDate = updated ? getDateFormat(updated) : null;\n const createdDate = created ? getDateFormat(created) : null;\n const publishedDate = published ? getDateFormat(published) : null;\n return (\n <div key={index} style={style} className=\"list__item--resultWrapper\">\n <div className=\"list__item list__item--result\">\n <div className=\"list__item-row list__item-row--result\">\n <span className=\"list__item-identifier\">{entityIdentifier}</span>\n <a\n href={getNavigationRoute({\n id,\n docType\n })}\n onClick={() =>\n navigate({\n id,\n docType\n })\n }\n className=\"list__item-link\">\n {name}\n </a>\n\n <div className=\"list__item-dates\">\n {publishedDate && (\n <span>\n <b>Published: </b>\n {publishedDate}\n </span>\n )}\n <span>\n <b>Created: </b>\n {createdDate}\n </span>\n <span>\n <b>Updated: </b>\n {updatedDate}\n </span>\n </div>\n <div className=\"list__item-status\">\n {status && (\n <span>\n <b>Status: </b>\n {status}\n </span>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }}\n />\n {loading && <span>Loading...</span>}\n </div>\n );\n};\n\nSearchResults.propTypes = {\n loading: PropTypes.bool.isRequired,\n results: PropTypes.array.isRequired,\n total: PropTypes.number.isRequired,\n setQueryParams: PropTypes.func.isRequired,\n closeModal: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n currentValue: PropTypes.string.isRequired\n};\n\nexport default withRouter(SearchResults);\n"],"mappings":"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"}
1
+ {"version":3,"file":"SearchResults.js","names":["React","useState","PropTypes","VirtualList","withRouter","SEARCH_RESULTS_OVER_SCAN_BUFFER","SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST","SEARCH_RESULTS_ITEM_SIZE","FILE","SearchResults","currentValue","loading","results","total","setQueryParams","closeModal","history","verifiedRanges","setVerifiedRanges","currentIndex","setCurrentIndex","handleRenderedItems","startIndex","rowsLength","length","loadIndex","Math","floor","includes","value","offset","getNavigationRoute","id","docType","navigate","push","getDateFormat","date","newDate","Date","day","getDate","slice","month","getMonth","year","String","getYear","createElement","Fragment","className","width","height","window","innerHeight","itemCount","itemSize","overscanCount","scrollToIndex","onItemsRendered","renderItem","index","style","updated","name","updatedDate","key","href","onClick","propTypes","bool","isRequired","array","number","func","object","string"],"sources":["../../../../src/components/SearchAdmin/SearchResults/SearchResults.js"],"sourcesContent":["/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport VirtualList from 'react-tiny-virtual-list';\nimport { withRouter } from 'react-router-dom';\nimport {\n SEARCH_RESULTS_OVER_SCAN_BUFFER,\n SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST,\n SEARCH_RESULTS_ITEM_SIZE,\n FILE\n} from '../../../constants';\n\nconst SearchResults = ({\n currentValue,\n loading,\n results,\n total,\n setQueryParams,\n closeModal,\n history\n}) => {\n const [verifiedRanges, setVerifiedRanges] = useState([]);\n const [currentIndex, setCurrentIndex] = useState(0);\n\n const handleRenderedItems = async ({ startIndex }) => {\n const rowsLength = results.length;\n const loadIndex = Math.floor(rowsLength / 2) - SEARCH_RESULTS_OVER_SCAN_BUFFER;\n if (loadIndex > 0 && loadIndex < startIndex && !verifiedRanges.includes(loadIndex)) {\n setQueryParams({ value: currentValue, offset: results.length });\n setVerifiedRanges([...verifiedRanges, loadIndex]);\n setCurrentIndex(startIndex + SEARCH_RESULTS_OVER_SCAN_BUFFER);\n }\n };\n\n const getNavigationRoute = ({ id, docType }) =>\n docType === FILE ? `/media/edit/${id}` : `/data-listing/${docType}/update/${id}`;\n\n const navigate = ({ id, docType }) => {\n history.push(getNavigationRoute({ id, docType }));\n closeModal();\n };\n\n const getDateFormat = date => {\n const newDate = new Date(date);\n const day = `0${newDate.getDate()}`.slice(-2);\n const month = `0${newDate.getMonth() + 1}`.slice(-2);\n const year = String(newDate.getYear()).slice(-2);\n return `${day}.${month}.${year}`;\n };\n\n return (\n <>\n {loading && <span>Loading...</span>}\n <div className=\"modal__content modal__content--search\">\n <div className=\"header header--list\">\n <h2>{total} results</h2>\n </div>\n <VirtualList\n width=\"100%\"\n height={window.innerHeight - SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST}\n itemCount={results.length}\n itemSize={SEARCH_RESULTS_ITEM_SIZE}\n overscanCount={SEARCH_RESULTS_OVER_SCAN_BUFFER}\n scrollToIndex={currentIndex}\n onItemsRendered={handleRenderedItems}\n renderItem={({ index, style }) => {\n const { id, docType, updated, name } = results[index];\n const updatedDate = updated ? getDateFormat(updated) : null;\n return (\n <div key={index} style={style} className=\"list__item--resultWrapper\">\n <div className=\"list__item list__item--result\">\n <div className=\"list__item-row list__item-row--result\">\n <span className=\"badge badge--primary\">\n {docType} {updatedDate}\n </span>\n <a\n href={getNavigationRoute({\n id,\n docType\n })}\n onClick={() =>\n navigate({\n id,\n docType\n })\n }\n className=\"list__item-text list__item-text--result\">\n {name}\n </a>\n </div>\n </div>\n </div>\n );\n }}\n />\n </div>\n </>\n );\n};\n\nSearchResults.propTypes = {\n loading: PropTypes.bool.isRequired,\n results: PropTypes.array.isRequired,\n total: PropTypes.number.isRequired,\n setQueryParams: PropTypes.func.isRequired,\n closeModal: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n currentValue: PropTypes.string.isRequired\n};\n\nexport default withRouter(SearchResults);\n"],"mappings":"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"}
@@ -16,7 +16,6 @@ function useSearch({
16
16
  value: ''
17
17
  });
18
18
  const [searchedValue, setSearchedValue] = useState(null);
19
- const [previousEntities, setPreviousEntities] = useState([]);
20
19
  const [previousOffset, setPreviousOffset] = useState(null);
21
20
  const buildSearchQuery = searchQueries[queryKey];
22
21
  const [getSearchResults, {
@@ -52,13 +51,12 @@ function useSearch({
52
51
  } = queryParams;
53
52
  const isNewValueSet = value && value !== searchedValue;
54
53
  const isNewOffsetSet = previousOffset !== null && offset !== previousOffset;
55
- const notSameLength = previousEntities.length !== entities.length;
56
54
  const parsedEntities = entities.length ? entities.map(entity => ({
57
55
  match: {
58
56
  docType: entity
59
57
  }
60
58
  })) : [];
61
- if (isNewValueSet || isNewOffsetSet || notSameLength) {
59
+ if (isNewValueSet || isNewOffsetSet) {
62
60
  getSearchResults({
63
61
  variables: {
64
62
  limit,
@@ -85,9 +83,8 @@ function useSearch({
85
83
  });
86
84
  setSearchedValue(value);
87
85
  setPreviousOffset(offset);
88
- setPreviousEntities(entities);
89
86
  }
90
- }, [queryParams, queryParams.limit, queryParams.value, queryParams.offset, searchedValue, previousOffset, getSearchResults, entities, fields, entities.length, previousEntities.length]);
87
+ }, [queryParams, queryParams.limit, queryParams.value, queryParams.offset, searchedValue, previousOffset, getSearchResults, entities, fields]);
91
88
  return [{
92
89
  searchedValue: queryParams.value,
93
90
  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","previousEntities","setPreviousEntities","previousOffset","setPreviousOffset","buildSearchQuery","getSearchResults","loading","data","search","results","jsonResults","total","ssr","handleQueryParams","newQueryParams","_objectSpread","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 [previousEntities, setPreviousEntities] = useState([]);\n const [previousOffset, setPreviousOffset] = useState(null);\n const buildSearchQuery = searchQueries[queryKey];\n\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 = previousEntities.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 setPreviousEntities(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 previousEntities.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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"}
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","_objectSpread","isNewValueSet","isNewOffsetSet","parsedEntities","length","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 [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 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 }\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,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAC3C,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,OAAOC,aAAa,MAAM,yBAAyB;AAEnD,SAASC,SAASA,CAAC;EAAEC,QAAQ;EAAEC,UAAU;EAAEC,QAAQ,GAAG,EAAE;EAAEC;AAAO,CAAC,EAAE;EAClE,MAAM,CAACC,WAAW,EAAEC,SAAS,CAAC,GAAGV,QAAQ,CAAC;IAAEW,KAAK,EAAE,EAAE;IAAEC,MAAM,EAAE,CAAC;IAAEC,KAAK,EAAE;EAAG,CAAC,CAAC;EAC9E,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGf,QAAQ,CAAC,IAAI,CAAC;EACxD,MAAM,CAACgB,cAAc,EAAEC,iBAAiB,CAAC,GAAGjB,QAAQ,CAAC,IAAI,CAAC;EAC1D,MAAMkB,gBAAgB,GAAGf,aAAa,CAACE,QAAQ,CAAC;EAChD,MAAM,CACJc,gBAAgB,EAChB;IACEC,OAAO;IACPC,IAAI,EAAE;MAAEC,MAAM,EAAE;QAAEC,OAAO;QAAEC,WAAW;QAAEC;MAAM;IAAE,CAAC,GAAG;MAClDH,MAAM,EAAE;QAAEC,OAAO,EAAE,EAAE;QAAEE,KAAK,EAAE;MAAE;IAClC;EACF,CAAC,CACF,GAAGvB,YAAY,CAACgB,gBAAgB,CAAC;IAAEZ;EAAW,CAAC,CAAC,EAAE;IAAEoB,GAAG,EAAE;EAAM,CAAC,CAAC;EAClE;EACA;;EAEA,MAAMC,iBAAiB,GAAGC,cAAc,IAAI;IAC1ClB,SAAS,CAAAmB,aAAA,CAAAA,aAAA,KAAMpB,WAAW,GAAKmB,cAAc,CAAE,CAAC;EAClD,CAAC;EAED3B,SAAS,CACP,MAAM;IACJ,MAAM;MAAEU,KAAK;MAAEC,MAAM;MAAEC;IAAM,CAAC,GAAGJ,WAAW;IAC5C,MAAMqB,aAAa,GAAGjB,KAAK,IAAIA,KAAK,KAAKC,aAAa;IACtD,MAAMiB,cAAc,GAAGf,cAAc,KAAK,IAAI,IAAIJ,MAAM,KAAKI,cAAc;IAC3E,MAAMgB,cAAc,GAAGzB,QAAQ,CAAC0B,MAAM,GAClC1B,QAAQ,CAAC2B,GAAG,CAACC,MAAM,KAAK;MACtBC,KAAK,EAAE;QAAEC,OAAO,EAAEF;MAAO;IAC3B,CAAC,CAAC,CAAC,GACH,EAAE;IAEN,IAAIL,aAAa,IAAIC,cAAc,EAAE;MACnCZ,gBAAgB,CAAC;QACfmB,SAAS,EAAE;UACT3B,KAAK;UACLC,MAAM;UACN2B,QAAQ,EAAE;YACRC,KAAK,EAAE;cACLC,IAAI,EAAE;gBACJC,IAAI,EAAE,CACJ;kBACEC,YAAY,EAAE;oBACZH,KAAK,EAAE3B,KAAK;oBACZL,MAAM;oBACNoC,IAAI,EAAE,aAAa;oBACnBC,gBAAgB,EAAE;kBACpB;gBACF,CAAC,EACD;kBACEJ,IAAI,EAAE;oBACJK,MAAM,EAAEd;kBACV;gBACF,CAAC;cAEL;YACF;UACF;QACF;MACF,CAAC,CAAC;MACFjB,gBAAgB,CAACF,KAAK,CAAC;MACvBI,iBAAiB,CAACL,MAAM,CAAC;IAC3B;EACF,CAAC,EACD,CACEH,WAAW,EACXA,WAAW,CAACE,KAAK,EACjBF,WAAW,CAACI,KAAK,EACjBJ,WAAW,CAACG,MAAM,EAClBE,aAAa,EACbE,cAAc,EACdG,gBAAgB,EAChBZ,QAAQ,EACRC,MAAM,CAEV,CAAC;EAED,OAAO,CACL;IAAEM,aAAa,EAAEL,WAAW,CAACI,KAAK;IAAEO,OAAO;IAAEC,IAAI,EAAE;MAAEE,OAAO,EAAEA,OAAO,IAAIC,WAAW;MAAEC;IAAM;EAAE,CAAC,EAC/FE,iBAAiB,CAClB;AACH;AAEA,eAAevB,SAAS"}
@@ -9,8 +9,6 @@ function useSearchResults({
9
9
  entities,
10
10
  fields
11
11
  }) {
12
- const [currentResults, setCurrentResults] = useState([]);
13
- const [allResults, setAllResults] = useState([]);
14
12
  const [{
15
13
  searchedValue,
16
14
  loading,
@@ -24,12 +22,14 @@ function useSearchResults({
24
22
  entities,
25
23
  fields
26
24
  });
25
+ const [currentResults, setCurrentResults] = useState([]);
26
+ const [allResults, setAllResults] = useState([]);
27
27
  useEffect(() => {
28
28
  if (currentResults.length !== results.length) {
29
29
  setAllResults([...allResults, ...results]);
30
30
  setCurrentResults(results);
31
31
  }
32
- }, [allResults, currentResults, results]);
32
+ }, [allResults, currentResults, currentResults.length, results]);
33
33
  const clearList = params => {
34
34
  setAllResults([]);
35
35
  setParams(_objectSpread(_objectSpread({}, params), {}, {
@@ -1 +1 @@
1
- {"version":3,"file":"useSearchResults.js","names":["useState","useEffect","useSearch","useSearchResults","queryKey","resultKeys","entities","fields","currentResults","setCurrentResults","allResults","setAllResults","searchedValue","loading","data","results","total","setParams","length","clearList","params","_objectSpread","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 [currentResults, setCurrentResults] = useState([]);\n const [allResults, setAllResults] = useState([]);\n const [\n {\n searchedValue,\n loading,\n data: { results, total }\n },\n setParams\n ] = useSearch({ queryKey, resultKeys, entities, fields });\n\n useEffect(\n () => {\n if (currentResults.length !== results.length) {\n setAllResults([...allResults, ...results]);\n setCurrentResults(results);\n }\n },\n [allResults, currentResults, 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 return [{ loading, results: allResults, total }, setQueryParams];\n}\n\nexport default useSearchResults;\n"],"mappings":";;;AAAA,SAASA,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAC3C,OAAOC,SAAS,MAAM,cAAc;AAEpC,SAASC,gBAAgBA,CAAC;EAAEC,QAAQ;EAAEC,UAAU;EAAEC,QAAQ;EAAEC;AAAO,CAAC,EAAE;EACpE,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAGT,QAAQ,CAAC,EAAE,CAAC;EACxD,MAAM,CAACU,UAAU,EAAEC,aAAa,CAAC,GAAGX,QAAQ,CAAC,EAAE,CAAC;EAChD,MAAM,CACJ;IACEY,aAAa;IACbC,OAAO;IACPC,IAAI,EAAE;MAAEC,OAAO;MAAEC;IAAM;EACzB,CAAC,EACDC,SAAS,CACV,GAAGf,SAAS,CAAC;IAAEE,QAAQ;IAAEC,UAAU;IAAEC,QAAQ;IAAEC;EAAO,CAAC,CAAC;EAEzDN,SAAS,CACP,MAAM;IACJ,IAAIO,cAAc,CAACU,MAAM,KAAKH,OAAO,CAACG,MAAM,EAAE;MAC5CP,aAAa,CAAC,CAAC,GAAGD,UAAU,EAAE,GAAGK,OAAO,CAAC,CAAC;MAC1CN,iBAAiB,CAACM,OAAO,CAAC;IAC5B;EACF,CAAC,EACD,CAACL,UAAU,EAAEF,cAAc,EAAEO,OAAO,CACtC,CAAC;EAED,MAAMI,SAAS,GAAGC,MAAM,IAAI;IAC1BT,aAAa,CAAC,EAAE,CAAC;IACjBM,SAAS,CAAAI,aAAA,CAAAA,aAAA,KAAMD,MAAM;MAAEE,MAAM,EAAE;IAAC,EAAE,CAAC;EACrC,CAAC;EAED,MAAMC,cAAc,GAAGH,MAAM,IAAI;IAC/BA,MAAM,CAACI,KAAK,KAAKZ,aAAa,GAAGO,SAAS,CAACC,MAAM,CAAC,GAAGH,SAAS,CAACG,MAAM,CAAC;EACxE,CAAC;EACD,OAAO,CAAC;IAAEP,OAAO;IAAEE,OAAO,EAAEL,UAAU;IAAEM;EAAM,CAAC,EAAEO,cAAc,CAAC;AAClE;AAEA,eAAepB,gBAAgB"}
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","_objectSpread","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,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAC3C,OAAOC,SAAS,MAAM,cAAc;AAEpC,SAASC,gBAAgBA,CAAC;EAAEC,QAAQ;EAAEC,UAAU;EAAEC,QAAQ;EAAEC;AAAO,CAAC,EAAE;EACpE,MAAM,CACJ;IACEC,aAAa;IACbC,OAAO;IACPC,IAAI,EAAE;MAAEC,OAAO;MAAEC;IAAM;EACzB,CAAC,EACDC,SAAS,CACV,GAAGX,SAAS,CAAC;IAAEE,QAAQ;IAAEC,UAAU;IAAEC,QAAQ;IAAEC;EAAO,CAAC,CAAC;EACzD,MAAM,CAACO,cAAc,EAAEC,iBAAiB,CAAC,GAAGf,QAAQ,CAAC,EAAE,CAAC;EACxD,MAAM,CAACgB,UAAU,EAAEC,aAAa,CAAC,GAAGjB,QAAQ,CAAC,EAAE,CAAC;EAEhDC,SAAS,CACP,MAAM;IACJ,IAAIa,cAAc,CAACI,MAAM,KAAKP,OAAO,CAACO,MAAM,EAAE;MAC5CD,aAAa,CAAC,CAAC,GAAGD,UAAU,EAAE,GAAGL,OAAO,CAAC,CAAC;MAC1CI,iBAAiB,CAACJ,OAAO,CAAC;IAC5B;EACF,CAAC,EACD,CAACK,UAAU,EAAEF,cAAc,EAAEA,cAAc,CAACI,MAAM,EAAEP,OAAO,CAC7D,CAAC;EAED,MAAMQ,SAAS,GAAGC,MAAM,IAAI;IAC1BH,aAAa,CAAC,EAAE,CAAC;IACjBJ,SAAS,CAAAQ,aAAA,CAAAA,aAAA,KAAMD,MAAM;MAAEE,MAAM,EAAE;IAAC,EAAE,CAAC;EACrC,CAAC;EAED,MAAMC,cAAc,GAAGH,MAAM,IAAI;IAC/BA,MAAM,CAACI,KAAK,KAAKhB,aAAa,GAAGW,SAAS,CAACC,MAAM,CAAC,GAAGP,SAAS,CAACO,MAAM,CAAC;EACxE,CAAC;EAED,OAAO,CAAC;IAAEX,OAAO;IAAEE,OAAO,EAAEK,UAAU;IAAEJ;EAAM,CAAC,EAAEW,cAAc,CAAC;AAClE;AAEA,eAAepB,gBAAgB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/plugin-search-ui",
3
- "version": "0.130.0-admin-updates.0",
3
+ "version": "0.130.0-structured-data.1",
4
4
  "description": "Blaze plugin search ui",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -27,9 +27,9 @@
27
27
  },
28
28
  "license": "GPL-3.0",
29
29
  "dependencies": {
30
- "@blaze-cms/admin-ui-utils": "0.130.0-admin-updates.0",
31
- "@blaze-cms/core-errors": "0.130.0-admin-updates.0",
32
- "@blaze-cms/setup-ui": "0.130.0-admin-updates.0",
30
+ "@blaze-cms/admin-ui-utils": "0.130.0-structured-data.1",
31
+ "@blaze-cms/core-errors": "^0.127.0",
32
+ "@blaze-cms/setup-ui": "^0.128.1",
33
33
  "@blaze-react/button": "0.5.19",
34
34
  "@blaze-react/input": "0.5.30",
35
35
  "@blaze-react/utils": "0.5.15",
@@ -40,7 +40,7 @@
40
40
  "react-tiny-virtual-list": "2.2.0"
41
41
  },
42
42
  "devDependencies": {
43
- "@blaze-cms/core-ui": "0.130.0-admin-updates.0"
43
+ "@blaze-cms/core-ui": "^0.129.0"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "@apollo/client": "3.x",
@@ -52,5 +52,5 @@
52
52
  "lib/*",
53
53
  "lib-es/*"
54
54
  ],
55
- "gitHead": "8a7ba4ac0daaa44b8273afc4c23c2ac4f0788ca0"
55
+ "gitHead": "5bcabdb8c1a078ac71e2b901975939fb6510943c"
56
56
  }
@@ -1,28 +1,21 @@
1
1
  import React, { useState, useRef, useEffect } from 'react';
2
2
  import classnames from 'classnames';
3
- import { useDebounce } from '@blaze-react/utils/lib/customHooks';
4
3
  import useLocalStorage from '../useLocalStorage';
5
4
  import SearchBar from './SearchBar';
6
5
  import RecentSearches from './RecentSearches';
7
6
  import SearchResults from './SearchResults';
8
7
  import TriggerModal from './TriggerModal';
9
- import SearchAdminSideBar from './SearchAdminSideBar';
10
8
  import useSearchResults from '../useSearchResults';
11
9
  import { SEARCH_ADMIN } from '../../constants';
12
10
 
13
11
  const SearchAdmin = () => {
14
12
  const [searchTerm, setSearchTerm] = useState('');
15
- const [openSearchSideBar, setOpenSearchSideBar] = useState(true);
16
- const [entityValues, setEntityValues] = useState([]);
17
-
18
13
  const [recentSearches, setRecentSearches] = useLocalStorage('recentSearches', []);
19
14
  const [displaySearchModalFrame, setDisplaySearchModalFrame] = useState(false);
20
15
  const [enableResults, setEnableResults] = useState(true);
21
16
  const searchInputRef = useRef(null);
22
- const debouncedEntityValues = useDebounce(entityValues, 500);
23
17
  const [{ loading, results, total }, setQueryParams] = useSearchResults({
24
- queryKey: SEARCH_ADMIN,
25
- entities: debouncedEntityValues.map(e => e.id)
18
+ queryKey: SEARCH_ADMIN
26
19
  });
27
20
 
28
21
  useEffect(
@@ -37,13 +30,11 @@ const SearchAdmin = () => {
37
30
  const handleSearchTerm = ({ target: { value } }) => {
38
31
  setSearchTerm(value);
39
32
  };
40
-
41
33
  const toggleSearchModal = () => {
42
34
  setSearchTerm(null);
43
35
  setEnableResults(false);
44
36
  setDisplaySearchModalFrame(!displaySearchModalFrame);
45
37
  };
46
-
47
38
  const search = ({ value }) => {
48
39
  if (!value) return;
49
40
  !enableResults && setEnableResults(true);
@@ -77,69 +68,58 @@ const SearchAdmin = () => {
77
68
  'modal--show': displaySearchModalFrame
78
69
  });
79
70
 
80
- const searchModalSideBarClassName = classnames('modal__search__sidebar', {
81
- 'modal__search__sidebar--close': !openSearchSideBar
82
- });
83
-
84
71
  const isEmptySearchTermAndData = !searchTerm && !results.length;
85
72
  const isEmptySearchTermnAndDisabledResults = !searchTerm && !enableResults;
86
73
  const shouldDisplayRecentSearches =
87
74
  isEmptySearchTermAndData || isEmptySearchTermnAndDisabledResults;
88
75
 
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
- };
76
+ const showResults = enableResults && results.length;
97
77
 
98
78
  return (
99
79
  <div className="search search--header">
100
80
  <TriggerModal toggleSearchModal={toggleSearchModal} />
101
81
  <div className={searchModalResultsClassName}>
102
82
  {displaySearchModalFrame && (
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
- {enableResults && (
131
- <SearchResults
132
- currentValue={searchTerm}
133
- searchTerm={searchTerm}
134
- loading={loading}
135
- results={results}
136
- total={total}
137
- setQueryParams={setQueryParams}
138
- closeModal={toggleSearchModal}
139
- />
140
- )}
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
+ />
141
93
  </div>
142
- </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>
106
+ </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
+ </>
143
123
  )}
144
124
  </div>
145
125
  </div>