From 47d519927a66c9e8e39b81f6f0f22f992648cdee Mon Sep 17 00:00:00 2001
From: hmhealey <harrisonmhealey@gmail.com>
Date: Thu, 22 Oct 2015 12:15:21 -0400
Subject: Added help popover to search box

---
 web/react/components/search_bar.jsx | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

(limited to 'web/react/components/search_bar.jsx')

diff --git a/web/react/components/search_bar.jsx b/web/react/components/search_bar.jsx
index 2e9764bd9..bf12ca160 100644
--- a/web/react/components/search_bar.jsx
+++ b/web/react/components/search_bar.jsx
@@ -8,6 +8,7 @@ var AppDispatcher = require('../dispatcher/app_dispatcher.jsx');
 var utils = require('../utils/utils.jsx');
 var Constants = require('../utils/constants.jsx');
 var ActionTypes = Constants.ActionTypes;
+var Tooltip = ReactBootstrap.Tooltip;
 
 export default class SearchBar extends React.Component {
     constructor() {
@@ -16,10 +17,14 @@ export default class SearchBar extends React.Component {
 
         this.onListenerChange = this.onListenerChange.bind(this);
         this.handleUserInput = this.handleUserInput.bind(this);
+        this.handleUserFocus = this.handleUserFocus.bind(this);
+        this.handleUserBlur = this.handleUserBlur.bind(this);
         this.performSearch = this.performSearch.bind(this);
         this.handleSubmit = this.handleSubmit.bind(this);
 
-        this.state = this.getSearchTermStateFromStores();
+        const state = this.getSearchTermStateFromStores();
+        state.focused = false;
+        this.state = state;
     }
     getSearchTermStateFromStores() {
         var term = PostStore.getSearchTerm() || '';
@@ -78,9 +83,14 @@ export default class SearchBar extends React.Component {
     handleMouseInput(e) {
         e.preventDefault();
     }
+    handleUserBlur() {
+        this.setState({focused: false});
+    }
     handleUserFocus(e) {
         e.target.select();
         $('.search-bar__container').addClass('focused');
+
+        this.setState({focused: true});
     }
     performSearch(terms, isMentionSearch) {
         if (terms.length) {
@@ -115,6 +125,12 @@ export default class SearchBar extends React.Component {
         if (this.state.isSearching) {
             isSearching = <span className={'glyphicon glyphicon-refresh glyphicon-refresh-animate'}></span>;
         }
+
+        let helpClass = 'search-help-popover';
+        if (!this.state.searchTerm && this.state.focused) {
+            helpClass += ' visible';
+        }
+
         return (
             <div>
                 <div
@@ -142,10 +158,25 @@ export default class SearchBar extends React.Component {
                         placeholder='Search'
                         value={this.state.searchTerm}
                         onFocus={this.handleUserFocus}
+                        onBlur={this.handleUserBlur}
                         onChange={this.handleUserInput}
                         onMouseUp={this.handleMouseInput}
                     />
                     {isSearching}
+                    <Tooltip
+                        placement='bottom'
+                        className={helpClass}
+                    >
+                        <h4>{'Search Options'}</h4>
+                        <ul>
+                            <li>
+                                <span>{'Use '}</span><b>{'"quotation marks"'}</b><span>{' to search for phrases'}</span>
+                            </li>
+                            <li>
+                                <span>{'Use '}</span><b>{'from:'}</b><span>{' to find posts from specific users and '}</span><b>{'in:'}</b><span>{' to find posts in specific channels'}</span>
+                            </li>
+                        </ul>
+                    </Tooltip>
                 </form>
             </div>
         );
-- 
cgit v1.2.3-1-g7c22

