HeaderSearch.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import React, { Component } from 'react';
  2. import PropTypes from 'prop-types';
  3. class HeaderSearch extends Component {
  4. componentDidMount() {
  5. document.addEventListener('keydown', this.closeNavSearchKey);
  6. }
  7. componentWillUnmount() {
  8. document.removeEventListener('keydown', this.closeNavSearchKey);
  9. }
  10. setInputSearch = isOpen => input => {
  11. if (input) input[isOpen ? 'focus' : 'blur']();
  12. };
  13. closeNavSearchKey = e => {
  14. if (e.keyCode === 27) this.props.onClose(e);
  15. };
  16. render() {
  17. const { isOpen, onClose } = this.props;
  18. return (
  19. <form
  20. className={'navbar-form ' + (isOpen ? 'open' : '')}
  21. role="search"
  22. action="search.html"
  23. >
  24. <div className="form-group">
  25. <input
  26. ref={this.setInputSearch(isOpen)}
  27. className="form-control"
  28. type="text"
  29. placeholder="Type and hit enter ..."
  30. />
  31. <div className="fa fa-times navbar-form-close" onClick={onClose} />
  32. </div>
  33. <button className="d-none" type="submit">
  34. Submit
  35. </button>
  36. </form>
  37. );
  38. }
  39. }
  40. HeaderSearch.propTypes = {
  41. isOpen: PropTypes.bool,
  42. onClose: PropTypes.func
  43. };
  44. export default HeaderSearch;