import { AutoComplete, AutoCompleteInput, AutoCompleteItem, AutoCompleteList, } from '@choc-ui/chakra-autocomplete'; import style from '../styles/information.module.css'; import dynamic from 'next/dynamic'; import Link from 'next/link'; import { useEffect, useRef, useState } from 'react'; import currencyFormat from '@/core/utils/currencyFormat'; import { InputGroup, InputRightElement, Spinner } from '@chakra-ui/react'; import { ChevronDownIcon } from '@heroicons/react/24/outline'; import Image from 'next/image'; import { formatToShortText } from '~/libs/formatNumber'; import { createSlug } from '~/libs/slug'; import { getVariantSLA } from '~/services/productVariant'; import { IProductDetail } from '~/types/product'; import { useProductDetail } from '../stores/useProductDetail'; import useVariant from '../hook/useVariant'; const Skeleton = dynamic(() => import('@chakra-ui/react').then((mod) => mod.Skeleton) ); type Props = { product: IProductDetail; }; const Information = ({ product }: Props) => { const { selectedVariant, setSelectedVariant, setSla, setActive, sla } = useProductDetail(); const [inputValue, setInputValue] = useState( selectedVariant?.code + ' - ' + selectedVariant?.attributes[0] ); const [disableFilter, setDisableFilter] = useState(false); const inputRef = useRef(null); const [variantOptions, setVariantOptions] = useState( product?.variants ); const variantId = selectedVariant?.id; const { slaVariant, isLoading } = useVariant({ variantId }); // let variantOptions = product?.variants; // const querySLA = useQuery({ // queryKey: ['variant-sla', selectedVariant?.id], // queryFn: () => getVariantSLA(selectedVariant?.id), // enabled: !!selectedVariant?.id, // }); // const sla = querySLA?.data; useEffect(() => { if (selectedVariant) { setInputValue( selectedVariant?.code + (selectedVariant?.attributes[0] ? ' - ' + selectedVariant?.attributes[0] : '') ); } }, [selectedVariant]); useEffect(() => { if (isLoading){ setSla(null); } if (slaVariant) { setSla(slaVariant); } }, [slaVariant, isLoading]); const handleOnChange = (vals: any) => { setDisableFilter(true); let code = vals.replace(/\s-\s.*$/, '').trim(); let variant = variantOptions.find((item) => item.code === code); setSelectedVariant(variant); setInputValue( variant?.code + (variant?.attributes[0] ? ' - ' + variant?.attributes[0] : '') ); if (variant) { const filteredOptions = product?.variants.filter( (item) => item !== variant ); const newOptions = [variant, ...filteredOptions]; setVariantOptions(newOptions); } }; const handleOnKeyUp = (e: any) => { setDisableFilter(false); setInputValue(e.target.value); }; return (
handleOnChange(vals)} > handleOnKeyUp(e)} onFocus={() => setDisableFilter(true)} /> inputRef?.current?.focus()} /> {variantOptions.map((option, cid) => (
{option.code + (option?.attributes[0] ? ' - ' + option?.attributes[0] : '')}
{option?.price?.discount_percentage > 0 && ( <>
{Math.floor(option?.price?.discount_percentage)}%
{currencyFormat(option?.price?.price)}
)}
{currencyFormat(option?.price?.price_discount)}
))}
Item Code
{selectedVariant?.code}
Manufacture
{!!product.manufacture.name ? ( {product?.manufacture.logo ? ( {product.manufacture.name} ) : (

{product.manufacture.name}

)} ) : ( '-' )}
Berat Barang
{selectedVariant?.weight > 0 ? `${selectedVariant?.weight} Kg` : '-'}
Terjual
{product.qty_sold > 0 ? formatToShortText(product.qty_sold) : '-'}
Persiapan Barang
{isLoading && (
)} {!isLoading &&
{sla?.sla_date}
}
); }; export default Information;