UNPKG

fk-react-ui-components

Version:

Step 1 : Create a file in [ Seeds / Plants / Trees ] <br> Step 2 : It should export an Object with component name and story Component [Refer other components] <br> Step 3 : Story Component should return a react component <br> Step 3 : Created file should

80 lines 3.27 kB
/** * Created by manoraj.k on 17/08/17. */ import React from "react"; import ReactDOM from 'react-dom'; import styled from "styled-components"; import { SearchInput } from "../Fields"; import { colors } from "../colorCodes"; import { SimpleSearchIcon } from "./styles/SimpleSearch"; import _ from "lodash"; export default class SimpleSearch extends React.Component { constructor(props) { super(props); this.state = { value: "", showUndo: false }; this.initialValue = props.value; _.bindAll(this, 'searchOnClick', 'onChange', 'getUndoState', 'undoSearch'); } componentWillMount() { if (this.props.value) { this.setState({ value: this.props.value }); } } componentWillReceiveProps(nextProps) { if (this.props.value !== nextProps.value) { this.initialValue = nextProps.value; this.setState({ value: nextProps.value }); } } _handleKeyPress(e) { let value = e.target.value; if (e.key === 'Enter' && value !== this.initialValue) { this.props.onSearchEnter && this.props.onSearchEnter(e.target.value); } } searchOnClick(event) { event.preventDefault(); let searchText = ReactDOM.findDOMNode(this.searchInput).value; this.props.onSearchEnter && this.props.onSearchEnter(searchText); } onChange(e) { this.setState({ value: e.target.value }); this.props.onChange && this.props.onChange(e.target.value); } getUndoState(value) { if (!this.props.showUndo) { return false; } if (value && this.initialValue == value || !value && this.initialValue !== value) { return true; } return false; } undoSearch() { this.initialValue = ""; this.setState({ value: "" }); this.props.onSearchEnter && this.props.onSearchEnter(""); } render() { return React.createElement( "div", { style: { "position": "relative" }, className: this.props.className || "" }, React.createElement(SearchInput, { width: this.props.width, height: this.props.height, padding: this.props.padding, className: `simple-search-input ${this.props.showActive && this.state.value ? "active" : ""}`, boxShadow: this.props.boxShadow || undefined, border: this.props.border || undefined, ref: input => { this.searchInput = input; }, backgroundColor: this.props.backgroundColor || undefined, value: this.state.value, type: "text", onChange: this.onChange, placeholder: this.props.placeholder, onKeyPress: this._handleKeyPress.bind(this) }), !this.getUndoState(this.state.value) && React.createElement(SimpleSearchIcon, { className: `fa fa-search ${this.state.value ? 'active-icon-color' : 'inprogress-icon-color'}`, onClick: this.searchOnClick }), this.getUndoState(this.state.value) && React.createElement(SimpleSearchIcon, { className: "fa fa-undo active-icon-color", onClick: this.undoSearch }) ); } } //# sourceMappingURL=index.js.map