import { useEffect, useState } from 'react' import useProductSearch from '../hooks/useProductSearch' import ProductCard from './ProductCard' import Pagination from '@/core/components/elements/Pagination/Pagination' import { toQuery } from 'lodash-contrib' import _ from 'lodash' import ProductSearchSkeleton from './Skeleton/ProductSearchSkeleton' import ProductFilter from './ProductFilter' import useActive from '@/core/hooks/useActive' import MobileView from '@/core/components/views/MobileView' import DesktopView from '@/core/components/views/DesktopView' import NextImage from 'next/image' import { ChevronDownIcon } from '@heroicons/react/24/outline' import ProductFilterDesktop from './ProductFilterDesktop' import { useRouter } from 'next/router' const ProductSearch = ({ query, prefixUrl, defaultBrand = null }) => { const router = useRouter() const { page = 1 } = query if (defaultBrand) query.brand = defaultBrand.toLowerCase() const { productSearch } = useProductSearch({ query }) const [products, setProducts] = useState(null) const popup = useActive() const pageCount = Math.ceil( productSearch.data?.response.numFound / productSearch.data?.responseHeader.params.rows ) const productStart = productSearch.data?.responseHeader.params.start const productRows = productSearch.data?.responseHeader.params.rows const productFound = productSearch.data?.response.numFound const brands = productSearch.data?.facetCounts?.facetFields?.brandStr?.filter((value, index) => { if (index % 2 === 0) { return true } }) const categories = productSearch.data?.facetCounts?.facetFields?.categoryNameStr?.filter( (value, index) => { if (index % 2 === 0) { return true } } ) const [open, setOpen] = useState(1) const [order, setOrder] = useState(query?.orderBy) const handleOpen = (value) => { setOpen(open === value ? 0 : value) } const orderOptions = [ { value: 'price-asc', label: 'Harga Terendah' }, { value: 'price-desc', label: 'Harga Tertinggi' }, { value: 'popular', label: 'Populer' }, { value: 'stock', label: 'Ready Stock' } ] const handleOrderBy = (e) => { let params = { ...router.query, orderBy: e.target.value } params = _.pickBy(params, _.identity) params = toQuery(params) router.push(`${prefixUrl}?${params}`) } useEffect(() => { if (!products) { setProducts(productSearch.data?.response?.products) } }, [query, products, productSearch]) if (productSearch.isLoading) { return } return ( <>

Produk

{productFound > 0 ? ( <> Menampilkan  {pageCount > 1 ? ( <> {productStart + 1}- {productStart + productRows > productFound ? productFound : productStart + productRows}  dari  ) : ( '' )} {productFound}  produk{' '} {query.q && ( <> untuk pencarian {query.q} )} ) : ( 'Mungkin yang anda cari' )}
{products && products.map((product) => ( ))}

Hasil Pencarian

{productFound > 0 ? ( <> Menampilkan  {pageCount > 1 ? ( <> {productStart + 1}- {productStart + productRows > productFound ? productFound : productStart + productRows}  dari  ) : ( '' )} {productFound}  produk{' '} {query.q && ( <> untuk pencarian {query.q} )} ) : ( 'Mungkin yang anda cari' )}
{/*
*/}
{products && products.map((product) => ( ))}
Barang yang anda cari tidak ada?{' '} Hubungi Kami
) } export default ProductSearch