summaryrefslogtreecommitdiff
path: root/src/pages/shop
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-02-06 16:15:14 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-02-06 16:15:14 +0700
commite561175d7167da3f6ac25200ad3cce63ea38e20b (patch)
tree0ad04bc66ef2b5ca23f35bfa9614731e1240d9f3 /src/pages/shop
parent620223f151700bbd91a33d32e2a4c29d4c287e9d (diff)
no message
Diffstat (limited to 'src/pages/shop')
-rw-r--r--src/pages/shop/brands/[slug].js39
-rw-r--r--src/pages/shop/brands/index.js10
-rw-r--r--src/pages/shop/cart.js2
3 files changed, 41 insertions, 10 deletions
diff --git a/src/pages/shop/brands/[slug].js b/src/pages/shop/brands/[slug].js
index 928da0d0..64ff7706 100644
--- a/src/pages/shop/brands/[slug].js
+++ b/src/pages/shop/brands/[slug].js
@@ -6,8 +6,15 @@ import Header from "@/components/layouts/Header";
import Layout from "@/components/layouts/Layout";
import Pagination from "@/components/elements/Pagination";
import ProductCard from "@/components/products/ProductCard";
-import { getNameFromSlug } from "@/core/utils/slug";
+import { getIdFromSlug, getNameFromSlug } from "@/core/utils/slug";
import FilterIcon from "@/icons/filter.svg";
+import apiOdoo from "@/core/utils/apiOdoo";
+import { Swiper, SwiperSlide } from "swiper/react";
+import "swiper/css";
+import "swiper/css/pagination";
+import "swiper/css/autoplay";
+import { Pagination as SwiperPagination } from "swiper";
+import Image from "@/components/elements/Image";
export async function getServerSideProps(context) {
const {
@@ -30,6 +37,8 @@ export async function getServerSideProps(context) {
].join('&');
let searchResults = await axios(`${process.env.SELF_HOST}/api/shop/search?${urlParameter}`);
searchResults = searchResults.data;
+
+ const manufacture = await apiOdoo('GET', `/api/v1/manufacture/${getIdFromSlug(slug)}`);
return {
props: {
@@ -39,7 +48,8 @@ export async function getServerSideProps(context) {
category,
price_from,
price_to,
- order_by
+ order_by,
+ manufacture
}
};
}
@@ -51,7 +61,8 @@ export default function BrandDetail({
category,
price_from,
price_to,
- order_by
+ order_by,
+ manufacture
}) {
const pageCount = Math.ceil(searchResults.response.numFound / searchResults.responseHeader.params.rows);
const productStart = searchResults.responseHeader.params.start;
@@ -94,8 +105,28 @@ export default function BrandDetail({
disableFilter={['brand']}
/>
<Layout>
+ <Swiper slidesPerView={1} pagination={{dynamicBullets: true}} modules={[SwiperPagination]}>
+ {
+ manufacture.banners?.map((banner, index) => (
+ <SwiperSlide key={index}>
+ <Image
+ src={banner}
+ alt={`Banner ${manufacture.name}`}
+ className="w-full h-auto"
+ />
+ </SwiperSlide>
+ ))
+ }
+ </Swiper>
<div className="p-4">
- <h1 className="mb-2">Produk</h1>
+ <div className="flex">
+ { manufacture.logo ? (
+ <Image src={manufacture?.logo} alt={manufacture.name} className="w-4/12 border border-gray_r-6 rounded p-3" />
+ ) : (
+ <p className="badge-red text-caption-1">Brand { manufacture.name }</p>
+ ) }
+ </div>
+ <h1 className="mb-2 mt-4">Produk</h1>
<div className="text-caption-1 mb-4">
{productFound > 0 ? (
<>
diff --git a/src/pages/shop/brands/index.js b/src/pages/shop/brands/index.js
index fec2405a..bfdcd403 100644
--- a/src/pages/shop/brands/index.js
+++ b/src/pages/shop/brands/index.js
@@ -1,7 +1,7 @@
import Header from "@/components/layouts/Header";
import apiOdoo from "@/core/utils/apiOdoo";
import InfiniteScroll from "react-infinite-scroll-component";
-import { useEffect, useState } from "react";
+import { useCallback, useEffect, useState } from "react";
import Spinner from "@/components/elements/Spinner";
import Layout from "@/components/layouts/Layout";
import ManufactureCard from "@/components/manufactures/ManufactureCard";
@@ -20,12 +20,12 @@ export default function Brands({ initialManufactures }) {
const alpha = Array.from(Array(26)).map((e, i) => i + 65);
const alphabets = alpha.map((x) => String.fromCharCode(x));
- const getMoreManufactures = async () => {
+ const getMoreManufactures = useCallback(async () => {
const name = manufactureStartwith != '' ? `${manufactureStartwith}%` : '';
const result = await apiOdoo('GET', `/api/v1/manufacture?limit=30&offset=${manufactures.length}&name=${name}`);
setHasMoreManufacture(manufactures.length + 30 < result.manufacture_total)
setManufactures((manufactures) => [...manufactures, ...result.manufactures]);
- };
+ }, [ manufactureStartwith ]);
const filterManufactureStartWith = (character) => {
setManufactures([]);
@@ -38,7 +38,7 @@ export default function Brands({ initialManufactures }) {
useEffect(() => {
getMoreManufactures();
- }, [manufactureStartwith]);
+ }, [ getMoreManufactures ]);
return (
<>
@@ -48,7 +48,7 @@ export default function Brands({ initialManufactures }) {
<h1>Semua Brand di Indoteknik</h1>
<div className="flex overflow-x-auto gap-x-2 py-2">
{alphabets.map((alphabet, index) => (
- <button key={index} className={"p-2 py-1 border bg-white border-gray_r-6 rounded w-10 flex-shrink-0" + (manufactureStartwith == alphabet ? ' bg-yellow_r-9 border-yellow_r-9 ' : '')} onClick={() => filterManufactureStartWith(alphabet)}>
+ <button key={index} className={"p-2 py-1 border bg-white border-gray_r-6 rounded w-10 flex-shrink-0" + (manufactureStartwith == alphabet ? ' !bg-yellow_r-9 border-yellow_r-9 ' : '')} onClick={() => filterManufactureStartWith(alphabet)}>
{alphabet}
</button>
))}
diff --git a/src/pages/shop/cart.js b/src/pages/shop/cart.js
index d8327a10..ef62bb23 100644
--- a/src/pages/shop/cart.js
+++ b/src/pages/shop/cart.js
@@ -134,7 +134,7 @@ export default function Cart() {
ConfirmAlert
} = useConfirmAlert({
title: 'Hapus barang dari keranjang',
- caption:'Apakah anda yakin menghapus barang dari keranjang',
+ caption:'Apakah anda yakin menghapus barang dari keranjang?',
closeText: 'Batal',
submitText: 'Hapus',
onSubmit: deleteItem