Table of Content
Introduction
Ketika gue mendapatkan project CPAR Audit Internal Eksternal ini gue dapet cara bagaimana menampilkan pdf tanpa new tab. Ataupun menampilkan gambar tanpa lightbox.js. Yaps pakai Sweetalert2
Kode nya
${res.picture.map(picture => {
if (picture.jenis === 'ca_pa') {
if (picture.picture.endsWith('.pdf')){
return `
<li>
<a href="#" data-pdf="/storage/cpar-audit/internal/foto/${picture.picture}" class="view-pdf" style="margin-bottom: 10px;">
${picture.picture}
</a>
</li>
`;
}else{
return `
<li>
<a href="#" data-image="/storage/cpar-audit/internal/foto/${picture.picture}" class="view-image" style="margin-bottom: 10px;">
${picture.picture}
</a>
</li>
`;
}
}
return '';
}).join('')}$('.view-image').on('click', function(e) {
e.preventDefault();
const imageUrl = $(this).data('image');
Swal.fire({
imageUrl: imageUrl,
showCloseButton: true,
showCancelButton: false,
confirmButtonText: 'Download',
customClass: {
popup: 'swal2-popup',
},
preConfirm: () => {
const link = document.createElement('a');
link.href = imageUrl;
link.download = '';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
});
});
$('.view-pdf').on('click', function(e) {
e.preventDefault();
const pdfUrl = $(this).data('pdf');
Swal.fire({
title: 'Lihat PDF',
html: `
<iframe src="${pdfUrl}" style="width: 100%; height: 400px;" frameborder="0"></iframe>
<a href="${pdfUrl}" download class="btn btn-primary" style="margin-top: 10px;">Download PDF</a>
`,
showCloseButton: true,
showCancelButton: false,
customClass: {
popup: 'swal2-popup',
},
focusConfirm: false,
onOpen: () => {
}
});
});Penjelasan:
imageUrl: imageUrl: Menampilkan gambar dalam modal dengan URL yang diambil daridata-image.showCloseButton: true: Menampilkan tombol close (X) di pojok kanan atas modal.showCancelButton: false: Menyembunyikan tombol cancel.confirmButtonText: 'Download': Mengubah teks tombol konfirmasi menjadi “Download”.customClass: { popup: 'swal2-popup' }: Menambahkan kelas kustom ke modal.preConfirm: () => { ... }: Fungsi yang dijalankan ketika tombol “Download” diklik.const link = document.createElement('a');: Membuat elemen<a>baru.link.href = imageUrl;: Mengaturhrefdari elemen<a>ke URL gambar.link.download = '';: Mengatur atributdownloaduntuk memungkinkan pengunduhan gambar.document.body.appendChild(link);: Menambahkan elemen<a>ke dalam body dokumen.link.click();: Memicu klik pada elemen<a>untuk memulai pengunduhan.document.body.removeChild(link);: Menghapus elemen<a>dari body dokumen setelah pengunduhan.
const pdfUrl = $(this).data('pdf');: Mengambil nilai dari atributdata-pdfpada elemen yang diklik. Ini biasanya berisi URL PDF yang akan ditampilkan.Swal.fire({ ... }): Membuka modal SweetAlert2 dengan konfigurasi tertentu.title: 'Lihat PDF': Menetapkan judul modal.html: ...: Menentukan konten HTML yang akan ditampilkan dalam modal.<iframe src="${pdfUrl}" style="width: 100%; height: 400px;" frameborder="0"></iframe>: Menampilkan PDF dalam iframe dengan lebar 100% dan tinggi 400px.<a href="${pdfUrl}" download class="btn btn-primary" style="margin-top: 10px;">Download PDF</a>: Menambahkan tombol untuk mengunduh PDF.
showCloseButton: true: Menampilkan tombol close (X) di pojok kanan atas modal.showCancelButton: false: Menyembunyikan tombol cancel.customClass: { popup: 'swal2-popup' }: Menambahkan kelas kustom ke modal.focusConfirm: false: Mencegah fokus otomatis pada tombol konfirmasi.onOpen: () => { ... }: Fungsi yang dijalankan saat modal dibuka (dalam kasus ini, tidak ada tindakan khusus).
Screenshot


Date: 04-02-2025