diff --git a/resources/js/components/media/MediaPreviewDialog.vue b/resources/js/components/media/MediaPreviewDialog.vue index 4596f70..b784e49 100644 --- a/resources/js/components/media/MediaPreviewDialog.vue +++ b/resources/js/components/media/MediaPreviewDialog.vue @@ -21,13 +21,16 @@ const props = withDefaults( url: string | null; urls?: string[]; title?: string; + titles?: string[]; }>(), { urls: () => [], title: 'Pratinjau Foto', + titles: () => [], } ); + const activeUrl = ref(props.url); watch( @@ -63,6 +66,14 @@ const currentIndex = computed(() => { const hasMultiple = computed(() => allUrls.value.length > 1); +const activeTitle = computed(() => { + if (props.titles && props.titles.length > 0 && currentIndex.value >= 0) { + return props.titles[currentIndex.value] ?? props.title ?? 'Pratinjau Foto'; + } + + return props.title ?? 'Pratinjau Foto'; +}); + function nextImage() { if (!hasMultiple.value) { return; @@ -130,7 +141,7 @@ function handleTouchEnd(e: TouchEvent) { - {{ title ?? 'Pratinjau Gambar' }} + {{ activeTitle }}
(); const previewOpen = ref(false); @@ -120,5 +121,5 @@ function openGallery() {
- + diff --git a/resources/js/pages/admin/master/products/table/ProductGroupedTable.vue b/resources/js/pages/admin/master/products/table/ProductGroupedTable.vue index d978407..be5326f 100644 --- a/resources/js/pages/admin/master/products/table/ProductGroupedTable.vue +++ b/resources/js/pages/admin/master/products/table/ProductGroupedTable.vue @@ -59,6 +59,12 @@ function allVariantImageUrls(product: ProductListItem): string[] { return product.variants.flatMap((variant) => (variant.images ?? []).map((img) => img.url)); } +function allVariantImageTitles(product: ProductListItem): string[] { + return product.variants.flatMap((variant) => + (variant.images ?? []).map(() => `${product.name} - ${variant.name}`) + ); +} + const verificationModalOpen = ref(false); const selectedRequestId = ref(null); @@ -152,7 +158,7 @@ function openVerificationDetail(requestId: number | undefined) { {{ variant.name }} - + {{ variant.stock_formatted }} diff --git a/resources/js/pages/admin/master/raw-materials/table/RawMaterialGroupedTable.vue b/resources/js/pages/admin/master/raw-materials/table/RawMaterialGroupedTable.vue index 5ca4deb..2bc15bd 100644 --- a/resources/js/pages/admin/master/raw-materials/table/RawMaterialGroupedTable.vue +++ b/resources/js/pages/admin/master/raw-materials/table/RawMaterialGroupedTable.vue @@ -53,6 +53,12 @@ function allVariantImageUrls(material: RawMaterialListItem): string[] { return material.prices.flatMap((price) => (price.images ?? []).map((img) => img.url)); } +function allVariantImageTitles(material: RawMaterialListItem): string[] { + return material.prices.flatMap((price) => + (price.images ?? []).map(() => `${material.name} - ${price.variant}`) + ); +} + const verificationModalOpen = ref(false); const selectedRequestId = ref(null); @@ -144,7 +150,7 @@ function openVerificationDetail(requestId: number | undefined) { {{ price.variant }} - + {{ price.stock_formatted }}