diff --git a/resources/js/pages/admin/master/raw-material/index.tsx b/resources/js/pages/admin/master/raw-material/index.tsx
index a5ee762..d9207f5 100644
--- a/resources/js/pages/admin/master/raw-material/index.tsx
+++ b/resources/js/pages/admin/master/raw-material/index.tsx
@@ -3,6 +3,7 @@ import { Plus } from 'lucide-react';
import { useMemo, useState } from 'react';
import { CardTable } from '@/components/data-display';
import { DeleteConfirmDialog } from '@/components/dialogs';
+import type { ImagePreviewItem } from '@/components/dialogs';
import { FilterPopover } from '@/components/data-display';
import { useCardTableExpand } from '@/components/hooks/use-card-table-expand';
import { PageHeader } from '@/components/layout';
@@ -91,6 +92,21 @@ export default function RawMaterialIndex({ rawMaterials, rawMaterialNames, filte
[rawMaterialNames],
);
+ const allPreviewItems: ImagePreviewItem[] = useMemo(
+ () =>
+ rawMaterials.data.flatMap((rm) =>
+ (rm.raw_material_prices ?? [])
+ .filter((v) => v.photo_url)
+ .map((v) => ({
+ id: `${rm.id}-${v.id}`,
+ src: v.photo_url,
+ title: v.variant,
+ description: `Stok: ${v.formatted_stock}`,
+ }))
+ ),
+ [rawMaterials.data],
+ );
+
function handleDelete() {
if (!deleting) {
return;
@@ -246,7 +262,10 @@ export default function RawMaterialIndex({ rawMaterials, rawMaterialNames, filte
/>
)}
renderSubContent={(rawMaterial) => (
-
+
)}
/>
diff --git a/resources/js/pages/admin/master/raw-material/variant/sub-row.tsx b/resources/js/pages/admin/master/raw-material/variant/sub-row.tsx
index 8381127..16aa7b4 100644
--- a/resources/js/pages/admin/master/raw-material/variant/sub-row.tsx
+++ b/resources/js/pages/admin/master/raw-material/variant/sub-row.tsx
@@ -3,6 +3,7 @@ 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,
@@ -23,8 +24,10 @@ import type { RawMaterial, RawMaterialVariant } from '../columns';
export function RawMaterialVariantSubRow({
rawMaterial,
+ allPreviewItems,
}: {
rawMaterial: RawMaterial;
+ allPreviewItems: ImagePreviewItem[];
}) {
const { can } = useCan();
const variants = rawMaterial.raw_material_prices ?? [];
@@ -91,6 +94,8 @@ export function RawMaterialVariantSubRow({
modalSrc={variant.photo_url}
title={variant.variant}
description={`Stok: ${variant.formatted_stock}`}
+ items={allPreviewItems}
+ startIndex={allPreviewItems.findIndex((item) => item.id === `${rawMaterial.id}-${variant.id}`)}
/>
) : (