From 2dd5b10049ff62656f160a9aa5b6627cd7ccbefc Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 23 Feb 2023 15:29:35 +0700 Subject: fix --- src/core/components/elements/Sidebar/Sidebar.jsx | 2 +- src/lib/brand/components/BrandCard.jsx | 22 +++++-- src/lib/brand/components/Brands.jsx | 80 ++++++++++++++++++++++++ src/pages/shop/brands/index.jsx | 10 +++ 4 files changed, 107 insertions(+), 7 deletions(-) create mode 100644 src/lib/brand/components/Brands.jsx create mode 100644 src/pages/shop/brands/index.jsx (limited to 'src') diff --git a/src/core/components/elements/Sidebar/Sidebar.jsx b/src/core/components/elements/Sidebar/Sidebar.jsx index cdeb3e05..22fda06b 100644 --- a/src/core/components/elements/Sidebar/Sidebar.jsx +++ b/src/core/components/elements/Sidebar/Sidebar.jsx @@ -79,7 +79,7 @@ const Sidebar = ({ active, close }) => { Semua Brand diff --git a/src/lib/brand/components/BrandCard.jsx b/src/lib/brand/components/BrandCard.jsx index e981c0d5..1bcdb5ab 100644 --- a/src/lib/brand/components/BrandCard.jsx +++ b/src/lib/brand/components/BrandCard.jsx @@ -6,13 +6,23 @@ const BrandCard = ({ brand }) => { return ( - {brand.name} + {brand.logo && ( + {brand.name} + )} + {!brand.logo && ( + + {brand.name} + + )} ) } diff --git a/src/lib/brand/components/Brands.jsx b/src/lib/brand/components/Brands.jsx new file mode 100644 index 00000000..22f47975 --- /dev/null +++ b/src/lib/brand/components/Brands.jsx @@ -0,0 +1,80 @@ +import odooApi from '@/core/api/odooApi' +import Spinner from '@/core/components/elements/Spinner/Spinner' +import { useCallback, useEffect, useState } from 'react' +import BrandCard from './BrandCard' + +const Brands = () => { + const alpha = Array.from(Array(26)).map((e, i) => i + 65) + const alphabets = alpha.map((x) => String.fromCharCode(x)) + + const [isLoading, setIsLoading] = useState(true) + const [startWith, setStartWith] = useState(null) + const [manufactures, setManufactures] = useState([]) + + const loadBrand = useCallback(async () => { + setIsLoading(true) + const name = startWith ? `${startWith}%` : '' + const result = await odooApi( + 'GET', + `/api/v1/manufacture?limit=0&offset=${manufactures.length}&name=${name}` + ) + setIsLoading(false) + setManufactures((manufactures) => [...manufactures, ...result.manufactures]) + }, [startWith]) + + const toggleStartWith = (alphabet) => { + setManufactures([]) + if (alphabet == startWith) { + setStartWith(null) + return + } + setStartWith(alphabet) + } + + useEffect(() => { + loadBrand() + }, [loadBrand]) + + if (isLoading) { + return ( +
+ +
+ ) + } + + return ( +
+

Semua Brand di Indoteknik

+
+ {alphabets.map((alphabet, index) => ( + + ))} +
+ +
+ {manufactures?.map( + (manufacture, index) => + manufacture.name && ( + + ) + )} +
+
+ ) +} + +export default Brands diff --git a/src/pages/shop/brands/index.jsx b/src/pages/shop/brands/index.jsx new file mode 100644 index 00000000..5c01fd19 --- /dev/null +++ b/src/pages/shop/brands/index.jsx @@ -0,0 +1,10 @@ +import BasicLayout from '@/core/components/layouts/BasicLayout' +import BrandsComponent from '@/lib/brand/components/Brands' + +export default function Brands() { + return ( + + + + ) +} -- cgit v1.2.3