fix detail
This commit is contained in:
parent
da9afba614
commit
8ef4cfaf6a
@ -37,7 +37,7 @@ class FormApiController extends Controller
|
|||||||
'nama_pemesan' => 'required|string|max:255',
|
'nama_pemesan' => 'required|string|max:255',
|
||||||
'no_hp' => 'required|string|max:20',
|
'no_hp' => 'required|string|max:20',
|
||||||
'email' => 'required|email',
|
'email' => 'required|email',
|
||||||
'catatan' => 'nullable|string|max:500',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
// ✅ Ambil template + fiturnya
|
// ✅ Ambil template + fiturnya
|
||||||
|
|||||||
@ -64,19 +64,20 @@
|
|||||||
<div class="grid grid-cols-2 gap-6 mb-8">
|
<div class="grid grid-cols-2 gap-6 mb-8">
|
||||||
@foreach($pelanggan->details as $detail)
|
@foreach($pelanggan->details as $detail)
|
||||||
@foreach($detail->detail_form as $key => $value)
|
@foreach($detail->detail_form as $key => $value)
|
||||||
@if($key !== 'galeri')
|
{{-- 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>
|
<div>
|
||||||
<label class="text-gray-600 text-sm">{{ ucfirst(str_replace('_',' ',$key)) }}</label>
|
<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">
|
<div class="border rounded px-3 py-2 min-h-[45px] flex items-center">
|
||||||
|
|
||||||
@if(is_array($value))
|
@if(is_array($value))
|
||||||
{{ implode(', ', $value) }}
|
{{ implode(', ', $value) }}
|
||||||
@else
|
@else
|
||||||
{{ $value }}
|
{{ $value }}
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
@ -84,23 +85,42 @@
|
|||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
<!-- Galeri -->
|
<!-- Galeri (dinamis untuk semua field galeri) -->
|
||||||
@foreach($pelanggan->details as $detail)
|
@foreach($pelanggan->details as $detail)
|
||||||
|
@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) }}')">
|
||||||
|
|
||||||
@if(isset($detail->detail_form['galeri']) && !empty($detail->detail_form['galeri']))
|
{{-- 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">
|
||||||
<h3 class="text-lg font-semibold mb-4">Galeri</h3>
|
<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">
|
||||||
<div class="grid grid-cols-5 gap-3">
|
<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>
|
||||||
{{-- Loop data galeri dari dalam JSON --}}
|
</div>
|
||||||
@foreach($detail->detail_form['galeri'] as $foto)
|
</div>
|
||||||
<img src="{{ asset('storage/' . $foto) }}" alt="Foto Galeri" class="w-full h-24 object-cover rounded border">
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
@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>
|
</div>
|
||||||
|
|
||||||
@endif
|
|
||||||
@endforeach
|
|
||||||
|
|
||||||
<!-- Tombol Kembali -->
|
<!-- Tombol Kembali -->
|
||||||
<div class="mt-8 text-right">
|
<div class="mt-8 text-right">
|
||||||
@ -111,4 +131,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<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
|
@endsection
|
||||||
@ -87,8 +87,7 @@
|
|||||||
<label class="block font-medium">Nomor HP *</label>
|
<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 />
|
<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>
|
</div>
|
||||||
|
|
||||||
<!-- Submit -->
|
<!-- Submit -->
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user