Passer au contenu

Panier

Votre panier est vide

Sweater Hari Om

(5.0)
Prix de vente€109.00
Variante:Hari Om
Größe:

Model is 170 cm tall and wears size M.

Avis des clients

Basé sur 4 avis
100%
(4)
0%
(0)
0%
(0)
0%
(0)
0%
(0)
S
Sabine C.
Pull parfait

J'adore ce pull! Super design et très agréable à porter

T
Tessa R.
Absolument ravie

J'aime tellement ce pull. Il est comme décrit légèrement oversize. Super matériau, super ajustement, super couleur. J'ai déjà quelques articles de Hey Honey et je suis toujours ravie

K
Katharina F.
J'adore le pull

Super agréable et confortable. Super matériau et coupe oversize. Peut être parfaitement associé avec les leggings "Hey Honey".

A
Alexandra C.
J'adore le style

Matériaux agréables, super ajustement ❤️ La livraison était très rapide

{ this.findTriggerElements(); this.setupEventListeners(); this.setupScrollObserver(); this.setupVariantChangeListener(); this.adjustPosition(); this.startVisibilityCheck(); if (this.forceVisible) { setTimeout(() => { this.classList.add('force-visible'); }, this.showDelay); } window.addEventListener('resize', this.adjustPosition.bind(this));window.addEventListener('scroll', this.adjustPosition.bind(this)); }, 100); } startVisibilityCheck() { this.checkInterval = setInterval(() => { if (!this.isManuallyHidden) { this.checkTriggerVisibility(); } }, 500); } checkTriggerVisibility() { if (this.triggerElements.length === 0) { this.showSticky(); return; } let anyVisible = false; this.triggerElements.forEach(element => { const rect = element.getBoundingClientRect(); const isVisible = rect.top >= 0 && rect.bottom <= window.innerHeight; if (isVisible) { anyVisible = true; } }); if (this.forceVisible) { this.showSticky(); } else if (anyVisible) { this.hideSticky(); } else { this.showSticky(); } } adjustPosition() { const rect = this.getBoundingClientRect(); const viewportWidth = window.innerWidth; const viewportHeight = window.innerHeight; if (rect.right > viewportWidth - 10) { this.style.left = `${Math.max(10, viewportWidth - rect.width - 10)}px`; } if (rect.bottom > viewportHeight - 10) { this.style.top = `${Math.max(10, viewportHeight - rect.height - 10)}px`; } const currentLeft = parseInt(this.style.left) || 0; const currentTop = parseInt(this.style.top) || 0; if (currentLeft< 10) { this.style.left = '10px'; } if (currentTop < 10) { this.style.top = '10px'; } } findTriggerElements() { const selectors = [ 'button[name="add"]', '[data-product-form] button[type="submit"]', '.product-form button[type="submit"]', '.btn.product-form__cart-submit', 'button[data-action="add-to-cart"]', '.add-to-cart-button', '.product-form__add-button', 'form[action*="/cart/add"] button[type="submit"]', 'input[name="add"]', '.shopify-payment-button', '.product-form__buttons button', '.product__add-to-cart', '[data-add-to-cart]', '.btn--add-to-cart' ]; for (const selector of selectors) { const elements = document.querySelectorAll(selector); if (elements.length > 0) { this.triggerElements = Array.from(elements).filter(el => { return el.offsetParent !== null && !el.closest('.ai-sticky-cart-azgi1a1p2zitom3a0waigenblock85c3e1agvbnnk'); });if (this.triggerElements.length > 0) { console.log('Found trigger elements:', selector, this.triggerElements); break; } } } if (this.triggerElements.length === 0) { console.warn('No add to cart trigger elements found. Sticky cart will be visible based on settings.'); if (!this.forceVisible) { setTimeout(() => this.showSticky(), 2000); } } } setupEventListeners() { const addToCartButton = this.querySelector('.ai-sticky-cart-button-azgi1a1p2zitom3a0waigenblock85c3e1agvbnnk'); const closeButton = this.querySelector('.ai-sticky-cart-close-azgi1a1p2zitom3a0waigenblock85c3e1agvbnnk'); if (addToCartButton) { addToCartButton.addEventListener('click', this.handleAddToCart.bind(this)); } if (closeButton) { closeButton.addEventListener('click', this.hideManually.bind(this)); } } setupScrollObserver() { if (this.triggerElements.length === 0 && !this.forceVisible) return; if (this.observer) { this.observer.disconnect(); } this.observer = new IntersectionObserver( (entries) => { if (this.forceVisible) return; let anyVisible = false; entries.forEach((entry) => { if (entry.isIntersecting && entry.intersectionRatio > 0.1) { anyVisible = true; } }); if (!this.isManuallyHidden) { if (anyVisible) { this.hideSticky(); } else { this.showSticky(); } } }, { threshold: [0, 0.1, 0.5, 1], rootMargin: '-50px 0px -50px 0px' } ); this.triggerElements.forEach(element => { this.observer.observe(element); }); } setupVariantChangeListener() { document.addEventListener('variant:change', (event) => { if (event.detail && event.detail.variant) { this.updateVariant(event.detail.variant); } }); const variantSelectors = document.querySelectorAll('variant-radios, variant-selects, .product-form__input'); variantSelectors.forEach(selector => { selector.addEventListener('change', () => { setTimeout(() => { this.updateFromPage(); }, 100); }); });document.addEventListener('change', (event) => { if (event.target.name && (event.target.name.includes('id') || event.target.name.includes('option'))) { setTimeout(() => { this.updateFromPage(); }, 100); } }); } updateFromPage() { const form = document.querySelector('form[action*="/cart/add"]'); if (form) { const variantId = form.querySelector('[name="id"]')?.value; if (variantId && variantId !== this.variantId) { this.variantId = variantId; this.dataset.variantId = variantId; this.updatePriceFromForm(form); } } } updatePriceFromForm(form) { const priceElement = this.querySelector('.ai-sticky-cart-price-azgi1a1p2zitom3a0waigenblock85c3e1agvbnnk'); const buttonElement = this.querySelector('.ai-sticky-cart-button-azgi1a1p2zitom3a0waigenblock85c3e1agvbnnk'); const formPriceSelectors = [ '.price', '[data-price]', '.product-price', '.price__current', '.product__price', '.money' ]; let formPriceElement = null; for (const selector of formPriceSelectors) { formPriceElement = form.querySelector(selector) || document.querySelector(selector); if (formPriceElement) break; } if (priceElement && formPriceElement) { priceElement.innerHTML = formPriceElement.innerHTML; } const formButton = form.querySelector('button[type="submit"], input[type="submit"]'); if (buttonElement && formButton) { if (formButton.disabled) { buttonElement.disabled = true; buttonElement.textContent = 'Sold Out'; } else { buttonElement.disabled = false; buttonElement.textContent = 'Add to Cart'; } } } updateVariant(variant) { this.variantId = variant.id; this.dataset.variantId = variant.id; const priceElement = this.querySelector('.ai-sticky-cart-price-azgi1a1p2zitom3a0waigenblock85c3e1agvbnnk'); const buttonElement = this.querySelector('.ai-sticky-cart-button-azgi1a1p2zitom3a0waigenblock85c3e1agvbnnk'); if (priceElement) { let priceHTML = ''; if (variant.compare_at_price > variant.price) { priceHTML += `${this.formatMoney(variant.compare_at_price)}`; } priceHTML += this.formatMoney(variant.price); priceElement.innerHTML = priceHTML; } if (buttonElement) { if (variant.available) { buttonElement.disabled = false; buttonElement.textContent = 'Add to Cart'; } else { buttonElement.disabled = true; buttonElement.textContent = 'Sold Out'; } } } formatMoney(cents) { return new Intl.NumberFormat('fr', { style: 'currency', currency: 'EUR' }).format(cents / 100); } async handleAddToCart() { const button = this.querySelector('.ai-sticky-cart-button-azgi1a1p2zitom3a0waigenblock85c3e1agvbnnk'); const originalText = button.textContent; button.disabled = true; button.textContent = 'Adding...'; try { const formData = new FormData(); formData.append('id', this.variantId); formData.append('quantity', 1); const response = await fetch('/cart/add.js', { method: 'POST', body: formData }); if (response.ok) { const result = await response.json(); document.dispatchEvent(new CustomEvent('cart:item-added', { detail: { variant: result } }));document.dispatchEvent(new CustomEvent('cart:refresh')); const cartDrawer = document.querySelector('cart-drawer'); if (cartDrawer && typeof cartDrawer.open === 'function') { cartDrawer.open(); } button.textContent = 'Added!'; setTimeout(() => { button.textContent = originalText; button.disabled = false; }, 2000); } else { throw new Error('Failed to add to cart'); } } catch (error) { console.error('Error adding to cart:', error); button.textContent = originalText; button.disabled = false; } } showSticky() { if (!this.isManuallyHidden) { this.classList.add('visible'); this.isVisible = true; setTimeout(() => this.adjustPosition(), 50); } } hideSticky() { if (!this.forceVisible) { this.classList.remove('visible'); this.isVisible = false; } } hideManually() { this.classList.remove('visible', 'force-visible'); this.isVisible = false; this.isManuallyHidden = true; } disconnectedCallback() { if (this.observer) { this.observer.disconnect(); } if (this.checkInterval) { clearInterval(this.checkInterval); } window.removeEventListener('resize', this.adjustPosition.bind(this)); window.removeEventListener('scroll', this.adjustPosition.bind(this)); } } customElements.define('sticky-add-to-cart-azgi1a1p2zitom3a0waigenblock85c3e1agvbnnk', StickyAddToCartazgi1a1p2zitom3a0waigenblock85c3e1agvbnnk); })();