You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

138 line
6.2 KiB

  1. import React from 'react'
  2. import Link from 'next/link'
  3. import * as Icon from 'react-feather'
  4. import { useSelector } from 'react-redux'
  5. import AddToCartBtn from '@/components/others/Shop/AddToCartBtn'
  6. import NumberFormat from 'react-number-format';
  7. import Select from 'react-select';
  8. import Router from 'next/router'
  9. const ProductCard = function ({ selected, product, backend, user, ...props }) {
  10. const products = useSelector((state) => state.products)
  11. const handleName = values => {
  12. Router.push({
  13. pathname: '/yamaha/Product/Motor',
  14. query: (values&&values.length!=0)?{ filter: values["name"] }:{},
  15. })
  16. }
  17. const Product = product.map((data) => {
  18. return (
  19. <div className="col-lg-3 col-md-6 col-sm-6" key={product.id}>
  20. <div className="single-products">
  21. <div className="products-image">
  22. <img src={`/api/util?img=${encodeURIComponent(data.attributes.Image.data[0].attributes.url)}`}
  23. />
  24. <ul>
  25. <li>
  26. <a >
  27. <Icon.Search />
  28. </a>
  29. </li>
  30. <li>
  31. <a >
  32. <Icon.Heart />
  33. </a>
  34. </li>
  35. <li>
  36. <Link href="/products/[id]" as={`/products/${data.id}`}>
  37. <a>
  38. <Icon.Link />
  39. </a>
  40. </Link>
  41. </li>
  42. </ul>
  43. </div>
  44. <div className="products-content">
  45. <h3>
  46. <Link href={"/yamaha/Product/Motor_Detail?s=" + data.id}>
  47. <a>{data.attributes.Name}</a>
  48. </Link>
  49. </h3>
  50. {
  51. (data.attributes.Product_prices.data.length==0)
  52. ?"-"
  53. :(data.attributes.Product_prices.data.length==1)
  54. ?(<span><NumberFormat value={Math.min.apply(null, data.attributes.Product_prices.data.map((i)=>i.attributes.Price))} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>)
  55. :(
  56. <span>
  57. <NumberFormat value={Math.min.apply(null, data.attributes.Product_prices.data.map((i)=>i.attributes.Price))} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  58. {" s/d "}
  59. <NumberFormat value={Math.max.apply(null, data.attributes.Product_prices.data.map((i)=>i.attributes.Price))} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  60. </span>
  61. )
  62. }
  63. {/* <ul>
  64. <li><i className="flaticon-star-1"></i></li>
  65. <li><i className="flaticon-star-1"></i></li>
  66. <li><i className="flaticon-star-1"></i></li>
  67. <li><i className="flaticon-star-1"></i></li>
  68. <li><i className="flaticon-star-1"></i></li>
  69. </ul> */}
  70. <Link href={"/yamaha/Product/Motor_Detail?s=" + data.id}>
  71. <a className="add-to-cart-btn">Detail Product</a>
  72. </Link>
  73. </div>
  74. </div>
  75. </div>
  76. );
  77. })
  78. return (
  79. <div className="shop-area ptb-80">
  80. <div className="container">
  81. <div className="woocommerce-topbar">
  82. <div className="row align-items-center">
  83. <div className="col-lg-7 col-md-7 col-sm-7">
  84. <div className="woocommerce-result-count">
  85. <p>Showing 1-8 of 14 results</p>
  86. </div>
  87. </div>
  88. <div className="col-lg-5 col-md-5 col-sm-5">
  89. <Select
  90. value={(selected) ? product.filter((i) => i.id == selected) : null}
  91. getOptionLabel={option => `${option.name}`}
  92. getOptionValue={option => option.id}
  93. options={product}
  94. isClearable="true"
  95. instanceId="name"
  96. placeholder="Cari Produk"
  97. onChange={values => handleName(values)}
  98. />
  99. </div>
  100. </div>
  101. </div>
  102. <div className="row justify-content-md">
  103. {Product}
  104. {/* Pagination */}
  105. <div className="col-lg-12 col-md-12 col-sm-12">
  106. <div className="pagination-area">
  107. <nav aria-label="Page navigation">
  108. <ul className="pagination justify-content-center">
  109. <li className="page-item"><a className="page-link" >Prev</a></li>
  110. <li className="page-item active"><a className="page-link" >1</a></li>
  111. <li className="page-item"><a className="page-link" >2</a></li>
  112. <li className="page-item"><a className="page-link" >3</a></li>
  113. <li className="page-item"><a className="page-link" >Next</a></li>
  114. </ul>
  115. </nav>
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. </div>
  121. )
  122. }
  123. export default ProductCard;