{
if (img && !validImages.includes(img)) {
validImages.unshift(img);
}
});
if ($event.detail.images.length > 0) activeImg = $event.detail.images[0];
} else if ($event.detail.image) {
activeImg = $event.detail.image;
if (!validImages.includes($event.detail.image)) {
validImages.unshift($event.detail.image);
}
}
}
"
x-data="{
activeImg: '/storage/products/cdfcebed-f01c-4bf5-9e82-8d8a194d31f9.png',
showLightbox: false,
lightboxIndex: 0,
zoom: false,
savedScrollY: 0,
validImages: [],
imgAspect: 1,
zoomLevel: 1,
panX: 0,
panY: 0,
isDragging: false,
dragStartX: 0,
dragStartY: 0,
startPanX: 0,
startPanY: 0,
async init() {
const primary = '/storage/products/cdfcebed-f01c-4bf5-9e82-8d8a194d31f9.png';
const extraImgs = JSON.parse('[\u0022\\\/storage\\\/products\\\/cdfcebed-f01c-4bf5-9e82-8d8a194d31f9.png\u0022]');
const allImgs = Array.from(new Set([primary, ...extraImgs])).filter(Boolean);
const checks = await Promise.all(allImgs.map(async (src) => {
try {
const resp = await fetch(src, { method: 'HEAD' });
return resp.ok ? src : null;
} catch { return null; }
}));
this.validImages = checks.filter(Boolean);
if (this.validImages.length === 0) {
this.validImages = [primary];
}
this.activeImg = this.validImages[0];
},
onImgLoad(el) {
if (el && el.naturalWidth && el.naturalHeight) {
this.imgAspect = el.naturalWidth / el.naturalHeight;
}
},
openLightbox(i) {
this.lightboxIndex = i >= 0 ? i : 0;
this.zoomLevel = 1;
this.resetPan();
this.showLightbox = true;
document.documentElement.style.overflow = 'hidden';
document.body.style.overflow = 'hidden';
document.body.style.touchAction = 'none';
document.body.classList.add('overlay-open');
document.documentElement.classList.add('overlay-open');
},
closeLightbox() {
this.showLightbox = false;
this.zoomLevel = 1;
this.resetPan();
document.documentElement.style.overflow = '';
document.body.style.overflow = '';
document.body.style.touchAction = '';
document.body.classList.remove('overlay-open');
document.documentElement.classList.remove('overlay-open');
},
zoomIn() {
if (this.zoomLevel < 2.5) this.zoomLevel = parseFloat((this.zoomLevel + 0.25).toFixed(2));
},
zoomOut() {
if (this.zoomLevel > 1) {
this.zoomLevel = parseFloat((this.zoomLevel - 0.25).toFixed(2));
if (this.zoomLevel === 1) this.resetPan();
}
},
resetZoom() {
this.zoomLevel = 1;
this.resetPan();
},
resetPan() {
this.panX = 0;
this.panY = 0;
this.isDragging = false;
},
startDrag(e) {
if (this.zoomLevel <= 1) return;
this.isDragging = true;
const clientX = e.touches ? e.touches[0].clientX : e.clientX;
const clientY = e.touches ? e.touches[0].clientY : e.clientY;
this.dragStartX = clientX;
this.dragStartY = clientY;
this.startPanX = this.panX;
this.startPanY = this.panY;
},
onDrag(e) {
if (!this.isDragging || this.zoomLevel <= 1) return;
const clientX = e.touches ? e.touches[0].clientX : e.clientX;
const clientY = e.touches ? e.touches[0].clientY : e.clientY;
this.panX = this.startPanX + (clientX - this.dragStartX);
this.panY = this.startPanY + (clientY - this.dragStartY);
},
stopDrag() {
this.isDragging = false;
},
toggleZoom() {
if (this.zoomLevel > 1) {
this.zoomLevel = 1;
this.resetPan();
} else {
this.zoomLevel = 1.5;
}
},
nextImg() { this.zoomLevel = 1; this.resetPan(); this.lightboxIndex = (this.lightboxIndex + 1) % this.validImages.length; },
prevImg() { this.zoomLevel = 1; this.resetPan(); this.lightboxIndex = (this.lightboxIndex - 1 + this.validImages.length) % this.validImages.length; }
}">
= 0 ? validImages.indexOf(activeImg) : 0)">
/
Bagikan:
{ window.open('https://www.instagram.com/', '_blank', 'noopener,noreferrer'); window.toast.show('Tautan disalin — tempel di Instagram', 'success') })"
class="flex items-center gap-3 px-3 py-2.5 rounded-xl text-sm font-medium text-brand-700 hover:bg-brand-50 transition-colors">
Instagram
X (Twitter)
WhatsApp
Facebook
Bak air multifungsi persegi panjang
0.0
★
|
0 Penilaian
|
2 Terjual
Rp 107.000
KategoriBak Air
Stok
SKUBUC0001
Jumlah
Deskripsi Produk
Ember serbaguna berbentuk persegi panjang dengan desain modern.Dibuat dari bahan plastik berkualitas yang kokoh dan ringan, ember ini memiliki kapasitas besar sehingga cocok untuk berbagai kebutuhan rumah tangga seperti mengepel lantai, mencuci kain pel, merendam pakaian, atau menyimpan perlengkapan kebersihan. Bagian pegangan dirancang ergonomis agar nyaman digenggam dan mudah dipindahkan, sementara sudut-sudutnya yang membulat memberikan tampilan yang elegan sekaligus memudahkan proses pembersihan. Desain minimalis membuat ember ini cocok digunakan di rumah, kantor, maupun area komersial.
Keunggulan:
- Desain modern dan minimalis.
- Material plastik tebal, kuat, dan tahan lama.
- Kapasitas besar untuk berbagai keperluan.
- Pegangan ergonomis, nyaman dibawa.
- Mudah dibersihkan dan tidak mudah menyerap noda.
- Cocok untuk kebutuhan rumah tangga maupun profesional.
Spesifikasi
| Kategori | Bak Air |
| SKU | BUC0001 |
| Total Stok Yang Tersedia | 60 |
0.0
☆
☆
☆
☆
☆
0 Ulasan
5★
0
4★
0
3★
0
2★
0
1★
0
Belum ada ulasan
Jadilah yang pertama memberikan ulasan untuk produk ini.