{
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/6a59b436-66e8-4457-84c3-4638b1cb3ecb.webp',
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/6a59b436-66e8-4457-84c3-4638b1cb3ecb.webp';
const extraImgs = JSON.parse('[\u0022\\\/storage\\\/products\\\/6a59b436-66e8-4457-84c3-4638b1cb3ecb.webp\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
Sapu lantai stainless frame dolpin
0.0
★
|
0 Penilaian
|
0 Terjual
Rp 137.000
KategoriSapu
Stok
SKUBRF6834.
Jumlah
Deskripsi Produk
Sapu lantai berkualitas yang dirancang untuk membersihkan debu, rambut, pasir, dan kotoran sehari-hari dengan lebih efektif. Dilengkapi bulu sapu yang rapat, lentur, dan awet sehingga mampu menyapu berbagai jenis permukaan lantai tanpa merusaknya. Kepala sapu yang lebar mempercepat proses pembersihan, sementara gagang kokoh memberikan kenyamanan saat digunakan.
Keunggulan Produk
- Bulu sapu rapat dan fleksibel untuk hasil sapuan lebih maksimal.
- Kepala sapu lebar sehingga area yang dibersihkan lebih luas.
- Desain pipih memudahkan menjangkau sudut ruangan dan bawah meja atau lemari.
- Gagang kuat, ringan, dan nyaman digenggam.
- Cocok untuk penggunaan sehari-hari di rumah maupun tempat usaha.
- Mudah dibersihkan dan tahan lama.
Spesifikasi
Jenis: Sapu lantai serbaguna
Material gagang: Stainless steel
Material kepala: Plastik PP
Material bulu: Serat PET berkualitas
Pilihan warna: Biru dan Pink
Penggunaan: Lantai keramik, granit, marmer, vinyl, kayu laminasi, semen halus, dan berbagai permukaan lantai lainnya.
Cocok Digunakan Untuk
Rumah, apartemen, dan kos.
Kantor dan ruang kerja.
Sekolah dan fasilitas umum.
Toko, restoran, dan gudang.
Membersihkan ruang tamu, kamar tidur, dapur, teras, maupun area komersial.
Sapu lantai ini merupakan pilihan praktis untuk menjaga kebersihan ruangan setiap hari. Dengan bulu yang rapat dan kepala sapu yang lebar, proses menyapu menjadi lebih cepat, ringan, dan efektif dalam mengangkat debu serta kotoran.
Spesifikasi
| Kategori | Sapu |
| SKU | BRF6834. |
| Total Stok Yang Tersedia | 120 |
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.