From 6fde4e2ec5411df5b7705ff3b05d77ef6d9bee96 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Sat, 5 Oct 2019 20:06:48 -0700 Subject: [PATCH] feat: Add new doc button when search results are empty closes #1022 --- app/scenes/Search/Search.js | 57 ++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/app/scenes/Search/Search.js b/app/scenes/Search/Search.js index 55113aa0e..776a65313 100644 --- a/app/scenes/Search/Search.js +++ b/app/scenes/Search/Search.js @@ -5,6 +5,7 @@ import keydown from 'react-keydown'; import Waypoint from 'react-waypoint'; import { withRouter, Link } from 'react-router-dom'; import type { Location, RouterHistory } from 'react-router-dom'; +import { PlusIcon } from 'outline-icons'; import { observable, action } from 'mobx'; import { observer, inject } from 'mobx-react'; import { debounce } from 'lodash'; @@ -15,16 +16,18 @@ import ArrowKeyNavigation from 'boundless-arrow-key-navigation'; import { DEFAULT_PAGINATION_LIMIT } from 'stores/BaseStore'; import DocumentsStore from 'stores/DocumentsStore'; import UsersStore from 'stores/UsersStore'; -import { searchUrl } from 'utils/routeHelpers'; +import { newDocumentUrl, searchUrl } from 'utils/routeHelpers'; import { meta } from 'utils/keyboard'; import Flex from 'shared/components/Flex'; +import Button from 'components/Button'; import Empty from 'components/Empty'; import Fade from 'components/Fade'; import HelpText from 'components/HelpText'; import CenteredContent from 'components/CenteredContent'; import LoadingIndicator from 'components/LoadingIndicator'; import DocumentPreview from 'components/DocumentPreview'; +import NewDocumentMenu from 'menus/NewDocumentMenu'; import PageTitle from 'components/PageTitle'; import SearchField from './components/SearchField'; import StatusFilter from './components/StatusFilter'; @@ -124,6 +127,10 @@ class Search extends React.Component { }); }; + handleNewDoc = () => { + this.props.history.push(newDocumentUrl(this.collectionId)); + }; + get includeArchived() { return this.params.get('includeArchived') === 'true'; } @@ -269,16 +276,32 @@ class Search extends React.Component { )} {showEmpty && ( - - No results found for search.{' '} - {this.isFiltered && ( - -   - Clear Filters - . - - )} - + + + + + No documents found for your search filters.
Create a + new document? +
+ + {this.collectionId ? ( + + ) : ( + + )}   + + +
+
+
)} { } } +const Wrapper = styled(Flex)` + justify-content: center; + margin: 10px 0; +`; + +const Centered = styled(Flex)` + text-align: center; + margin: 30vh auto 0; + max-width: 380px; + transform: translateY(-50%); +`; + const Container = styled(CenteredContent)` > div { position: relative;