Search.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { useState } from "react";
  2. import { Link } from "react-router-dom";
  3. import { connect } from "react-redux";
  4. import { actionSearch } from "store/actions/actionSearch";
  5. import "./Main.css";
  6. const Search = ({ onSearch, snippets }) => {
  7. const [request, setRequest] = useState("");
  8. return (
  9. <>
  10. <Link to='/work'>
  11. <div className='btn_block_back'>
  12. <button className='btn_search'>Back to Work Page</button>
  13. </div>
  14. </Link>
  15. <br />
  16. <br />
  17. <div>
  18. <input
  19. className='field_for_search'
  20. value={request}
  21. onChange={e => setRequest(e.target.value)}
  22. type='search'
  23. placeholder='Type name or description'
  24. aria-label='Search'
  25. />
  26. <br />
  27. <div className='btn_block_search'>
  28. <button className='btn_search' onClick={() => onSearch(request)}>
  29. Search
  30. </button>
  31. </div>
  32. </div>
  33. <div className='snippet_block'>
  34. {snippets?.map((key, index) => (
  35. <div key={key} className='snippet'>
  36. <img src={`${process.env.PUBLIC_URL}/img/code.png`} alt='code'></img>
  37. <div className='block_content'>
  38. <p>{`Name: ${snippets?.[index]?.title}` || "Project without name"}</p>
  39. <p>{`Description: ${snippets?.[index]?.description}` || ""}</p>
  40. <p>{`Owner: ${snippets?.[index]?.owner?.login}`}</p>
  41. <div className='btn_center'>
  42. <Link to={"/project/" + snippets?.[index]?._id}>
  43. <button className='btn_search'>Open project</button>
  44. </Link>
  45. </div>
  46. </div>
  47. </div>
  48. ))}
  49. </div>
  50. </>
  51. );
  52. };
  53. const ConnectFormSearch = connect(
  54. state => ({
  55. snippets: state?.p?.searchSnippet?.payload?.data?.SnippetFind,
  56. }),
  57. { onSearch: actionSearch },
  58. )(Search);
  59. export default ConnectFormSearch;