// @flow import * as React from 'react'; import keydown from 'react-keydown'; import { observer } from 'mobx-react'; import { observable } from 'mobx'; import { withRouter, type RouterHistory } from 'react-router-dom'; import styled, { withTheme } from 'styled-components'; import { SearchIcon } from 'outline-icons'; import { searchUrl } from 'utils/routeHelpers'; import Input from './Input'; type Props = { history: RouterHistory, theme: Object, placeholder?: string, collectionId?: string, }; @observer class InputSearch extends React.Component { input: ?Input; @observable focused: boolean = false; @keydown('meta+f') focus(ev) { ev.preventDefault(); if (this.input) { this.input.focus(); } } handleSearchInput = ev => { ev.preventDefault(); this.props.history.push( searchUrl(ev.target.value, this.props.collectionId) ); }; handleFocus = () => { this.focused = true; }; handleBlur = () => { this.focused = false; }; render() { const { theme, placeholder = 'Search…' } = this.props; return ( (this.input = ref)} type="search" placeholder={placeholder} onInput={this.handleSearchInput} icon={ } onFocus={this.handleFocus} onBlur={this.handleBlur} margin={0} /> ); } } const InputMaxWidth = styled(Input)` max-width: 30vw; `; export default withTheme(withRouter(InputSearch));