From a11e669b8a1f11225ca2f20cb860cf97dc9f690c Mon Sep 17 00:00:00 2001 From: Bouncey Date: Thu, 28 Feb 2019 15:49:23 +0000 Subject: [PATCH] feat: Port search from 'search-assets' --- client/src/components/layouts/Default.js | 62 +- .../components/search/WithInstantSearch.js | 82 ++ client/src/components/search/redux/index.js | 59 ++ .../components/search/searchBar/SearchBar.js | 107 +++ .../components/search/searchBar/SearchHits.js | 48 ++ .../search/searchBar/SearchSuggestion.js | 25 + .../components/search/searchBar/searchbar.css | 722 ++++++++++++++++++ .../search/searchPage/EmptySearch.js | 11 + .../components/search/searchPage/NoResults.js | 21 + .../search/searchPage/SearchPageHits.js | 84 ++ .../search/searchPage/empty-search.css | 6 + .../search/searchPage/no-results.css | 6 + .../search/searchPage/search-page-hits.css | 40 + client/src/pages/search.js | 22 + client/src/redux/rootReducer.js | 14 + 15 files changed, 1279 insertions(+), 30 deletions(-) create mode 100644 client/src/components/search/WithInstantSearch.js create mode 100644 client/src/components/search/redux/index.js create mode 100644 client/src/components/search/searchBar/SearchBar.js create mode 100644 client/src/components/search/searchBar/SearchHits.js create mode 100644 client/src/components/search/searchBar/SearchSuggestion.js create mode 100644 client/src/components/search/searchBar/searchbar.css create mode 100644 client/src/components/search/searchPage/EmptySearch.js create mode 100644 client/src/components/search/searchPage/NoResults.js create mode 100644 client/src/components/search/searchPage/SearchPageHits.js create mode 100644 client/src/components/search/searchPage/empty-search.css create mode 100644 client/src/components/search/searchPage/no-results.css create mode 100644 client/src/components/search/searchPage/search-page-hits.css create mode 100644 client/src/pages/search.js diff --git a/client/src/components/layouts/Default.js b/client/src/components/layouts/Default.js index a4ecd920b2..84ac3d5f52 100644 --- a/client/src/components/layouts/Default.js +++ b/client/src/components/layouts/Default.js @@ -17,6 +17,7 @@ import { flashMessagesSelector, removeFlashMessage } from '../Flash/redux'; import { isBrowser } from '../../../utils'; +import WithInstantSearch from '../search/WithInstantSearch'; import OfflineWarning from '../OfflineWarning'; import Flash from '../Flash'; import Header from '../Header'; @@ -70,6 +71,7 @@ const propTypes = { landingPage: PropTypes.bool, navigationMenu: PropTypes.element, onlineStatusChange: PropTypes.func.isRequired, + pathname: PropTypes.string.isRequired, removeFlashMessage: PropTypes.func.isRequired, showFooter: PropTypes.bool }; @@ -92,30 +94,22 @@ const mapDispatchToProps = dispatch => ); class DefaultLayout extends Component { - constructor(props) { - super(props); - - this.location = ''; - } - componentDidMount() { - if (!this.props.isSignedIn) { - this.props.fetchUser(); + const { isSignedIn, fetchUser, pathname } = this.props; + if (!isSignedIn) { + fetchUser(); } - const url = window.location.pathname + window.location.search; - ga.pageview(url); + ga.pageview(pathname); window.addEventListener('online', this.updateOnlineStatus); window.addEventListener('offline', this.updateOnlineStatus); - - this.location = url; } - componentDidUpdate() { - const url = window.location.pathname + window.location.search; - if (url !== this.location) { - ga.pageview(url); - this.location = url; + componentDidUpdate(prevProps) { + const { pathname } = this.props; + const { pathname: prevPathname } = prevProps; + if (pathname !== prevPathname) { + ga.pageview(pathname); } } @@ -136,12 +130,13 @@ class DefaultLayout extends Component { children, hasMessages, flashMessages = [], - removeFlashMessage, - landingPage, - showFooter = true, - navigationMenu, isOnline, - isSignedIn + isSignedIn, + landingPage, + navigationMenu, + pathname, + removeFlashMessage, + showFooter = true } = this.props; return ( @@ -158,14 +153,21 @@ class DefaultLayout extends Component { > -
-
- - {hasMessages ? ( - - ) : null} - {children} -
+ +
+
+ + {hasMessages ? ( + + ) : null} + {children} +
+ {showFooter &&