fix detail

This commit is contained in:
Muzakki Parsaoran Siregar 2025-09-19 14:59:11 +07:00
parent da9afba614
commit 8ef4cfaf6a
3 changed files with 67 additions and 30 deletions

View File

@ -37,7 +37,7 @@ class FormApiController extends Controller
'nama_pemesan' => 'required|string|max:255',
'no_hp' => 'required|string|max:20',
'email' => 'required|email',
'catatan' => 'nullable|string|max:500',
];
// ✅ Ambil template + fiturnya

View File

@ -64,44 +64,64 @@
<div class="grid grid-cols-2 gap-6 mb-8">
@foreach($pelanggan->details as $detail)
@foreach($detail->detail_form as $key => $value)
@if($key !== 'galeri')
<div>
<label class="text-gray-600 text-sm">{{ ucfirst(str_replace('_',' ',$key)) }}</label>
<div class="border rounded px-3 py-2 min-h-[45px] flex items-center">
@if(is_array($value))
{{ implode(', ', $value) }}
@else
{{ $value }}
@endif
{{-- Skip field galeri/gallery, email, dan template_id --}}
@if(!str_contains(strtolower($key), 'galeri') &&
!str_contains(strtolower($key), 'gallery') &&
$key !== 'email' &&
$key !== 'template_id')
<div>
<label class="text-gray-600 text-sm">{{ ucfirst(str_replace('_',' ',$key)) }}</label>
<div class="border rounded px-3 py-2 min-h-[45px] flex items-center">
@if(is_array($value))
{{ implode(', ', $value) }}
@else
{{ $value }}
@endif
</div>
</div>
</div>
@endif
@endforeach
@endforeach
</div>
@endif
<!-- Galeri -->
<!-- Galeri (dinamis untuk semua field galeri) -->
@foreach($pelanggan->details as $detail)
@if(isset($detail->detail_form['galeri']) && !empty($detail->detail_form['galeri']))
<h3 class="text-lg font-semibold mb-4">Galeri</h3>
<div class="grid grid-cols-5 gap-3">
{{-- Loop data galeri dari dalam JSON --}}
@foreach($detail->detail_form['galeri'] as $foto)
<img src="{{ asset('storage/' . $foto) }}" alt="Foto Galeri" class="w-full h-24 object-cover rounded border">
@foreach($detail->detail_form as $key => $value)
{{-- Cek apakah field mengandung kata 'galeri' atau 'gallery' dan berupa array --}}
@if((str_contains(strtolower($key), 'galeri') || str_contains(strtolower($key), 'gallery')) && is_array($value) && !empty($value))
<div class="mb-6">
<h3 class="text-lg font-semibold mb-4">{{ ucfirst(str_replace('_', ' ', $key)) }}</h3>
<div class="grid grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-3">
@foreach($value as $foto)
<div class="relative group">
<img src="{{ asset('storage/' . $foto) }}"
alt="Foto {{ $key }}"
class="w-full h-24 object-cover rounded border hover:opacity-75 transition-opacity cursor-pointer"
onclick="openModal('{{ asset('storage/' . $foto) }}')">
{{-- Overlay untuk zoom icon --}}
<div class="absolute inset-0 bg-black bg-opacity-0 group-hover:bg-opacity-30 transition-all duration-200 rounded flex items-center justify-center">
<svg class="w-6 h-6 text-white opacity-0 group-hover:opacity-100 transition-opacity" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM10 7v3m0 0v3m0-3h3m-3 0H7"></path>
</svg>
</div>
</div>
@endforeach
</div>
</div>
@endif
@endforeach
@endforeach
<!-- Modal untuk memperbesar gambar -->
<div id="imageModal" class="fixed inset-0 bg-black bg-opacity-75 hidden z-50 flex items-center justify-center" onclick="closeModal()">
<div class="max-w-4xl max-h-full p-4">
<img id="modalImage" src="" alt="Full Size" class="max-w-full max-h-full object-contain rounded">
<button onclick="closeModal()" class="absolute top-4 right-4 text-white text-2xl hover:text-gray-300">×</button>
</div>
</div>
@endif
@endforeach
<!-- Tombol Kembali -->
<div class="mt-8 text-right">
<a href="{{ route('admin.pelanggan.index') }}"
@ -111,4 +131,22 @@
</div>
</div>
</div>
@endsection
<script>
function openModal(imageSrc) {
document.getElementById('modalImage').src = imageSrc;
document.getElementById('imageModal').classList.remove('hidden');
}
function closeModal() {
document.getElementById('imageModal').classList.add('hidden');
}
// Close modal with ESC key
document.addEventListener('keydown', function(event) {
if (event.key === 'Escape') {
closeModal();
}
});
</script>
@endsection

View File

@ -87,8 +87,7 @@
<label class="block font-medium">Nomor HP *</label>
<input v-model="baseForm.no_hp" type="text" class="w-full border rounded px-3 py-2 mb-3" required />
<label class="block font-medium">Catatan</label>
<textarea v-model="baseForm.catatan" class="w-full border rounded px-3 py-2 mb-3"></textarea>
</div>
<!-- Submit -->