import { router } from '@inertiajs/react'; import { Pencil, Trash2 } from 'lucide-react'; import { useState } from 'react'; import { ConfirmDialog } from '@/components/confirm-dialog'; import { ImagePreviewModal } from '@/components/image-preview-modal'; import { Button } from '@/components/ui/button'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@/components/ui/tooltip'; import type { RawMaterial, RawMaterialVariant } from '../columns'; import { edit as variantEdit, destroy as variantDestroy } from '@/routes/admin/master/raw-materials/variants'; function formatCurrency(amount: number): string { return new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0, }).format(amount); } function formatNumber(num: number): string { return new Intl.NumberFormat('id-ID', { maximumFractionDigits: 4 }).format(num); } function VariantPhotoPreview({ url, title }: { url: string; title: string }) { const [open, setOpen] = useState(false); return ( <> ); } export function RawMaterialVariantSubRow({ rawMaterial, }: { rawMaterial: RawMaterial; }) { const variants = rawMaterial.raw_material_prices ?? []; const [deletingVariant, setDeletingVariant] = useState(null); function handleDeleteVariant() { if (!deletingVariant) return; router.delete( variantDestroy.url({ rawMaterial: rawMaterial.id, variant: deletingVariant.id, }), { onSuccess: () => setDeletingVariant(null), }, ); } return (
No Foto Nama Varian Harga Stok Aksi {variants.length === 0 ? ( Tidak ada varian. ) : ( variants.map((variant, index) => ( {index + 1} {variant.photo_url ? ( ) : (
N/A
)}
{variant.variant} {formatCurrency(variant.price)} {formatNumber(variant.stock)}
Edit Hapus
)) )}
{deletingVariant && ( { if (!open) { setDeletingVariant(null); } }} title="Hapus Varian" description={`Apakah Anda yakin ingin menghapus varian "${deletingVariant.variant}" dari bahan baku "${rawMaterial.name}"? Tindakan ini tidak dapat dibatalkan.`} confirmLabel="Hapus" onConfirm={handleDeleteVariant} /> )}
); }