TableNav.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import styled, { css } from 'styled-components';
  4. const Wrapper = styled.div`
  5. display: flex;
  6. align-items: center;
  7. `;
  8. const Nav = styled.button`
  9. margin-left: 12px;
  10. padding: 5px 8px 3px;
  11. border-radius: 4px;
  12. border: 1px solid #eee;
  13. background-color: transparent;
  14. box-shadow: 0 0px 10px rgba(100, 100, 100, 0.1);
  15. transition: all 0.2s ease-out;
  16. ${({ disabled }) =>
  17. !disabled &&
  18. css`
  19. background-color: white;
  20. cursor: pointer;
  21. `};
  22. :hover {
  23. ${({ disabled }) =>
  24. !disabled &&
  25. css`
  26. transform: translateY(-2px);
  27. box-shadow: 0 5px 25px rgba(50, 50, 50, 0.1);
  28. `};
  29. }
  30. @media only screen and (max-width: 768px) {
  31. padding: 4px 6px 2px;
  32. }
  33. `;
  34. const Icon = styled.img`
  35. width: 14px;
  36. height: 14px;
  37. @media only screen and (max-width: 768px) {
  38. width: 12px;
  39. height: 12px;
  40. }
  41. `;
  42. const TableNav = ({ handleNav, next, prev }) => (
  43. <Wrapper>
  44. <Nav disabled={!prev} onClick={handleNav(-1)}>
  45. <Icon src="/images/nav-left.svg" />
  46. </Nav>
  47. <Nav disabled={!next} onClick={handleNav(1)}>
  48. <Icon src="/images/nav-right.svg" />
  49. </Nav>
  50. </Wrapper>
  51. );
  52. TableNav.propTypes = {
  53. handleNav: PropTypes.func.isRequired,
  54. next: PropTypes.bool.isRequired,
  55. prev: PropTypes.bool.isRequired,
  56. };
  57. export default TableNav;