Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe
Postiços De cabelo de seda com clipe

Postiços De cabelo de seda com clipe

Preço
R$199.98
R$149.98
Salvar  R$50.00
ESTILO
Por favor selecione um estilo
Quantidade
Envio super rápido
Retornos grátis
Atendimento 24/7
Pagamentos seguros

📣 Enviaremos um e-mail de confirmação do pedido depois que ele for pago com sucesso. Lembre-se de verificar seus e-mails prontamente.

📩 Nossos e-mails de notificação de pedido podem ser confundidos com spam, portanto, certifique-se de verificar seu spam se não receber um e-mail após fazer seu pedido.

✈️ Devido aos pacotes internacionais, nossos itens chegarão dentro de 10 a 30 dias após a compra.

Coloque e vá 10 segundos de instalação do topper de cabelo, bom para dias ocupados

Não cai mais, dura muito tempo

Mude seu penteado a qualquer hora e em qualquer lugar

Penteados da moda versáteis

 
 
Customer Reviews
Here are what our customers say.
Deixe seu comentário
Comentário
você chegou ao fundo
O mais novo
O mais adorado
classificações mais altas
Avaliações mais baixas
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.