08-20" Luxury Layered Natural Hair Topper

$26.99  - $38.99
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = 'd32ff98d-e1ef-41de-b214-7624065cfdaf'; this.isRTL = SPZ.win.document.dir === 'rtl'; this.isAddingToCart_ = false; // 加购中状态 } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { this.init(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const data = await this.getDiscountList(); this.renderApiData_(data); } async getDiscountList() { const productId = 'e8fe0940-2688-480b-b5d9-4d5ada9f06e3'; const variantId = this.variant_id; const productType = 'default'; const reqBody = { product_id: productId, variant_id: variantId, discount_method: "DM_AUTOMATIC", customer: { customer_id: window.C_SETTINGS.customer.customer_id, email: window.C_SETTINGS.customer.customer_email }, product_type: productType } const url = `/api/storefront/promotion/display_setting/text/list`; const data = await this.xhr_.fetchJson(url, { method: "post", body: reqBody }).then(res => { return res; }).catch(err => { this.setContainerDisabled(false); }) return data; } async renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 this.renderApiData_(data); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if (parentDiv) { parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } else { console.log('automatic_discount_container is null'); } } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, { ...renderData, isRTL: this.isRTL }) .then((el) => { this.clearDom(); return el; }); } setContainerDisabled(isDisable) { const automaticDiscountEl = document.querySelector('.automatic_discount_container_outer'); if(isDisable) { automaticDiscountEl.setAttribute('disabled', ''); } else { automaticDiscountEl.removeAttribute('disabled'); } } // 绑定事件 bindEvent_() { window.addEventListener('click', (e) => { let containerNodes = document.querySelectorAll(".automatic-container .panel"); let bool; Array.from(containerNodes).forEach((node) => { if(node.contains(e.target)){ bool = true; } }) // 是否popover面板点击范围 if (bool) { return; } if(e.target.classList.contains('drowdown-icon') || e.target.parentNode.classList.contains('drowdown-icon')){ return; } const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { node.classList.remove('open-dropdown'); }) // 兼容主题 this.toggleProductSticky(true); }) // 监听变体变化 document.addEventListener('dj.variantChange', async(event) => { // 重新渲染 const variant = event.detail.selected; if (variant.product_id == 'e8fe0940-2688-480b-b5d9-4d5ada9f06e3' && variant.id != this.variant_id) { this.variant_id = variant.id; this.renderDiscountList(); } }); } // 兼容主题 handleFitTheme() { // top 属性影响抖动 let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ productInfoEl.classList.add('force-top-auto'); } } // 兼容 wind/flash /hero 主题 (sticky属性影响 popover 层级展示, 会被其他元素覆盖) toggleProductSticky(isSticky) { let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ if(isSticky) { // 还原该主题原有的sticky属性值 productInfoEl.classList.remove('force-position-static'); return; } productInfoEl.classList.toggle('force-position-static'); } } setupAction_() { this.registerAction('handleDropdown', (invocation) => { const discount_id = invocation.args.discount_id; const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { if(node.getAttribute('id') != `automatic-${discount_id}`) { node.classList.remove('open-dropdown'); } }) const $discount_item = document.querySelector(`#automatic-${discount_id}`); $discount_item && $discount_item.classList.toggle('open-dropdown'); // 兼容主题 this.toggleProductSticky(); }); // 加购事件 this.registerAction('handleAddToCart', (invocation) => { // 阻止事件冒泡 const event = invocation.event; if (event) { event.stopPropagation(); event.preventDefault(); } // 如果正在加购中,直接返回 if (this.isAddingToCart_) { return; } const quantity = invocation.args.quantity || 1; this.addToCart(quantity); }); } // 加购方法 async addToCart(quantity) { // 设置加购中状态 this.isAddingToCart_ = true; const productId = 'e8fe0940-2688-480b-b5d9-4d5ada9f06e3'; const variantId = this.variant_id; const url = '/api/cart'; const reqBody = { product_id: productId, variant_id: variantId, quantity: quantity }; try { const data = await this.xhr_.fetchJson(url, { method: 'POST', body: reqBody }); // 触发加购成功提示 this.triggerAddToCartToast_(); return data; } catch (error) { error.then(err=>{ this.showToast_(err?.message || err?.errors?.[0] || 'Unknown error'); }) } finally { // 无论成功失败,都重置加购状态 this.isAddingToCart_ = false; } } showToast_(message) { const toastEl = document.querySelector("#apps-match-drawer-add_to_cart_toast"); if (toastEl) { SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } } // 触发加购成功提示 triggerAddToCartToast_() { // 如果主题有自己的加购提示,则不显示 const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy'); if (themeAddToCartToastEl) return; // 显示应用的加购成功提示 this.showToast_("Added successfully"); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomProductAutomatic);
class SpzCustomDiscountBundle extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() {} unmountCallback() {} setupAction_() { this.registerAction('showAddToCartToast', () => { const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy') if(themeAddToCartToastEl) return const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast') SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast("Added successfully"); }); }); } buildCallback() { this.setupAction_(); }; } SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle);
HAIR COLOR:  Light Blonde
Length:  8 inch
Quantity
people are viewing this right now

Description

Description


 

PRODUCT DETAIL

Collection: Hair topper

Product Type: Hair Piece 

Last Time: One more year 

Base Dimensions: 4.5" x 5.5"

Hair Length: 8/ 10/ 14/ 20 (inch)

 


 

DETAILED FEATURES

  • Easy clip-on, no damage to your hair
  • Top of the head extensions
  • High-quality hair that can be styled
  • Can be parted in any direction
  • Comfortable and unnoticeable
  • Lightweight and natural-looking 

WHO IT'S FOR

  • Beginning stages of hair loss
  • Root growth coverage between coloring
  • Gray hair coverage 
  • Hair thinning coverage
  • Predominant part coverage

SPECIFICATIONS

  • 4.5" x 5.5" 
  • 4 clips lined with silicone that prevents slipping and sliding

HOW TO USE

  • Clip it on top of the head 

Using Tips:

Like our hair, wigs also require regular care.

The hair part line is flexible and it is easy to change with a comb and hair spray.
You can use the air duct and comb to blow the hair fluffy before use it. It will be more natural after taking care of it.

Can be permed at low temperatures.

Do not expose the hair to too much heat, chemicals as this can damage the texture of your hair, always consult a professional.

 

 

FAQ:
Q1. Remy Natural Hair?
A: Testing by Burning- Human hair will show white smoke while burning and turn to ash; Synthetic hair will show black smoke and be a sticky ball after burning.

Q2: Do I Need To Pay Tax?
A: Not need to pay tax.

Q3: Can I Straighten /Style The Hair With Flatiron/Curler?
A: Yes, so you can straighten/style it with flatiron/curler, and you can dye it as well. It is noteworthy that you need to pay attention to the time. Don’t Overtime.

Q4: How long it last?
A: For hair in such high quality, it may last for more than one year under proper care and nurse. Use high-quality shampoo and conditioners which will be able to make your hair soft and shiny. Try to use some gel and spray styling products to keep your hair in its style.

Q5. Return/Refund Policy?
A: For any Quality Problems, Please Contact us first and offer pictures to explain it within 7 days upon receiving your items. After we confirm, you can return the item back for Full Refund.

Q6. What is the quality of the product?

A: Good quality, healthy texture and no shedding. It looks quite full and abundant. Best choice if u want a thick and popular one. 

All authoritative certification, ensure shopping safety and product quality.

All of our products come directly from suppliers, avoiding middlemen, without extra charges.

SHIPPING & RETURN& SERVICES

SERVICE:

If you have any change of orders, please contact us for any difference before we ship it out. Length, texture, color, or part design can be changed if needed.

If you’re not satisfied or have any questions about the hair you received, please contact us first so we can work with you asap. Follow the steps below for a return or exchange:
1. Email us at service@monwigs.com with a brief description of why you'd like to return or exchange a product. Follow the instructions provided in the envelope that comes with your package.
2. All products must be shipped back in their original packaging and not have the WARRANTY TAG removed or a return/exchange will not be issued.
3. After we receive your package, allow up to 48 hours for your refund or exchange to be processed.

SHIPPING:

Orders will be shipped via express within 24-48 hours, usually, 7-15 working days to arrive. If you need other types of shipping methods, please contact us for more details.