Detail.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import Title from "components/Title";
  2. import { useParams } from "react-router-dom";
  3. import styles from "styles/Detail.module.scss";
  4. import { useQuery } from "@apollo/client";
  5. import { GOOD_FIND_ONE } from "apollo/queries";
  6. import _ from 'lodash';
  7. import {IMAGES_URL} from '../config';
  8. const Detail = () => {
  9. const {_id} = useParams();
  10. const {data} = useQuery(GOOD_FIND_ONE, {variables: {query: `[{"_id" : "${_id}"}]`}});
  11. const product = _.get(data,'GoodFindOne', null);
  12. return (
  13. <section className={styles.detail}>
  14. {!product ? (
  15. <div style={{ width: "100%", display: "flex", justifyContent: "center" }}>
  16. <Title txt="Loading..." size={25} transform="uppercase" />
  17. </div>
  18. ) : (
  19. <div className={styles.content}>
  20. <div className={styles.top}>
  21. { !_.isEmpty(product.images) ?
  22. <div className={styles.img}>
  23. <img src={IMAGES_URL + product.images[0].url } alt="" />
  24. </div>
  25. : null}
  26. <div className={styles.info}>
  27. <div className={styles.title}>
  28. <Title txt={product.name} transform="uppercase" size={20} />
  29. </div>
  30. {product.price ?
  31. (<div className={styles.price}>
  32. <p>
  33. {product.price.toFixed(2)} <small>UAH</small>
  34. </p>
  35. </div>)
  36. : null }
  37. </div>
  38. </div>
  39. <div className={styles.bottom}>
  40. <Title txt="Description" size={20} transform="capitalize" />
  41. <p className={styles.desc}>{product.description}</p>
  42. </div>
  43. </div>
  44. )}
  45. </section>
  46. );
  47. };
  48. export default Detail;