summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-01-31 16:21:33 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-01-31 16:21:33 +0700
commit49198fed8da2ab476bebc2233907063b02de0d66 (patch)
tree2905633d247d3be2a9b2db2a05895bd71076bd47 /src
parent2cc01b5fec98eb4d02f3d695b783223664acb2ed (diff)
Product slider categories home page
Diffstat (limited to 'src')
-rw-r--r--src/components/layouts/Header.js2
-rw-r--r--src/components/products/ProductSlider.js15
-rw-r--r--src/pages/index.js22
3 files changed, 32 insertions, 7 deletions
diff --git a/src/components/layouts/Header.js b/src/components/layouts/Header.js
index bc740810..5df75c3c 100644
--- a/src/components/layouts/Header.js
+++ b/src/components/layouts/Header.js
@@ -31,7 +31,7 @@ const menus = [
export default function Header({ title }) {
const router = useRouter();
const { q = '' } = router.query;
- const [searchQuery, setSearchQuery] = useState(q);
+ const [searchQuery, setSearchQuery] = useState(q != '*' ? q : '');
const [suggestions, setSuggestions] = useState([]);
const searchQueryRef = useRef();
const [isMenuActive, setIsMenuActive] = useState(false);
diff --git a/src/components/products/ProductSlider.js b/src/components/products/ProductSlider.js
index ddc505c7..cf663995 100644
--- a/src/components/products/ProductSlider.js
+++ b/src/components/products/ProductSlider.js
@@ -2,11 +2,24 @@ import { Swiper, SwiperSlide } from "swiper/react";
import ProductCard from "./ProductCard";
import ImagePlaceholderIcon from "../../icons/image-placeholder.svg";
import "swiper/css";
+import Image from "../elements/Image";
+import Link from "../elements/Link";
-export default function ProductSlider({ products }) {
+export default function ProductSlider({
+ products,
+ bannerMode = false
+}) {
return (
<>
+ { bannerMode && (
+ <Image src={products.image} alt={products.name} className="absolute top-0 left-0 h-full max-w-[55%]" />
+ ) }
<Swiper freeMode={true} slidesPerView={2.2} spaceBetween={8}>
+ { bannerMode && (
+ <SwiperSlide>
+ <Link href={`/shop/search?category=${products.name}`} className="w-full h-full block"></Link>
+ </SwiperSlide>
+ ) }
{products?.products?.map((product, index) => (
<SwiperSlide key={index}>
<ProductCard data={product} />
diff --git a/src/pages/index.js b/src/pages/index.js
index 35175dce..8c636616 100644
--- a/src/pages/index.js
+++ b/src/pages/index.js
@@ -27,6 +27,7 @@ export default function Home({ heroBanners }) {
const [manufactures, setManufactures] = useState(null);
const [readyStockProducts, setReadyStockProducts] = useState(null);
const [popularProducts, setPopularProducts] = useState(null);
+ const [categoryProducts, setCategoryProducts] = useState(null);
useEffect(() => {
const getManufactures = async () => {
@@ -46,6 +47,12 @@ export default function Home({ heroBanners }) {
setPopularProducts(dataPopularProducts.data.response);
}
getPopularProducts();
+
+ const getCategoryProducts = async () => {
+ const dataCategoryProducts = await apiOdoo('GET', '/api/v1/categories_homepage');
+ setCategoryProducts(dataCategoryProducts);
+ }
+ getCategoryProducts();
}, []);
return (
@@ -77,14 +84,19 @@ export default function Home({ heroBanners }) {
}
</Swiper>
</div>
- <div className="mt-6 px-4 mb-6">
+ <div className="my-6 px-4">
<h2 className="mb-3">Produk Populer</h2>
<ProductSlider products={popularProducts} />
</div>
- <div className="mt-6 px-4 mb-6">
- <h2 className="mb-3">Produk Ready Stock</h2>
- <ProductSlider products={readyStockProducts} />
- </div>
+
+ { categoryProducts?.map((categoryProduct) => (
+ <div className="my-6 px-4 py-3 relative" key={categoryProduct.id}>
+ <ProductSlider
+ products={categoryProduct}
+ bannerMode={true}
+ />
+ </div>
+ )) }
<div className="px-4">
<h5 className="h2 mb-2">Platform Belanja B2B Alat Teknik & Industri di Indonesia</h5>