diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 62cf172..00a9848 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -309,6 +309,11 @@ function fixGalleryItems() { ->renderHook( PanelsRenderHook::BODY_END, fn (): string => <<<'HTML' +
@@ -322,6 +327,7 @@ function fixGalleryItems() {
+
1 / 1
@@ -339,6 +345,7 @@ function fixGalleryItems() { var lbPrev = document.getElementById('fi-lb-prev'); var lbNext = document.getElementById('fi-lb-next'); var lbClose = document.getElementById('fi-lb-close'); + var lbDownload = document.getElementById('fi-lb-download'); var lbCaption = document.getElementById('fi-lb-caption'); var lbCapBody = document.getElementById('fi-lb-cap-body'); var lbCapClose = document.getElementById('fi-lb-cap-close'); @@ -486,6 +493,30 @@ function onKey(e) { lbWrap.addEventListener('click', function (e) { if (e.target === lbWrap) hideLightbox(); }); lbClose.addEventListener('click', hideLightbox); + if (lbDownload) lbDownload.addEventListener('click', function () { + var toDownload = images.slice(); + toDownload.forEach(function (url, i) { + setTimeout(function () { + fetch(url) + .then(function (r) { + if (!r.ok) throw new Error('fetch failed'); + return r.blob(); + }) + .then(function (blob) { + var objUrl = URL.createObjectURL(blob); + var a = document.createElement('a'); + var ext = (url.split('?')[0].split('.').pop() || 'jpg').toLowerCase(); + a.href = objUrl; + a.download = 'image-' + (i + 1) + '.' + ext; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + setTimeout(function () { URL.revokeObjectURL(objUrl); }, 10000); + }) + .catch(function () { window.open(url, '_blank'); }); + }, i * 700); + }); + }); lbPrev.addEventListener('click', function () { navigate(-1); }); lbNext.addEventListener('click', function () { navigate(1); }); if (lbCapClose) lbCapClose.addEventListener('click', function () {