import style from '../styles/variant-list.module.css' import React from 'react' import { Button, Skeleton } from '@chakra-ui/react' import formatCurrency from '~/libs/formatCurrency' import clsxm from '~/libs/clsxm' import { IProductVariantDetail, IProductVariantSLA } from '~/types/productVariant' import { useProductDetail } from '../stores/useProductDetail' import { LazyLoadComponent } from 'react-lazy-load-image-component'; import { getVariantSLA } from '~/services/productVariant' import { useQuery } from 'react-query' import useDevice from '@/core/hooks/useDevice' type Props = { variants: IProductVariantDetail[] } const VariantList = ({ variants }: Props) => { return (
Part Number
Variant
Stock
Masa Persiapan
Berat
Harga
{variants.map((variant) => ( ))}
) } const Row = ({ variant }: { variant: IProductVariantDetail }) => { const { isMobile } = useDevice() const { activeVariantId, setActive } = useProductDetail() const querySLA = useQuery({ queryKey: ['variant-sla', variant.id], queryFn: () => getVariantSLA(variant.id), refetchOnWindowFocus: false, }) const sla = querySLA?.data const handleSelect = (variant: IProductVariantDetail) => { const priceSectionEl = document.getElementById('price-section') if (isMobile && priceSectionEl) { window.scrollTo({ top: priceSectionEl.offsetTop - 120, behavior: 'smooth' }) } setActive(variant) } return (
{variant.code}
{variant.attributes.join(', ') || '-'}
{sla?.qty !== undefined && (
0, })} > {sla.qty > 0 && sla.qty} {sla.qty == 0 && '-'}
)}
{sla?.sla_date}
{variant.weight > 0 ? `${variant.weight} Kg` : '-'}
{variant.price.discount_percentage > 0 && (
{Math.floor(variant.price.discount_percentage)}%
Rp {formatCurrency(variant.price.price)}
)} {variant.price.price_discount > 0 && `Rp ${formatCurrency(variant.price.price_discount)}`} {variant.price.price_discount === 0 && '-'}
) } export default VariantList