import { router } from '@inertiajs/react'; import { Pencil, Trash2 } from 'lucide-react'; import { useState } from 'react'; import { ConfirmDialog } from '@/components/dialogs'; import { ImagePreviewButton } from '@/components/dialogs'; import type { ImagePreviewItem } from '@/components/dialogs'; import { RowActions } from '@/components/data-display'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; import { useCan } from '@/hooks/use-can'; import { formatNumber } from '@/lib/format'; import { formatCurrency } from '@/lib/utils'; import { edit as variantEdit, destroy as variantDestroy, } from '@/routes/admin/master/raw-materials/variants'; import type { RawMaterial, RawMaterialVariant } from '../columns'; export function RawMaterialVariantSubRow({ rawMaterial, allPreviewItems, }: { rawMaterial: RawMaterial; allPreviewItems: ImagePreviewItem[]; }) { const { can } = useCan(); 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), }, ); } const canAnyAction = can('raw_materials.update') || can('raw_materials.delete'); return (
No Foto Nama Varian Harga Stok {canAnyAction && ( Aksi )} {variants.length === 0 ? ( Tidak ada varian. ) : ( variants.map((variant, index) => ( {index + 1} {variant.photo_url ? ( item.id === `${rawMaterial.id}-${variant.id}`)} /> ) : (
N/A
)}
{variant.variant} {formatCurrency(variant.price)} {formatNumber(variant.stock)} {canAnyAction && ( ), show: can('raw_materials.update'), onClick: () => { router.visit( variantEdit.url({ rawMaterial: rawMaterial.id, variant: variant.id, }), ); }, }, { label: 'Hapus', icon: ( ), show: can('raw_materials.delete'), onClick: () => setDeletingVariant(variant), }, ]} /> )}
)) )}
{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} /> )}
); }