<!doctype html><html lang="fr"><head ><meta charset="utf-8"/>
<meta name="title" content="Parfum - Adopt Parfums"/>
<meta name="description" content="Adopt, c'est une Gamme de Parfum adaptée à vos besoins à petit prix: Parfum femme, Parfum homme, Parfum mixte, etc. Adopt Parfum"/>
<meta name="robots" content="INDEX,FOLLOW"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Parfum - Adopt Parfums</title>
<link rel="stylesheet" type="text/css" media="all" href="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/css/styles.min.css" />
<script type="text/javascript" defer="defer" src="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/Adopt_Theme/js/custom.min.js"></script>
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/fonts/romie/RomieTrial-Bold.woff2" />
<link rel="apple-touch-icon" href="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/images/apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon" sizes="152x152" href="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/images/apple-touch-icon-152x152.png" />
<link rel="apple-touch-icon" sizes="167x167" href="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/images/apple-touch-icon-167x167.png" />
<link rel="apple-touch-icon" sizes="180x180" href="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/images/apple-touch-icon-180x180.png" />
<link rel="canonical" href="https://www.adopt.com/fr/parfum.html" />
<link rel="icon" type="image/x-icon" href="https://www.adopt.com/media/favicon/stores/1/Icone_Colibri_sans_cercle.png" />
<link rel="shortcut icon" type="image/x-icon" href="https://www.adopt.com/media/favicon/stores/1/Icone_Colibri_sans_cercle.png" />
<meta name="Language" content="fr" />
<meta name="google-site-verification" content="D7yu4UGB4pyxYx_hjqfNCtSZRcNU41jrdVHqlI4JEEU" />
<meta name="p:domain_verify" content="7224cec78813b4315f2f4778b06855a9"/>
<!-- Magento -->
<!--f7a2752ec384f2f093b8b272aec6d10d-->
<link rel="dns-prefetch" href="https://use.typekit.net/">
<link rel="dns-prefetch" href="https://connect.facebook.net/">
<link rel="dns-prefetch" href="https://fonts.gstatic.com/">
<link rel="dns-prefetch" href="https://googleads.g.doubleclick.net/">
<link rel="dns-prefetch" href="https://i.ytimg.com/">
<link rel="dns-prefetch" href="https://p.typekit.net/">
<link rel="dns-prefetch" href="https://static.doubleclick.net/">
<link rel="dns-prefetch" href="https://www.facebook.com/">
<link rel="dns-prefetch" href="https://www.google.com/">
<link rel="dns-prefetch" href="https://www.google-analytics.com/">
<link rel="dns-prefetch" href="https://www.googletagmanager.com/">
<link rel="dns-prefetch" href="https://www.gstatic.com/">
<link rel="dns-prefetch" href="https://www.paypal.com/">
<link rel="dns-prefetch" href="https://www.paypalobjects.com/">
<link rel="dns-prefetch" href="https://www.youtube.com/">
<link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2">
<link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2">
<link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2">
<link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2">
<link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2">
<link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2">
<link rel="prefetch" href="https://use.typekit.net/aja0eqx.css">
<link rel="dns-prefetch" href="https://www.googletagmanager.com/">
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-T7L2CFJ');</script>
<!-- End Google Tag Manager --> <div x-data="initNostoElements()" x-init="dispatchNostoInitEvent()"></div><script>
"use strict";
function initNostoElements() {
return {
nostoInitCount: 0,
dispatchNostoInitEvent() {
const self = this;
setTimeout(function() {
self.nostoInitCount++;
if (typeof nostojs === 'function') {
window.dispatchEvent(
new CustomEvent('nosto-init')
);
} else if (self.nostoInitCount <= 50) {
self.dispatchNostoInitEvent();
}
}, 50);
}
}
}</script> <script>
(function (i, s, o, g, r, a, m) {
i["abtiming"] = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
})(window, document, "script", "//try.abtasty.com/fe00c2931023a861967a43fcccc5a369.js");</script> <script type="text/javascript">(function(){(function(e,r){var t=document.createElement("link");t.rel="preconnect";t.as="script";var n=document.createElement("link");n.rel="dns-prefetch";n.as="script";var i=document.createElement("script");i.id="spcloader";i.type="text/javascript";i["async"]=true;i.charset="utf-8";var o="https://sdk.privacy-center.org/"+e+"/loader.js?target_type=notice&target="+r;if(window.didomiConfig&&window.didomiConfig.user){var a=window.didomiConfig.user;var c=a.country;var d=a.region;if(c){o=o+"&country="+c;if(d){o=o+"®ion="+d}}}t.href="https://sdk.privacy-center.org/";n.href="https://sdk.privacy-center.org/";i.src=o;var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(t,s);s.parentNode.insertBefore(n,s);s.parentNode.insertBefore(i,s)})("0a5eb9ca-be90-42d6-adc4-0dce84a34797","wPNqbP2q")})();</script> <!-- Google Tag Manager --><script>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://superplus.adopt.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-T7L2CFJ');</script> <!-- Google Tag Manager (noscript) --><noscript><iframe src="https://superplus.adopt.com/ns.html?id=GTM-T7L2CFJ" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><!-- End Google Tag Manager (noscript) --> <script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Adopt Parfums",
"url": "https://www.adopt.com/fr",
"description": "Découvrez l'univers Adopt : parfums, maquillage, soins et accessoires à prix doux. Une beauté made in France, accessible à tous.",
"inLanguage": "fr-FR",
"publisher": {
"@type": "Organization",
"name": "Adopt Parfums",
"logo": {
"@type": "ImageObject",
"url": "https://www.adopt.com/static/version6733/frontend/Adopt/hyva/fr_FR/images/logo.png"
}
},
"potentialAction": {
"@type": "SearchAction",
"target": "https://www.adopt.com/fr/catalogsearch/result/?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}</script> <script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"url": "https://www.adopt.com/fr/parfum.html",
"name": "Parfum - Adopt Parfums",
"description": "Adopt, c'est une Gamme de Parfum adaptée à vos besoins à petit prix: Parfum femme, Parfum homme, Parfum mixte, etc. Adopt Parfum\r\n",
"inLanguage": "fr-FR",
"isPartOf": {
"@type": "WebSite",
"url": "https://www.adopt.com/fr"
},
"datePublished": "2022-03-03",
"dateModified": "2025-12-03",
"about": {
"@type": "Thing",
"name": "Parfum"
},
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Accueil",
"item": "https://www.adopt.com/fr"
},
{
"@type": "ListItem",
"position": 2,
"name": "Parfum",
"item": "https://www.adopt.com/fr/parfum.html"
}
]
},
"primaryImageOfPage": {
"@type": "ImageObject",
"url": "https://www.adopt.com/fr/media/catalog/category/CRM_MIXMULTIPRODUIT_MIXTE_1.jpg"
}
}</script> <link rel="alternate" id="alternate-url-fr" hreflang="fr-fr" href="https://www.adopt.com/fr/parfum.html" /> <link rel="alternate" id="alternate-url-en" hreflang="en-gb" href="https://www.adopt.com/en/fragrance.html" /> <link rel="alternate" id="alternate-url-es" hreflang="es-es" href="https://www.adopt.com/es/perfume.html" /> <link rel="alternate" id="alternate-url-be-fr" hreflang="fr-be" href="https://www.adopt.com/be-fr/parfum.html" /> <link rel="alternate" id="alternate-url-be-nl" hreflang="nl-be" href="https://www.adopt.com/be-nl/parfum.html" /> <link rel="alternate" id="alternate-url-ca-fr" hreflang="fr-ca" href="https://www.adopt.com/ca-fr/parfum.html" /> <link rel="alternate" id="alternate-url-it" hreflang="it-it" href="https://www.adopt.com/it/profumo.html" /> <link rel="alternate" id="alternate-url-fr" hreflang="x-default" href="https://www.adopt.com/fr/parfum.html" /> <script>
var BASE_URL = 'https://www.adopt.com/fr' + '/';
var THEME_PATH = 'https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR';
var COOKIE_CONFIG = {
"expires": null,
"path": "\u002F",
"domain": ".www.adopt.com",
"secure": false,
"lifetime": "2592000",
"cookie_restriction_enabled": false };
var CURRENT_STORE_CODE = 'fr';
var CURRENT_WEBSITE_ID = '1';
var CURRENT_LOCALE = 'fr_FR';
window.hyva = window.hyva || {}
window.cookie_consent_groups = window.cookie_consent_groups || {}
window.cookie_consent_groups['necessary'] = true;
window.cookie_consent_config = window.cookie_consent_config || {};
window.cookie_consent_config['necessary'] = [].concat(
window.cookie_consent_config['necessary'] || [],
[
'user_allowed_save_cookie',
'form_key',
'mage-messages',
'private_content_version',
'mage-cache-sessid',
'last_visited_store',
'section_data_ids'
]
);</script> <script>
'use strict';
(function( hyva, undefined ) {
function lifetimeToExpires(options, defaults) {
const lifetime = options.lifetime || defaults.lifetime;
if (lifetime) {
const date = new Date;
date.setTime(date.getTime() + lifetime * 1000);
return date;
}
return null;
}
function generateRandomString() {
const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
length = 16;
let formKey = '',
charactersLength = allowedCharacters.length;
for (let i = 0; i < length; i++) {
formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))]
}
return formKey;
}
const sessionCookieMarker = {noLifetime: true}
const cookieTempStorage = {};
const internalCookie = {
get(name) {
const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
return v ? v[2] : null;
},
set(name, value, days, skipSetDomain) {
let expires,
path,
domain,
secure,
samesite;
const defaultCookieConfig = {
expires: null,
path: '/',
domain: null,
secure: false,
lifetime: null,
samesite: 'lax'
};
const cookieConfig = window.COOKIE_CONFIG || {};
expires = days && days !== sessionCookieMarker
? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig)
: lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires;
path = cookieConfig.path || defaultCookieConfig.path;
domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain);
secure = cookieConfig.secure || defaultCookieConfig.secure;
samesite = cookieConfig.samesite || defaultCookieConfig.samesite;
document.cookie = name + "=" + encodeURIComponent(value) +
(expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') +
(path ? '; path=' + path : '') +
(domain ? '; domain=' + domain : '') +
(secure ? '; secure' : '') +
(samesite ? '; samesite=' + samesite : 'lax');
},
isWebsiteAllowedToSaveCookie() {
const allowedCookies = this.get('user_allowed_save_cookie');
if (allowedCookies) {
const allowedWebsites = JSON.parse(unescape(allowedCookies));
return allowedWebsites[CURRENT_WEBSITE_ID] === 1;
}
return false;
},
getGroupByCookieName(name) {
const cookieConsentConfig = window.cookie_consent_config || {};
let group = null;
for (let prop in cookieConsentConfig) {
if (!cookieConsentConfig.hasOwnProperty(prop)) continue;
if (cookieConsentConfig[prop].includes(name)) {
group = prop;
break;
}
}
return group;
},
isCookieAllowed(name) {
const cookieGroup = this.getGroupByCookieName(name);
return cookieGroup
? window.cookie_consent_groups[cookieGroup]
: this.isWebsiteAllowedToSaveCookie();
},
saveTempStorageCookies() {
for (const [name, data] of Object.entries(cookieTempStorage)) {
if (this.isCookieAllowed(name)) {
this.set(name, data['value'], data['days'], data['skipSetDomain']);
delete cookieTempStorage[name];
}
}
}
};
hyva.getCookie = (name) => {
const cookieConfig = window.COOKIE_CONFIG || {};
if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null;
}
return internalCookie.get(name);
}
hyva.setCookie = (name, value, days, skipSetDomain) => {
const cookieConfig = window.COOKIE_CONFIG || {};
if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
cookieTempStorage[name] = {value, days, skipSetDomain};
return;
}
return internalCookie.set(name, value, days, skipSetDomain);
}
hyva.setSessionCookie = (name, value, skipSetDomain) => {
return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain)
}
hyva.getBrowserStorage = () => {
const browserStorage = window.localStorage || window.sessionStorage;
if (!browserStorage) {
console.warn('Browser Storage is unavailable');
return false;
}
try {
browserStorage.setItem('storage_test', '1');
browserStorage.removeItem('storage_test');
} catch (error) {
console.warn('Browser Storage is not accessible', error);
return false;
}
return browserStorage;
}
hyva.postForm = (postParams) => {
const form = document.createElement("form");
let data = postParams.data;
if (! postParams.skipUenc && ! data.uenc) {
data.uenc = btoa(window.location.href);
}
form.method = "POST";
form.action = postParams.action;
Object.keys(postParams.data).map(key => {
const field = document.createElement("input");
field.type = 'hidden'
field.value = postParams.data[key];
field.name = key;
form.appendChild(field);
});
const form_key = document.createElement("input");
form_key.type = 'hidden';
form_key.value = hyva.getFormKey();
form_key.name="form_key";
form.appendChild(form_key);
document.body.appendChild(form);
form.submit();
}
hyva.getFormKey = function () {
let formKey = hyva.getCookie('form_key');
if (!formKey) {
formKey = generateRandomString();
hyva.setCookie('form_key', formKey);
}
return formKey;
}
hyva.formatPrice = (value, showSign, options = {}) => {
const formatter = new Intl.NumberFormat(
'fr\u002DFR',
Object.assign({
style: 'currency',
currency: 'EUR',
signDisplay: showSign ? 'always' : 'auto'
}, options)
);
return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ?
formatter.formatToParts(value).map(({type, value}) => {
switch (type) {
case 'currency':
return '\u20AC' || value;
case 'minusSign':
return '- ';
case 'plusSign':
return '+ ';
default :
return value;
}
}).reduce((string, part) => string + part) :
formatter.format(value);
}
const formatStr = function (str, nStart) {
const args = Array.from(arguments).slice(2);
return str.replace(/(%+)([0-9]+)/g, (m, p, n) => {
const idx = parseInt(n) - nStart;
if (args[idx] === null || args[idx] === void 0) {
return m;
}
return p.length % 2
? p.slice(0, -1).replace('%%', '%') + args[idx]
: p.replace('%%', '%') + n;
})
}
hyva.str = function (string) {
const args = Array.from(arguments);
args.splice(1, 0, 1);
return formatStr.apply(undefined, args);
}
hyva.strf = function () {
const args = Array.from(arguments);
args.splice(1, 0, 0);
return formatStr.apply(undefined, args);
}
/**
* Take a html string as `content` parameter and
* extract an element from the DOM to replace in
* the current page under the same selector,
* defined by `targetSelector`
*/
hyva.replaceDomElement = (targetSelector, content) => {
const parser = new DOMParser();
const doc = parser.parseFromString(content, 'text/html');
const contentNode = doc.querySelector(targetSelector);
if (!contentNode) {
return;
}
hyva.activateScripts(contentNode)
document.querySelector(targetSelector).replaceWith(contentNode);
window.dispatchEvent(new CustomEvent("reload-customer-section-data"));
hyva.initMessages();
}
hyva.activateScripts = (contentNode) => {
const tmpScripts = contentNode.getElementsByTagName('script');
if (tmpScripts.length > 0) {
const scripts = [];
for (let i = 0; i < tmpScripts.length; i++) {
scripts.push(tmpScripts[i]);
}
for (let i = 0; i < scripts.length; i++) {
let script = document.createElement('script');
script.innerHTML = scripts[i].innerHTML;
document.head.appendChild(script);
scripts[i].parentNode.removeChild(scripts[i]);
}
}
return contentNode;
}
const replace = {['+']: '-', ['/']: '_', ['=']: ','};
hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]);
let currentTrap;
const focusableElements = (rootElement) => {
const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]';
return Array.from(rootElement.querySelectorAll(selector))
.filter(el => {
return el.style.display !== 'none'
&& !el.disabled
&& el.tabIndex !== -1
&& (el.offsetWidth || el.offsetHeight || el.getClientRects().length)
})
}
const focusTrap = (e) => {
const isTabPressed = e.key === 'Tab' || e.keyCode === 9;
if (!isTabPressed) return;
const focusable = focusableElements(currentTrap)
const firstFocusableElement = focusable[0]
const lastFocusableElement = focusable[focusable.length - 1]
e.shiftKey
? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault())
: document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault())
};
hyva.releaseFocus = (rootElement) => {
if (currentTrap && (!rootElement || rootElement === currentTrap)) {
currentTrap.removeEventListener('keydown', focusTrap)
currentTrap = null
}
}
hyva.trapFocus = (rootElement) => {
if (!rootElement) return;
hyva.releaseFocus()
currentTrap = rootElement
rootElement.addEventListener('keydown', focusTrap)
const firstElement = focusableElements(rootElement)[0]
firstElement && firstElement.focus()
}
hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true})
window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies())
}( window.hyva = window.hyva || {} ));</script> <script>
if (!window.IntersectionObserver) {
window.IntersectionObserver = function (callback) {
this.observe = el => el && callback(this.takeRecords());
this.takeRecords = () => [{isIntersecting: true, intersectionRatio: 1}];
this.disconnect = () => {};
this.unobserve = () => {};
}
}</script> <meta property="og:type" content="website"> <meta property="og:url" content="https://www.adopt.com/fr/parfum.html"> <meta property="og:title" content="Parfum - Adopt Parfums"> <meta property="og:description" content="Adopt, c'est une Gamme de Parfum adaptée à vos besoins à petit prix: Parfum femme, Parfum homme, Parfum mixte, etc. Adopt Parfum"> <meta property="og:image" content="https://adopt.twic.pics/media/catalog/category/CRM_MIXMULTIPRODUIT_MIXTE_1.jpg?twic=v1"> <meta name="author" content="Adopt Parfums"> <script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"url": "https://www.adopt.com/fr/parfum.html",
"name": "Parfum - Adopt Parfums",
"description": "Adopt, c'est une Gamme de Parfum adaptée à vos besoins à petit prix: Parfum femme, Parfum homme, Parfum mixte, etc. Adopt Parfum\r\n",
"inLanguage": "fr-FR",
"isPartOf": {
"@type": "WebSite",
"url": "https://www.adopt.com/fr"
},
"datePublished": "2022-03-03",
"dateModified": "2025-12-03",
"about": {
"@type": "Thing",
"name": "Parfum"
},
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Accueil",
"item": "https://www.adopt.com/fr"
},
{
"@type": "ListItem",
"position": 2,
"name": "Parfum",
"item": "https://www.adopt.com/fr/parfum.html"
}
]
},
"primaryImageOfPage": {
"@type": "ImageObject",
"url": "https://www.adopt.com/fr/media/catalog/category/CRM_MIXMULTIPRODUIT_MIXTE_1.jpg"
}
}</script> <script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "Parfum - Adopt Parfums",
"description": "Adopt, c'est une Gamme de Parfum adaptée à vos besoins à petit prix: Parfum femme, Parfum homme, Parfum mixte, etc. Adopt Parfum\r\n",
"url": "https://www.adopt.com/fr/parfum.html",
"numberOfItems": 392,
"itemListElement": [
{
"@type": "Product",
"name": "Wonderful",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_perf_wonderful_np_30ml_1_1.jpg?twic=v1/max=180",
"description": "Découvrez et commandez en ligne l'Eau de parfum 30 ml Wonderful d’Adopt créée et fabriquée en France. Expédition sous 24h. Paiement sécurisé.",
"url": "https://www.adopt.com/fr/wonderful-eau-de-parfum-30ml-8883701429849542-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/wonderful-eau-de-parfum-30ml-8883701429849542-fr.html",
"priceCurrency": "EUR",
"price": "11.95",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Midnight for her",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_perf_midnightforher_30ml_3701429847258_1.png?twic=v1/max=180",
"description": "Découvrez et commandez en ligne le Eau de parfum 30 ml Midnight for her d’Adopt créé et fabriqué en France. Expédition sous 24h. Paiement sécurisé.",
"url": "https://www.adopt.com/fr/midnight-for-her-eau-de-parfum-8883701429847258-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/midnight-for-her-eau-de-parfum-8883701429847258-fr.html",
"priceCurrency": "EUR",
"price": "11.95",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Onyx",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_perf_onyx_30ml_3701429845834_1_1.jpg?twic=v1/max=180",
"description": "Découvrez et commandez en ligne l' Eau de parfum Onyx d’Adopt créée et fabriquée en France. Expédition sous 24h. Paiement sécurisé.",
"url": "https://www.adopt.com/fr/onyx-eau-de-parfum-8883701429845476-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/onyx-eau-de-parfum-8883701429845476-fr.html",
"priceCurrency": "EUR",
"price": "11.95",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Joalia",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_perf_joalia_30ml_3701429850777_1_1.jpg?twic=v1/max=180",
"description": "Découvrez et commandez en ligne l' Eau de parfum Joalia d’Adopt créée et fabriquée en France. Expédition sous 24h. Paiement sécurisé.",
"url": "https://www.adopt.com/fr/joalia-eau-de-parfum-pailletee-8883701429850777-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/joalia-eau-de-parfum-pailletee-8883701429850777-fr.html",
"priceCurrency": "EUR",
"price": "11.95",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Trio Soft",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_multi_brumes_bundle_solaire_1_1__1.jpg?twic=v1/max=180",
"description": "Lot de 3 brumes 200 ml - Blue Lagoon, Monoï des Îles & Coco Beach",
"url": "https://www.adopt.com/fr/bundle-trio-soft-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/bundle-trio-soft-fr.html",
"priceCurrency": "EUR",
"price": "37.38",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Trio Juicy",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_multi_brumes_bundle_fruite_1_1_.jpg?twic=v1/max=180",
"description": "Lot de 3 brumes 200 ml - Fruity Shot, Coco Mango & Peachy Beachy",
"url": "https://www.adopt.com/fr/bundle-trio-juicy-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/bundle-trio-juicy-fr.html",
"priceCurrency": "EUR",
"price": "37.38",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Belle d'Orient",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_perf_belledorient_30ml_3701429848293_1_1.jpg?twic=v1/max=180",
"description": "Découvrez et commandez en ligne l'eau de parfum Belle d'Orient d’Adopt créée et fabriquée en France. Expédition sous 24h. Paiement sécurisé.",
"url": "https://www.adopt.com/fr/belle-d-orient-eau-de-parfum-8883701429848293-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/belle-d-orient-eau-de-parfum-8883701429848293-fr.html",
"priceCurrency": "EUR",
"price": "11.95",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Night Felina",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_perf_nightfelina_30ml_1_1.png?twic=v1/max=180",
"description": "Découvrez et commandez en ligne l'eau de parfum Night Felina d’Adopt créée et fabriquée en France. Expédition sous 24h. Paiement sécurisé.",
"url": "https://www.adopt.com/fr/night-felina-eau-de-parfum-8883701429848217-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/night-felina-eau-de-parfum-8883701429848217-fr.html",
"priceCurrency": "EUR",
"price": "11.95",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Dream",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_perf_dream_30ml_3701429850586_1_1.jpg?twic=v1/max=180",
"description": "Découvrez et commandez en ligne l' Eau de parfum Dream d’Adopt créée et fabriquée en France. Expédition sous 24h. Paiement sécurisé.",
"url": "https://www.adopt.com/fr/dream-eau-de-parfum-88837014298505866-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/dream-eau-de-parfum-88837014298505866-fr.html",
"priceCurrency": "EUR",
"price": "11.95",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Solaria",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_mulit_solaria_100ml_vue2__108_1.jpg?twic=v1/max=180",
"description": "Découvrez et commandez en ligne l' Eau de parfum Solaria d’Adopt créée et fabriquée en France. Expédition sous 24h. Paiement sécurisé.",
"url": "https://www.adopt.com/fr/solaria-eau-de-parfum-8883701429844899-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/solaria-eau-de-parfum-8883701429844899-fr.html",
"priceCurrency": "EUR",
"price": "11.95",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Lady Glitter- Gold edition",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_perf_ladyglitter_goldedition_30ml_3701429839178_1.jpg?twic=v1/max=180",
"description": "Découvrez et commandez en ligne eau de parfum 30 ml Lady Glitter- Gold edition d’adopt créée et fabriquée en France. Expédition sous 24h. Paiement sécurisé.",
"url": "https://www.adopt.com/fr/lady-glitter-gold-edition-eau-de-parfum-30-ml-8883701429843687-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/lady-glitter-gold-edition-eau-de-parfum-30-ml-8883701429843687-fr.html",
"priceCurrency": "EUR",
"price": "11.95",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Midnight for Her Intense",
"image": "https://adopt.twic.pics/media/catalog/product/s/t/still_perf_midnightforher_intense_50ml_3701429848606_1_1_.jpg?twic=v1/max=180",
"description": "Découvrez et commandez en ligne l' Eau de parfum 50 ml Midnight for Her Intense d’Adopt créée et fabriquée en France. Expédition sous 24h. Paiement sécurisé.",
"url": "https://www.adopt.com/fr/midnight-for-her-intense-eau-de-parfum-50-ml-3701429848606-fr.html",
"brand": {
"@type": "Brand",
"name": "Adopt Parfums"
},
"offers": {
"@type": "Offer",
"url": "https://www.adopt.com/fr/midnight-for-her-intense-eau-de-parfum-50-ml-3701429848606-fr.html",
"priceCurrency": "EUR",
"price": "19.95",
"availability": "https://schema.org/InStock"
}
}
]
}</script> <!-- Nosto Meta Tags --><meta name="nosto-version" content="7.5.0"><meta name="nosto-language" content="fr"></head><body class="website-base page-with-filter page-immersive-image page-products categorypath-parfum category-parfum page-layout-2columns-left catalog-category-view page-layout-category-full-width" id="html-body"> <script>
"use strict";
function initGenericEventDatalayer() {
return {
browsingData: false,
initGenericEvent(data) {
if (data['browsing-data']) {
this.browsingData = data['browsing-data'];
window.pageTemplate = 'page_categorie_produit';
window.env_currency = this.browsingData.env_currency;
window.dataLayer?.push({
'event': 'generic',
'env_country': this.browsingData.env_country,
'env_currency': this.browsingData.env_currency,
'env_language': this.browsingData.env_language,
'env_template': 'page_categorie_produit',
'cvar_template': 'page_categorie_produit',
'env_work': this.browsingData.env_work,
'env_version': 'desktop',
'page_cat1_id': 'cadeaux',
'page_cat1_name': 'Cadeau',
'page_cat2_id': '',
'page_cat2_name': '',
'page_cat3_id': '',
'page_cat3_name': '',
'page_content_type': 'categorie',
'page_name': window.location.pathname,
'user_logged': this.browsingData.user_logged,
'locale': this.browsingData.locale,
'user_id': this.browsingData.user_id,
'purchase_history': this.browsingData.purchase_history,
'user_gender': this.browsingData.user_gender,
'user_age': this.browsingData.user_age,
'userEmailHash': this.browsingData.userEmailHash,
'userEmailSH1': this.browsingData.userEmailSH1,
'user_identification_tool': this.browsingData.user_identification_tool,
'user_isnew': this.browsingData.user_isnew,
'user_newcustomer': this.browsingData.order_count > 0 ? 0 : 1,
'utilisateurspread': this.browsingData.utilisateurspread,
'customerEmail': this.browsingData.customerEmail,
'customerEmailSHA256': this.browsingData.customerEmailSHA256,
'phoneNumber': this.browsingData.phoneNumber,
'phoneNumberSHA256': this.browsingData.phoneNumberSHA256,
'customerName': this.browsingData.customerName,
'customerNameSHA256': this.browsingData.customerNameSHA256,
'customerLastname': this.browsingData.customerLastname,
'customerLastnameSHA256': this.browsingData.customerLastnameSHA256,
'customerBirthday': this.browsingData.customerBirthday,
'customerBirthdaySHA256': this.browsingData.customerBirthdaySHA256,
'userGender': '',
'userGenderSHA256': '',
'customerCountry': this.browsingData.customerCountry,
'customerCountrySHA256': this.browsingData.customerCountrySHA256,
'customerCity': this.browsingData.customerCity,
'customerCitySHA256': this.browsingData.customerCitySHA256,
'customerStreet': this.browsingData.customerStreet,
'customerStreetSHA256': this.browsingData.customerStreetSHA256,
'customerZipcode': this.browsingData.customerZipcode,
'customerZipcodeSHA256': this.browsingData.customerZipcodeSHA256,
})
}
}
}
}</script><div x-data="initGenericEventDatalayer()" @private-content-loaded.window.once="initGenericEvent($event.detail.data)" ></div> <script>
(function() {
const cookieName = 'social_login_tracking';
const cookie = document.cookie.split('; ').find(row => row.startsWith(cookieName + '='));
if (cookie) {
try {
const trackingData = JSON.parse(decodeURIComponent(cookie.split('=')[1]));
window.dataLayer?.push({
'event': trackingData.event,
'tunnel': trackingData.tunnel,
'typologieConnexion': trackingData.typologieConnexion
});
} catch (e) {
console.error('Error parsing social login tracking cookie:', e);
}
document.cookie = cookieName + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
}
})();</script><input name="form_key" type="hidden" value="D0IPC8luD2ezrchz" /> <noscript><section class="message global noscript border-b-2 border-blue-500 bg-blue-50 shadow-none m-0 px-0 rounded-none font-normal"><div class="container text-center"><p><strong>Javascript est désactivé dans votre navigateur.</strong> <span> Pour une meilleure expérience sur notre site, assurez-vous d’activer JavaScript dans votre navigateur.</span></p></div></section></noscript> <script>
document.body.addEventListener('touchstart', () => {}, {passive: true})</script> <div x-data="initSnackbar_CdOLA21KDpke1NPxY0KoHlwUVY7IYbaN()"> <div :class="{ 'hidden': ! show }" id="snackbar_CdOLA21KDpke1NPxY0KoHlwUVY7IYbaN" class="snackbar snackbar_CdOLA21KDpke1NPxY0KoHlwUVY7IYbaN w-[360px] h-[84px] md:w-[446px] md:h-[104px] justify-between items-start border-0 m-auto hidden transition transition-all duration-1000 ease-in-out -right-full bottom-16" style="background-image: url('https://adopt.twic.pics/media/wysiwyg/snackbar/ECOMM_SOLDESSUMMER_snack-bar_booster15_FR.png?twic=v1');box-shadow: 0 29px 42px -15px;background-clip: border-box;background-origin: border-box;background-position-x: 0;background-size: 100%;"> <a @click="sendClickEvent()" href="https://www.adopt.com/fr/soldes.html" class="flex flex-col text-white font-primary pl-24 justify-center h-full w-full"> <div class="leading-none"></div></a> <button @click="close()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="cross" version="1.1" x="0px" y="0px" viewbox="0 0 14 14" enable-background="new 0 0 14 14" xml:space="preserve" class="text-white" width="14" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13L13,1"/>
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M13,13L1,1"/>
<title/></svg>
</button></div></div><script>
setTimeout(animationSnackbar, 2000 + 1000);
function animationSnackbar() {
document.querySelector('#snackbar_CdOLA21KDpke1NPxY0KoHlwUVY7IYbaN').style.right = '20px'; }
function initSnackbar_CdOLA21KDpke1NPxY0KoHlwUVY7IYbaN() {
return {
show: false,
excludeUrls: [],
init() {
let cookieValue = hyva.getCookie('snackbar_CdOLA21KDpke1NPxY0KoHlwUVY7IYbaN'),
dateNow = new Date(),
isDateValid = true,
isUrlValid = true,
startDate = new Date('2025-07-20 00:00:00') || null,
endDate = new Date('2025-07-20 23:59:59') || null;
if (startDate) {
isDateValid = dateNow >= startDate;
}
if (isDateValid && endDate) {
isDateValid = dateNow <= endDate;
}
this.excludeUrls.forEach((url) => {
if (!isUrlValid) {
return;
}
if (window.location.pathname.includes(url)) {
isUrlValid = false;
}
});
if (!cookieValue && isDateValid && isUrlValid) {
this.show = true;
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'SOLDES15',
'action': 'Impression',
});
}
setTimeout(() => {
if (this.show) {
this.show = false;
hyva.setCookie('snackbar_CdOLA21KDpke1NPxY0KoHlwUVY7IYbaN', 1, 0.2);
}
}, 10000 + 2000 + 1000);
},
sendClickEvent() {
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'SOLDES15',
'action': 'ouverture',
});
},
close() {
hyva.setCookie('snackbar_CdOLA21KDpke1NPxY0KoHlwUVY7IYbaN', 1, 0.2);
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'SOLDES15',
'action': 'fermeture',
});
this.show = false;
},
}
}</script> <div x-data="initSnackbar_jNlWXzh5gcdRZFqiQ7xi2xizHTpato2S()"> <div :class="{ 'hidden': ! show }" id="snackbar_jNlWXzh5gcdRZFqiQ7xi2xizHTpato2S" class="snackbar snackbar_jNlWXzh5gcdRZFqiQ7xi2xizHTpato2S w-[360px] h-[84px] md:w-[446px] md:h-[104px] justify-between items-start border-0 m-auto hidden transition transition-all duration-1000 ease-in-out -right-full bottom-16" style="background-image: url('https://adopt.twic.pics/media/wysiwyg/snackbar/SNACKBAR_OFFRE_4_PARF_FR_4x.png?twic=v1');box-shadow: 0 29px 42px -15px;background-clip: border-box;background-origin: border-box;background-position-x: 0;background-size: 100%;"> <a @click="sendClickEvent()" href="https://www.adopt.com/fr/parfum.html" class="flex flex-col text-white font-primary pl-24 justify-center h-full w-full"> <div class="leading-none"></div></a> <button @click="close()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="cross" version="1.1" x="0px" y="0px" viewbox="0 0 14 14" enable-background="new 0 0 14 14" xml:space="preserve" class="text-white" width="14" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13L13,1"/>
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M13,13L1,1"/>
<title/></svg>
</button></div></div><script>
setTimeout(animationSnackbar, 2000 + 1000);
function animationSnackbar() {
document.querySelector('#snackbar_jNlWXzh5gcdRZFqiQ7xi2xizHTpato2S').style.right = '20px'; }
function initSnackbar_jNlWXzh5gcdRZFqiQ7xi2xizHTpato2S() {
return {
show: false,
excludeUrls: [],
init() {
let cookieValue = hyva.getCookie('snackbar_jNlWXzh5gcdRZFqiQ7xi2xizHTpato2S'),
dateNow = new Date(),
isDateValid = true,
isUrlValid = true,
startDate = new Date('2025-08-22 00:00:00') || null,
endDate = new Date('2025-09-16 23:59:59') || null;
if (startDate) {
isDateValid = dateNow >= startDate;
}
if (isDateValid && endDate) {
isDateValid = dateNow <= endDate;
}
this.excludeUrls.forEach((url) => {
if (!isUrlValid) {
return;
}
if (window.location.pathname.includes(url)) {
isUrlValid = false;
}
});
if (!cookieValue && isDateValid && isUrlValid) {
this.show = true;
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'OFFRE\u00204\u0020PARFUMS\u0020FR',
'action': 'Impression',
});
}
setTimeout(() => {
if (this.show) {
this.show = false;
hyva.setCookie('snackbar_jNlWXzh5gcdRZFqiQ7xi2xizHTpato2S', 1, 0.2);
}
}, 10000 + 2000 + 1000);
},
sendClickEvent() {
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'OFFRE\u00204\u0020PARFUMS\u0020FR',
'action': 'ouverture',
});
},
close() {
hyva.setCookie('snackbar_jNlWXzh5gcdRZFqiQ7xi2xizHTpato2S', 1, 0.2);
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'OFFRE\u00204\u0020PARFUMS\u0020FR',
'action': 'fermeture',
});
this.show = false;
},
}
}</script> <div x-data="initSnackbar_4y3nYUYFvYnRhlODSScFcgTfBiDKcLVb()"> <div :class="{ 'hidden': ! show }" id="snackbar_4y3nYUYFvYnRhlODSScFcgTfBiDKcLVb" class="snackbar snackbar_4y3nYUYFvYnRhlODSScFcgTfBiDKcLVb w-[360px] h-[84px] md:w-[446px] md:h-[104px] justify-between items-start border-0 m-auto hidden transition transition-all duration-1000 ease-in-out -right-full bottom-16" style="background-image: url('https://adopt.twic.pics/media/wysiwyg/snackbar/ECOMM_OFFRES_FIN_2025_Snackbar_OFFRE_ADDITIONNELLE_100ML_50ML_FR.png?twic=v1');box-shadow: 0 29px 42px -15px;background-clip: border-box;background-origin: border-box;background-position-x: 0;background-size: 100%;"> <a @click="sendClickEvent()" href="https://www.adopt.com/fr/parfum.html?contenance=100+ml" class="flex flex-col text-white font-primary pl-24 justify-center h-full w-full"> <div class="leading-none"></div></a> <button @click="close()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="cross" version="1.1" x="0px" y="0px" viewbox="0 0 14 14" enable-background="new 0 0 14 14" xml:space="preserve" class="text-white" width="14" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13L13,1"/>
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M13,13L1,1"/>
<title/></svg>
</button></div></div><script>
setTimeout(animationSnackbar, 2000 + 1000);
function animationSnackbar() {
document.querySelector('#snackbar_4y3nYUYFvYnRhlODSScFcgTfBiDKcLVb').style.right = '20px'; }
function initSnackbar_4y3nYUYFvYnRhlODSScFcgTfBiDKcLVb() {
return {
show: false,
excludeUrls: [],
init() {
let cookieValue = hyva.getCookie('snackbar_4y3nYUYFvYnRhlODSScFcgTfBiDKcLVb'),
dateNow = new Date(),
isDateValid = true,
isUrlValid = true,
startDate = new Date('2025-11-26 18:00:00') || null,
endDate = new Date('2025-11-26 23:59:59') || null;
if (startDate) {
isDateValid = dateNow >= startDate;
}
if (isDateValid && endDate) {
isDateValid = dateNow <= endDate;
}
this.excludeUrls.forEach((url) => {
if (!isUrlValid) {
return;
}
if (window.location.pathname.includes(url)) {
isUrlValid = false;
}
});
if (!cookieValue && isDateValid && isUrlValid) {
this.show = true;
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'HAPPY\u0020HOUR\u0020BW\u0020FR',
'action': 'Impression',
});
}
setTimeout(() => {
if (this.show) {
this.show = false;
hyva.setCookie('snackbar_4y3nYUYFvYnRhlODSScFcgTfBiDKcLVb', 1, 0.2);
}
}, 10000 + 2000 + 1000);
},
sendClickEvent() {
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'HAPPY\u0020HOUR\u0020BW\u0020FR',
'action': 'ouverture',
});
},
close() {
hyva.setCookie('snackbar_4y3nYUYFvYnRhlODSScFcgTfBiDKcLVb', 1, 0.2);
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'HAPPY\u0020HOUR\u0020BW\u0020FR',
'action': 'fermeture',
});
this.show = false;
},
}
}</script> <div x-data="initSnackbar_EDRryKTaUVEmOiFn3rfUAT4Eoi4qwyXd()"> <div :class="{ 'hidden': ! show }" id="snackbar_EDRryKTaUVEmOiFn3rfUAT4Eoi4qwyXd" class="snackbar background-gradient-pink-lighter m-auto hidden transition transition-all duration-1000 ease-in-out -left-full top-32" style="box-shadow: 0 29px 25px -15px"> <a @click="sendClickEvent()" class="flex gap-4" href="https://www.adopt.com/fr/black-friday.html"> <img width="24" height="24" src="https://adopt.twic.pics/media/wysiwyg/snackbar/ECOMM_OFFRES_FIN_2025_Snackbar_OFFRE_ADDITIONNELLE_CYBERMONDAY_FR.png?twic=v1/output=preview/max=48" data-twic-src="image:wysiwyg/snackbar/ECOMM_OFFRES_FIN_2025_Snackbar_OFFRE_ADDITIONNELLE_CYBERMONDAY_FR.png" data-twic-transform="max=48" alt="snackbar_logo"/><div class="flex flex-row text-lavender font-primary gap-4"><div class="leading-none"></div></div></a> <button @click="close()" style="top: 150px; left: 70px;"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="cross" version="1.1" x="0px" y="0px" viewbox="0 0 14 14" enable-background="new 0 0 14 14" xml:space="preserve" class="text-lavender" width="14" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13L13,1"/>
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M13,13L1,1"/>
<title/></svg>
</button></div> </div><script>
setTimeout(animationSnackbar, 2000 + 1000);
function animationSnackbar() {
document.querySelector('#snackbar_EDRryKTaUVEmOiFn3rfUAT4Eoi4qwyXd').style.left = '20px'; }
function initSnackbar_EDRryKTaUVEmOiFn3rfUAT4Eoi4qwyXd() {
return {
show: false,
excludeUrls: [],
init() {
let cookieValue = hyva.getCookie('snackbar_EDRryKTaUVEmOiFn3rfUAT4Eoi4qwyXd'),
dateNow = new Date(),
isDateValid = true,
isUrlValid = true,
startDate = new Date('2025-12-01 05:09:00') || null,
endDate = new Date('2025-12-01 23:59:59') || null;
if (startDate) {
isDateValid = dateNow >= startDate;
}
if (isDateValid && endDate) {
isDateValid = dateNow <= endDate;
}
this.excludeUrls.forEach((url) => {
if (!isUrlValid) {
return;
}
if (window.location.pathname.includes(url)) {
isUrlValid = false;
}
});
if (!cookieValue && isDateValid && isUrlValid) {
this.show = true;
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'CYBER\u0020MONDAY\u0020FR',
'action': 'Impression',
});
}
setTimeout(() => {
if (this.show) {
this.show = false;
hyva.setCookie('snackbar_EDRryKTaUVEmOiFn3rfUAT4Eoi4qwyXd', 1, 0.2);
}
}, 10000 + 2000 + 1000);
},
sendClickEvent() {
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'CYBER\u0020MONDAY\u0020FR',
'action': 'ouverture',
});
},
close() {
hyva.setCookie('snackbar_EDRryKTaUVEmOiFn3rfUAT4Eoi4qwyXd', 1, 0.2);
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'CYBER\u0020MONDAY\u0020FR',
'action': 'fermeture',
});
this.show = false;
},
}
}</script> <div x-data="initSnackbar_cSrMu27Q3lFnpOOWR9ErDbunbt0RMaWI()"> <div :class="{ 'hidden': ! show }" id="snackbar_cSrMu27Q3lFnpOOWR9ErDbunbt0RMaWI" class="snackbar background-gradient-pink-lighter m-auto hidden transition transition-all duration-1000 ease-in-out -left-full top-32" style="box-shadow: 0 29px 25px -15px"> <a @click="sendClickEvent()" class="flex gap-4" href="https://www.adopt.com/fr/jeu-de-noel"> <img width="24" height="24" src="https://adopt.twic.pics/media/wysiwyg/snackbar/ECOMM_JEU_NOEL_2025_Snackbar_FR_4x.png?twic=v1/output=preview/max=48" data-twic-src="image:wysiwyg/snackbar/ECOMM_JEU_NOEL_2025_Snackbar_FR_4x.png" data-twic-transform="max=48" alt="snackbar_logo"/><div class="flex flex-row text-lavender font-primary gap-4"><div class="leading-none"></div></div></a> <button @click="close()" style="top: 150px; left: 70px;"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="cross" version="1.1" x="0px" y="0px" viewbox="0 0 14 14" enable-background="new 0 0 14 14" xml:space="preserve" class="text-lavender" width="14" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13L13,1"/>
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M13,13L1,1"/>
<title/></svg>
</button></div> </div><script>
setTimeout(animationSnackbar, 2000 + 1000);
function animationSnackbar() {
document.querySelector('#snackbar_cSrMu27Q3lFnpOOWR9ErDbunbt0RMaWI').style.left = '20px'; }
function initSnackbar_cSrMu27Q3lFnpOOWR9ErDbunbt0RMaWI() {
return {
show: false,
excludeUrls: [],
init() {
let cookieValue = hyva.getCookie('snackbar_cSrMu27Q3lFnpOOWR9ErDbunbt0RMaWI'),
dateNow = new Date(),
isDateValid = true,
isUrlValid = true,
startDate = new Date('2025-12-02 00:00:00') || null,
endDate = new Date('2025-12-31 23:59:59') || null;
if (startDate) {
isDateValid = dateNow >= startDate;
}
if (isDateValid && endDate) {
isDateValid = dateNow <= endDate;
}
this.excludeUrls.forEach((url) => {
if (!isUrlValid) {
return;
}
if (window.location.pathname.includes(url)) {
isUrlValid = false;
}
});
if (!cookieValue && isDateValid && isUrlValid) {
this.show = true;
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'JACKPOT\u0020NOEL\u0020FR',
'action': 'Impression',
});
}
setTimeout(() => {
if (this.show) {
this.show = false;
hyva.setCookie('snackbar_cSrMu27Q3lFnpOOWR9ErDbunbt0RMaWI', 1, 0.2);
}
}, 10000 + 2000 + 1000);
},
sendClickEvent() {
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'JACKPOT\u0020NOEL\u0020FR',
'action': 'ouverture',
});
},
close() {
hyva.setCookie('snackbar_cSrMu27Q3lFnpOOWR9ErDbunbt0RMaWI', 1, 0.2);
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'JACKPOT\u0020NOEL\u0020FR',
'action': 'fermeture',
});
this.show = false;
},
}
}</script> <div x-data="initSnackbar_DN8l3bLiASwGB6EPbfHVLr4egqsG2NLe()"> <div :class="{ 'hidden': ! show }" id="snackbar_DN8l3bLiASwGB6EPbfHVLr4egqsG2NLe" class="snackbar background-gradient-pink-lighter m-auto hidden transition transition-all duration-1000 ease-in-out -left-full top-32" style="box-shadow: 0 29px 25px -15px"> <a @click="sendClickEvent()" class="flex gap-4" href="https://www.adopt.com/be-fr/jeu-de-noel"> <img width="24" height="24" src="https://adopt.twic.pics/media/wysiwyg/snackbar/ECOMM_JEU_NOEL_2025_Snackbar_FR_4x.png?twic=v1/output=preview/max=48" data-twic-src="image:wysiwyg/snackbar/ECOMM_JEU_NOEL_2025_Snackbar_FR_4x.png" data-twic-transform="max=48" alt="snackbar_logo"/><div class="flex flex-row text-lavender font-primary gap-4"><div class="leading-none"></div></div></a> <button @click="close()" style="top: 150px; left: 70px;"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="cross" version="1.1" x="0px" y="0px" viewbox="0 0 14 14" enable-background="new 0 0 14 14" xml:space="preserve" class="text-lavender" width="14" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13L13,1"/>
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M13,13L1,1"/>
<title/></svg>
</button></div> </div><script>
setTimeout(animationSnackbar, 2000 + 1000);
function animationSnackbar() {
document.querySelector('#snackbar_DN8l3bLiASwGB6EPbfHVLr4egqsG2NLe').style.left = '20px'; }
function initSnackbar_DN8l3bLiASwGB6EPbfHVLr4egqsG2NLe() {
return {
show: false,
excludeUrls: [],
init() {
let cookieValue = hyva.getCookie('snackbar_DN8l3bLiASwGB6EPbfHVLr4egqsG2NLe'),
dateNow = new Date(),
isDateValid = true,
isUrlValid = true,
startDate = new Date('2025-12-02 00:00:00') || null,
endDate = new Date('2025-12-31 23:59:59') || null;
if (startDate) {
isDateValid = dateNow >= startDate;
}
if (isDateValid && endDate) {
isDateValid = dateNow <= endDate;
}
this.excludeUrls.forEach((url) => {
if (!isUrlValid) {
return;
}
if (window.location.pathname.includes(url)) {
isUrlValid = false;
}
});
if (!cookieValue && isDateValid && isUrlValid) {
this.show = true;
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'JACKPOT\u0020NOEL\u0020BE\u002DFR',
'action': 'Impression',
});
}
setTimeout(() => {
if (this.show) {
this.show = false;
hyva.setCookie('snackbar_DN8l3bLiASwGB6EPbfHVLr4egqsG2NLe', 1, 0.2);
}
}, 10000 + 2000 + 1000);
},
sendClickEvent() {
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'JACKPOT\u0020NOEL\u0020BE\u002DFR',
'action': 'ouverture',
});
},
close() {
hyva.setCookie('snackbar_DN8l3bLiASwGB6EPbfHVLr4egqsG2NLe', 1, 0.2);
window.dataLayer?.push({
'event': 'Snackbar',
'widget_title': 'JACKPOT\u0020NOEL\u0020BE\u002DFR',
'action': 'fermeture',
});
this.show = false;
},
}
}</script> <script>
'use strict';
(function(hyva) {
const formValidationRules = {
required(value, options, field, context) {
const el = field.element.type === 'hidden' ? createTextInputFrom(field.element) : field.element,
msg = 'Ce\u0020champ\u0020est\u0020obligatoire.';
if (el.type === 'radio' || el.type === 'checkbox') {
return (value === undefined || value.length === 0) ? msg : true;
}
el.setAttribute('required', '');
el.checkValidity();
return el.validity.valueMissing ? msg : true;
},
maxlength(value, options, field, context) {
const n = Number(options)
if (value.length > n) {
return n === 1
? hyva.strf('Please\u0020enter\u0020no\u0020more\u0020than\u00201\u0020character.')
: hyva.strf('Veuillez\u0020ne\u0020pas\u0020saisir\u0020plus\u0020de\u0020\u00250\u0020caract\u00E8res.', options)
}
return true;
},
minlength(value, options, field, context) {
const n = Number(options)
if (value.length > 0 && value.length < n) {
return n === 1
? hyva.strf('Please\u0020enter\u0020at\u0020least\u00201\u0020character.')
: hyva.strf('Veuillez\u0020saisir\u0020au\u0020moins\u0020\u00250\u0020caract\u00E8res.', options)
}
return true;
},
max(value, options, field, context) {
field.element.setAttribute('max', options);
field.element.checkValidity();
if (field.element.validity.rangeOverflow) {
return hyva.strf('Please\u0020enter\u0020a\u0020value\u0020less\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00250\u0022.', options);
}
return true;
},
min(value, options, field, context) {
field.element.setAttribute('min', options);
field.element.checkValidity();
if (field.element.validity.rangeUnderflow) {
return hyva.strf('Please\u0020enter\u0020a\u0020value\u0020greater\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00250\u0022.', options);
}
return true;
},
step(value, options, field, context) {
field.element.setAttribute('step', options);
field.element.checkValidity();
if (field.element.validity.stepMismatch) {
const val = Number(value);
const step = Number(options);
const msg = 'Please\u0020enter\u0020a\u0020valid\u0020value.\u0020The\u0020two\u0020nearest\u0020valid\u0020values\u0020are\u0020\u0022\u00250\u0022\u0020and\u0020\u0022\u00251\u0022.';
return hyva.strf(msg, Math.floor(val / step) * step, Math.ceil(val / step) * step);
}
return true;
},
pattern(value, options, field, context) {
field.element.setAttribute('pattern', options);
field.element.checkValidity();
if (field.element.validity.patternMismatch) {
return field.element.title
? hyva.strf('Please\u0020match\u0020the\u0020requested\u0020format\u003A\u0020\u00250.', field.element.title)
: 'Please\u0020match\u0020the\u0020requested\u0020format.'
}
return true;
},
email(value, options, field, context) {
const rule = /^([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*@([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*\.(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]){2,})$/i;
if (value.length > 0 && !rule.test(value)) {
return 'Saisissez\u0020un\u0020email\u0020valide.';
}
return true;
},
password(value, options, field, context) {
const rule = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/;
if (value.length > 0 && !rule.test(value)) {
return 'Please\u0020provide\u0020at\u0020least\u0020one\u0020upper\u0020case,\u0020one\u0020lower\u0020case,\u0020one\u0020digit\u0020and\u0020one\u0020special\u0020character\u0020\u0028\u0023\u003F\u0021\u0040\u0024\u0025\u005E\u0026\u002A\u002D\u0029';
}
return true;
},
equalTo(value, options, field, context) {
const dependencyField = context.fields[options].element;
if (value !== dependencyField.value) {
const dependencyFieldName =
dependencyField.label ||
dependencyField.title ||
(dependencyField.labels && dependencyField.labels[0] && dependencyField.labels[0].innerText) ||
dependencyField.name;
return hyva.strf('This\u0020field\u0020value\u0020must\u0020be\u0020the\u0020same\u0020as\u0020\u0022\u00250\u0022.', dependencyFieldName);
}
return true;
}
};
function raceSome(promises, pred) {
return new Promise((resolve, reject) => {
if (promises.length === 0) {
return resolve();
}
let settled = false, nDone = 0;
const resolveIf = v => {
if (!settled && (pred(v) || ++nDone === promises.length)) {
settled = true;
resolve(v);
}
return v;
}
promises.map(promise => {
promise.then(resolveIf).catch(reason => {
settled = true;
reject(reason)
});
return promise;
});
});
}
const INPUT_ATTRIBUTE_RULES = {min: 'min', max: 'max', required: 'required', minlength: 'minlength', maxlength: 'maxlength', step: 'step', pattern: 'pattern'}
const INPUT_TYPE_RULES = {email: 'email'}
function getRules(element) {
let rules = {};
Object.keys(INPUT_ATTRIBUTE_RULES).forEach(attrName => {
if (element.hasAttribute(attrName)) {
rules[INPUT_ATTRIBUTE_RULES[attrName]] = element.getAttribute(attrName);
}
})
if (INPUT_TYPE_RULES[element.type]) {
rules[INPUT_TYPE_RULES[element.type]] = true;
}
if (element.dataset.validate) {
try {
Object.assign(rules, JSON.parse(element.dataset.validate));
} catch (error) {
console.error('Validator error. Cannot parse data-validate attribute of element:\n', element);
}
}
return rules;
}
function isInvalidRuleResult(ruleState) {
return typeof ruleState === 'string' || !ruleState || (ruleState.type && ruleState.content);
}
async function runValidateFn(rule, options, value, field) {
return formValidationRules[rule](value, options, field, this);
}
function generateId() {
let id;
do {
id = `${this.idPrefix}-${++this.idSeq}`;
} while (document.getElementById(id));
return id;
}
function isVisible(element) {
const el = element.type !== 'hidden' ? element : (element.parentElement || {});
return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length)
}
function elementWillValidate(element) {
return (element.willValidate || element.type === 'hidden')
&& element.tagName !== 'BUTTON'
&& element.disabled === false
&& !(element.tagName === 'INPUT' && element.type === 'submit')
&& (element.hasAttribute('data-validate-hidden') || isVisible(element))
}
function createMessageContainer(el, fieldWrapperClassName) {
if (! el.parentElement) {
return;
}
const refocus = document.activeElement === el;
const wrapper = document.createElement('div');
wrapper.classList.add.apply(wrapper.classList, fieldWrapperClassName.split(' '));
el.parentElement.insertBefore(wrapper, el);
wrapper.appendChild(el);
refocus && document.activeElement !== el && el.focus();
return wrapper;
}
function containerNotFound(selector, el) {
const msg = `Cannot find message container element ${selector} of ${el.name}`;
console.error(msg, el);
throw msg;
}
function createTextInputFrom(el) {
const text = document.createElement('INPUT');
text.type = 'text';
text.value = el.value;
return text;
}
function classNamesToSelector(classNames) {
return classNames.split(' ')
.filter(className => className.length > 0)
.map(className => `.${className}`)
.join('')
}
function hasMessagesWrapper(field, messagesWrapperClassName) {
return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName));
}
function getMessagesWrapper(field, messagesWrapperClassName) {
if (hasMessagesWrapper.call(this, field, messagesWrapperClassName)) {
return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName));
}
const msgWrapper = document.createElement('ul');
const msgId = generateId.call(this);
msgWrapper.id = msgId;
field.element.setAttribute('aria-errormessage', msgId);
field.element.setAttribute('aria-describedby', msgId);
msgWrapper.classList.add.apply(msgWrapper.classList, messagesWrapperClassName.split(' '));
if (field.validateOnChange) {
msgWrapper.setAttribute('aria-live', 'polite');
}
this.getMessageContainer(field).appendChild(msgWrapper);
return msgWrapper;
}
function getCheckedValues(field) {
const name = field.element.name.replace(/([\\"])/g, '\\$1');
const elements = field.element.form.querySelectorAll('input[name="' + name + '"]:checked');
return Array.from(elements).map(el => el.value);
}
function escapeHtml(s) {
const div = document.createElement('div')
div.innerText = s;
return div.innerHTML;
}
function formValidation(formElement, options) {
if (formElement.tagName === 'FORM') {
formElement.setAttribute('novalidate', '');
} else {
console.error('formValidation can be initialized only on FORM element', formElement);
return;
}
options = Object.assign({
fieldWrapperClassName: 'field field-reserved',
messagesWrapperClassName: 'messages',
validClassName: 'field-success',
invalidClassName: 'field-error',
pageMessagesWrapperSelector: null,
scrollToFirstError: true,
}, options || {});
return {
state: {
valid: false,
},
fields: {},
idSeq: 0,
idPrefix: formElement.id || 'vld-msg',
setupFields(elements) {
this.fields = {};
Array.from(elements).forEach(element => {
if (elementWillValidate(element)) {
this.setupField(element);
}
});
},
setupField(element) {
if (! element) return;
const onChange = !!element.dataset.onChange;
if (elementWillValidate(element)) {
const rules = getRules(element);
if (Object.keys(rules).length > 0) {
if (this.fields[element.name]) {
Object.assign(this.fields[element.name].rules, rules);
} else {
this.fields[element.name] = {
element,
rules: rules,
validateOnChange: onChange,
state: {
valid: null,
rules: {}
}
}
}
}
} else {
console.error('Element will not validate', element);
}
},
onSubmit(event) {
if (event.target.tagName === 'FORM') {
event.preventDefault();
this.validate()
.then(() => event.target.submit())
.catch(invalidElements => {});
}
},
onChange(event) {
event.target.dataset.onChange = 'true';
if (!Object.keys(this.fields).length) {
this.setupFields(formElement.elements);
}
if (!Object.keys(this.fields).includes(event.target.name)) {
this.setupField(event.target);
}
const field = this.fields[event.target.name];
this.validateField(field);
field && field.element.removeAttribute('data-on-change')
},
validateSafe() {
return new Promise(resolve => this.validate().then(() => resolve(true)).catch(() => {}))
},
validate() {
if (!Object.keys(this.fields).length || !Object.keys(this.fields).length !== formElement.elements.length) {
this.setupFields(formElement.elements);
}
return new Promise(async (resolve, reject) => {
if (formElement.elements) {
await raceSome(this.validateFields(), result => result !== true)
const invalidFields = Object.values(this.fields).filter(field => !field.state.valid);
this.state.valid = invalidFields.length === 0;
if (this.state.valid) {
resolve();
} else {
if (options.scrollToFirstError && invalidFields.length > 0) {
invalidFields[0].element.focus()
invalidFields[0].element.select && invalidFields[0].element.select();
}
reject(invalidFields.map(field => field.element));
}
}
});
},
validateFields() {
const fields = Object.values(this.fields);
fields.forEach(field => {
this.getMessageContainer(field).classList.remove(options.validClassName, options.invalidClassName)
});
return fields.map(field => this.validateField(field))
},
validateField(field) {
if (! field || ! elementWillValidate(field.element)) {
return new Promise(resolve => resolve(true))
}
let value;
if (field.element.type === 'checkbox') {
value = getCheckedValues(field);
} else if (field.element.type === 'radio') {
value = getCheckedValues(field)[0] || undefined;
} else if (field.element.tagName === 'SELECT' && field.element.multiple) {
value = Array.from(field.element.selectedOptions).map(opt => opt.value);
} else {
value = field.element.value;
}
const rules = field.rules || {};
field.state.valid = true;
this.showFieldState(field);
const fieldValidations = Object.keys(rules).filter(rule => formValidationRules[rule]).map(async rule => {
return runValidateFn.call(this, rule, rules[rule], value, field).then(result => {
field.state.rules[rule] = result;
return result;
})
});
return new Promise(resolve => {
Promise.all(fieldValidations).then(results => {
field.state.valid = !elementWillValidate(field.element) || rules.length === 0 || !results.some(isInvalidRuleResult)
this.showFieldState(field);
resolve(field.state.valid);
})
});
},
getMessagesByField(field) {
const messages = [];
const invalidRules = Object.keys(field.state.rules).filter(rule => isInvalidRuleResult(field.state.rules[rule]));
field.rules && Object.keys(field.rules).forEach((rule) => {
if (invalidRules.includes(rule)) {
const customMessage = field.element.getAttribute('data-msg-' + rule);
const message = customMessage ? customMessage : field.state.rules[rule];
const ruleOptions = JSON.parse(JSON.stringify(field.rules[rule]));
if (typeof message === 'undefined' || message === null || (typeof message !== 'string' && ! message.type)) {
messages.push(hyva.strf('Validation rule "%0" failed.', rule));
} else if (Array.isArray(ruleOptions)) {
ruleOptions.unshift(message.type ? message.content : message);
const content = hyva.strf.apply(null, ruleOptions);
messages.push(message.type ? {type: message.type, content} : content);
} else {
const content = hyva.strf(message.type ? message.content : message, ruleOptions)
messages.push(message.type ? {type: message.type, content} : content);
}
}
});
return messages;
},
/** @deprecated */
getFieldWrapper(field) {
return this.getMessageContainer(field)
},
getMessageContainer(field) {
let container;
const pageSelector = field.element.getAttribute('data-validation-container') || options.pageMessagesContainerSelector;
if (pageSelector) {
container = document.querySelector(pageSelector)
|| containerNotFound(pageSelector, field.element)
} else {
const containerSelector = classNamesToSelector(options.fieldWrapperClassName);
container = field.element.closest(containerSelector)
|| createMessageContainer(field.element, options.fieldWrapperClassName)
|| containerNotFound(containerSelector, field.element);
}
return container;
},
showFieldState(field) {
const container = this.getMessageContainer(field),
hasErrorMessages = hasMessagesWrapper.call(this, field, options.messagesWrapperClassName),
messages = this.getMessagesByField(field).map(m => {
return m.type !== 'html' ? escapeHtml(m.type ? m.content : m) : m.content;
});
container.classList.toggle(options.validClassName, field.state.valid && ! hasErrorMessages);
container.classList.toggle(options.invalidClassName, !field.state.valid || hasErrorMessages);
this.createHtmlErrorMessage(field, messages);
if (field.state.valid) {
field.element.removeAttribute('aria-invalid');
} else {
field.element.setAttribute('aria-invalid', 'true');
if (! document.activeElement) {
field.element.focus();
}
}
},
removeMessages(field, messagesClass) {
if (! hasMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName)) {
return;
}
const msgWrapper = getMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName);
const messages = msgWrapper.querySelectorAll(`[data-msg-field='${field.element.name}']`);
Array.from(messages).forEach(msg => msg.remove());
if (msgWrapper && msgWrapper.childElementCount === 0) {
field.element.removeAttribute('aria-errormessage');
field.element.removeAttribute('aria-describedby');
msgWrapper.remove();
}
},
createErrorMessage(field, messages) {
const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml)
this.createHtmlErrorMessage(field, htmlMessages);
},
createHtmlErrorMessage(field, messages) {
this.removeMessages(field, options.messagesWrapperClassName);
field.element.removeAttribute('aria-errormessage');
field.element.removeAttribute('aria-describedby');
if (!field.state.valid) {
const msgWrapper = this.addHtmlMessages(field, options.messagesWrapperClassName, messages);
field.element.setAttribute('aria-errormessage', msgWrapper.id);
field.element.setAttribute('aria-describedby', msgWrapper.id);
}
},
/** @deprecated */
createMessage(field, message) {
return this.addMessages(field, options.messagesWrapperClassName, message);
},
addMessages(field, messagesClass, messages) {
const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml)
return this.addHtmlMessages(field, messagesClass, htmlMessages);
},
addHtmlMessages(field, messagesClass, htmlMessages) {
const msgWrapper = getMessagesWrapper.call(this, field, messagesClass);
(Array.isArray(htmlMessages) ? htmlMessages : [htmlMessages]).forEach((htmlMessage) => {
const li = document.createElement('li');
li.innerHTML = htmlMessage;
li.setAttribute('data-msg-field', field.element.name);
msgWrapper.appendChild(li);
});
return msgWrapper;
},
setField(name, value) {
this.fields[name].element.value = value;
this.fields[name].element.dispatchEvent((new Event('input')));
this.validateField(this.fields[name]);
}
}
}
hyva.formValidation = formValidation;
hyva.formValidation.rules = formValidationRules;
hyva.formValidation.setInputAttributeRuleName = (attrName, ruleName) => INPUT_ATTRIBUTE_RULES[attrName] = ruleName || attrName;
hyva.formValidation.setInputTypeRuleName = (typeName, ruleName) => INPUT_TYPE_RULES[typeName] = ruleName || typeName;
hyva.formValidation.addRule = (name, validator) => formValidationRules[name] = validator;
}(window.hyva = window.hyva || {}));</script><div class="page-wrapper"><header class="page-header"> <a class="action skip sr-only focus:not-sr-only focus:absolute focus:z-40 focus:bg-white contentarea" href="#contentarea"><span> Allez au contenu</span></a> <script>
function initHeader() {
return {
isLoaded: false,
isMenuBreakpoint: window.innerWidth < 1025,
isScrolled: false,
noSearchOpenMobile: false,
searchOpen: false,
hiddenSearchClasses: ["checkout-cart-index","customer-account-login","customer-account-create","catalog-product-view","storelocator-index-index","smile_store_locator-store-search","cms-diagnostic-olfactif","cms-mw-store-locator","cms-store-locator","cms-l-univers-adopt","cms-the-adopt-universe","cms-mundo-de-adopt","cms-nos-engagements","cms-our-commitments","cms-nuestros-compromisos","cms-filiere-vanille","cms-vanilla-program","cms-programa-vainilla","cms-tendre-iris","cms-the-tendre-iris-project","category-noel-coffret-parfum","category-dia-del-padre","cms-guide-cadeaux-adopt","cms-jeu-de-noel","cms-juedo-de-navidad","cms-jeu-saint-valentin","cms-juego-de-san-valentin","cms-live-shopping","cms-programme-colibri","cms-filiere-jasmin","cms-programas-colibri","cms-jasmine-program","cms-hummingbird-programs","cms-programa-jazmin","cms-a-propos","cms-carte-wallet","noel-coffret-parfum","kerstfeest","navidad-cajas-perfume","cms-magic-touch","cms-magasin-brest-iroise","cms-cadeaugids-adopt"],
cart: {},
isImmersive: 0,
immersiveColor: '',
pageColor: '',
isAccountPage: document.body.classList.contains('account'),
baseHeaderTop: 0,
lastScrollY: 0,
scrollDirection: 'down',
isSearchHidden() {
const self = this;
let bodyClasses = document.body.classList;
this.hiddenSearchClasses.forEach(function (item) {
if (bodyClasses.contains(item)) {
self.noSearchOpenMobile = true;
}
});
},
getData(data) {
if (data.cart) {
this.cart = data.cart
}
},
clickIconHeaderEvent(label, url = null) {
window.dataLayer?.push({
'event': 'clic-icon-header',
'text': label
});
if (url) {
window.location.href = url;
}
},
init() {
if (window.pageYOffset > 0) {
this.isScrolled = true;
}
this.isSearchHidden();
this.baseHeaderTop = this.$refs.wrapper.getBoundingClientRect().top;
this.$refs.wrapper.dataset.position = this.$refs.wrapper.getBoundingClientRect().top;
this.$refs.wrapper.dataset.topBase = this.$refs.wrapper.offsetTop;
this.$refs.wrapper.dataset.heightBase = this.$refs.wrapper.getBoundingClientRect().height;
this.scroll(this.$refs);
if (this.immersiveColor) {
if (!this.isScrolled) {
this.$refs.wrapper.style.backgroundColor = this.immersiveColor
} else {
this.$refs.wrapper.style.backgroundColor = '#ffffff'
}
}
if (document.body.classList.contains('catalog-category-view')) {
document.body.style.background = this.immersiveColor
}
if (this.pageColor) {
document.body.classList.add(this.pageColor)
}
},
scroll() {
let headerTop = this.$refs.wrapper.getBoundingClientRect().top;
this.$refs.wrapper.dataset.position = headerTop;
let headerRealHeight = parseInt(this.$refs.wrapper.dataset.heightBase);
const headerPromotional = document.querySelector('.block-promotional');
const promotionalHeaderSticky = 2;
const isCategoryPage = document.body.classList.contains('catalog-category-view');
const mainContent = document.querySelector('#maincontent');
const currentScrollY = window.scrollY;
if (currentScrollY !== this.lastScrollY) {
this.scrollDirection = currentScrollY > this.lastScrollY ? 'down' : 'up';
}
this.lastScrollY = currentScrollY;
if (headerPromotional) {
if (promotionalHeaderSticky === 1) {
headerPromotional.style.maxHeight = '49.02px';
} else if (promotionalHeaderSticky === 2) {
if (window.scrollY > 20) {
if (this.scrollDirection === 'up') {
headerPromotional.style.maxHeight = '49.02px';
} else {
headerPromotional.style.maxHeight = '0';
}
} else {
headerPromotional.style.maxHeight = '49.02px';
}
} else {
if (window.scrollY > 0) {
headerPromotional.style.maxHeight = '0';
} else {
headerPromotional.style.maxHeight = '49.02px';
}
}
}
if (isCategoryPage && mainContent) {
const mainContentTop = mainContent.getBoundingClientRect().top + window.scrollY;
if (window.scrollY >= mainContentTop) {
if (this.scrollDirection === 'down') {
document.querySelector('#header').style.maxHeight = '0';
document.querySelector('#header').style.overflow = 'hidden';
window.dispatchEvent(new CustomEvent('header-height-changed', {
detail: { height: headerPromotional ? headerPromotional.offsetHeight : 0 }
}));
} else {
document.querySelector('#header').style.maxHeight = '130px';
document.querySelector('#header').style.overflow = 'visible';
const totalHeight = this.$refs.wrapper.offsetHeight;
window.dispatchEvent(new CustomEvent('header-height-changed', {
detail: { height: totalHeight }
}));
}
} else {
document.querySelector('#header').style.maxHeight = '130px';
document.querySelector('#header').style.overflow = 'visible';
}
}
if (window.scrollY * 2 >= this.$refs.wrapper.dataset.topBase) {
this.$refs.wrapper.style.position = 'fixed';
this.$refs.wrapper.style.top = '0';
this.$refs.wrapper.style.backgroundColor = '#ffffff';
this.isScrolled = true;
} else {
if (this.$refs.wrapper.dataset.immersiveColor !== "") {
this.$refs.wrapper.style.backgroundColor = this.$refs.wrapper.dataset.immersiveColor;
} else {
if (this.immersiveColor !== "") {
this.$refs.wrapper.style.backgroundColor = this.immersiveColor;
} else {
this.$refs.wrapper.style.backgroundColor = '';
}
}
this.$refs.wrapper.style.position = 'static';
this.$refs.wrapper.style.top = 'auto';
this.isScrolled = false;
}
document.querySelector('.page-wrapper').style.paddingTop = headerRealHeight + 'px';
},
toggleSearch() {
this.searchOpen = !this.searchOpen;
if (this.searchOpen) {
window.dispatchEvent(new CustomEvent('open-mini-cart'));
this.clickIconHeaderEvent('Rechercher');
this.$nextTick(function () { document.querySelector('#search').select(); });
} else {
window.dispatchEvent(new CustomEvent('close-mini-cart'));
}
},
closeSearch() {
this.searchOpen = false;
window.dispatchEvent(new CustomEvent('close-mini-cart'));
}
}
}
function initCompareHeader() {
return {
compareProducts: null,
itemCount: 0,
receiveCompareData(data) {
if (data['compare-products']) {
this.compareProducts = data['compare-products'];
this.itemCount = this.compareProducts.count;
}
}
}
}</script><div class="header-wrapper relative z-30 w-full bg-white transition-transform duration-300" :class="{'bg-white': isAccountPage}" x-data="initHeader()" @scroll.window="scroll()" x-ref="wrapper" data-immersive-color="" data-position="default" data-top-base data-height-base> <div x-data="initPromotionalHeader()" class="block-promotional flex bg-anthracite z-10 overflow-hidden relative transition-all duration-300 ease-in-out" x-cloak x-init="animate();" style="height: 49.02px; max-height: 49.02px;"><div class="flex-1 relative" id="message-promotional-carousel" data-nb-slides="4"><ul class="text-center text-tiny md:text-xxs font-medium text-white" :class="{ 'min-h-[49.02px] h-[49.02px] max-h-[49.02px]': !isLoaded }"><li x-show="!isLoaded" class="w-full px-5 md:px-7.5 flex items-center justify-center" style="height: 49.02px;"><div class="w-full h-8.5 md:h-3 skeleton-box skeleton-box--discreet"></div></li> <li class="px-8.5 md:px-16 flex items-center justify-center hidden" style="height: 49.02px;" :class="{ 'hidden': !isLoaded, 'flex': isLoaded }"><span @click="clickPromotionalHeaderEvent()"><p><a href="https://www.adopt.com/fr/livraison-retours">Livraison OFFERTE dès 35€</a></p></span></li> <li class="px-8.5 md:px-16 flex items-center justify-center hidden" style="height: 49.02px;" :class="{ 'hidden': !isLoaded, 'flex': isLoaded }"><span @click="clickPromotionalHeaderEvent()"><p><span data-teams="true">3 parfums achetés = le 4ème GRATUIT</span></p></span></li> <li class="px-8.5 md:px-16 flex items-center justify-center hidden" style="height: 49.02px;" :class="{ 'hidden': !isLoaded, 'flex': isLoaded }"><span @click="clickPromotionalHeaderEvent()"><p><a href="https://www.adopt.com/fr/newsletter/subscriber/index">Inscrivez-vous à notre newsletter et recevez -20% sur votre prochain achat</a></p></span></li> <li class="px-8.5 md:px-16 flex items-center justify-center hidden" style="height: 49.02px;" :class="{ 'hidden': !isLoaded, 'flex': isLoaded }"><span @click="clickPromotionalHeaderEvent()"><p><strong>Black Friday </strong>: En raison d’un grand nombre de commandes, les délais de livraisons peuvent être rallongés</p></span></li> <li class="px-8.5 md:px-16 flex items-center justify-center hidden" style="height: 49.02px;" :class="{ 'hidden': !isLoaded, 'flex': isLoaded }"><span @click="clickPromotionalHeaderEvent()"><p><a href="https://www.adopt.com/fr/livraison-retours">Livraison OFFERTE dès 35€</a></p></span></li> <li class="px-8.5 md:px-16 flex items-center justify-center hidden" style="height: 49.02px;" :class="{ 'hidden': !isLoaded, 'flex': isLoaded }"><span @click="clickPromotionalHeaderEvent()"><p><span data-teams="true">3 parfums achetés = le 4ème GRATUIT</span></p></span></li> <li class="px-8.5 md:px-16 flex items-center justify-center hidden" style="height: 49.02px;" :class="{ 'hidden': !isLoaded, 'flex': isLoaded }"><span @click="clickPromotionalHeaderEvent()"><p><a href="https://www.adopt.com/fr/newsletter/subscriber/index">Inscrivez-vous à notre newsletter et recevez -20% sur votre prochain achat</a></p></span></li> <li class="px-8.5 md:px-16 flex items-center justify-center hidden" style="height: 49.02px;" :class="{ 'hidden': !isLoaded, 'flex': isLoaded }"><span @click="clickPromotionalHeaderEvent()"><p><strong>Black Friday </strong>: En raison d’un grand nombre de commandes, les délais de livraisons peuvent être rallongés</p></span></li> </ul></div></div><script>
function initPromotionalHeader() {
return {
isLoaded: false,
clickPromotionalHeaderEvent() {
window.dataLayer?.push({
'event': 'clicBandeau'
});
},
animate() {
const carousel = document.querySelector('#message-promotional-carousel');
const ul = carousel.querySelector('ul');
const nbSlides = parseInt(carousel.getAttribute('data-nb-slides'));
if (nbSlides > 1) {
let currentPosition = 0;
setInterval(() => {
currentPosition -= 49.02;
ul.style.transition = 'transform 1s ease-in-out';
ul.style.transform = `translateY(${currentPosition}px)`;
if (Math.abs(currentPosition) >= (nbSlides * 49.02)) {
setTimeout(() => {
ul.style.transition = 'none';
currentPosition = 0;
ul.style.transform = `translateY(0px)`;
}, 1000);
}
}, 3000);
}
this.isLoaded = true;
}
}
}</script> <nav id="header" class="relative w-full transition-all duration-200 bg-white" @keydown.window.escape="closeSearch()" @private-content-loaded.window="getData(event.detail.data)"><!-- Contenu du header inchangé --><div class="container grid md:grid-cols-[200px_1fr_200px] grid-cols-[auto_auto_1fr] gap-x-2 md:gap-y-2 gap-y-0 items-center justify-between px-0 md:px-7.5 pb-2.25 md:pb-0 md:pt-4 pt-2.5 mt-0 menu-bp:relative h-auto"><div class="md:order-1 order-2"> <div class="shrink-0 grow-[1] menu-bp:grow-[0] menu-bp:min-w-[121px] lg:min-w-[200px] menu-bp:pb-0 md:pl-2 menu-bp:pl-0" x-data="initLogo()" x-init="init($refs)" @scroll.window="scroll($refs)" ><a class="flex items-center lg:min-w-[120px] w-fit" href="https://www.adopt.com/fr" title="Adopt Parfums : parfums, soins visage et corps et maquillage" aria-label="store logo"><img id="logo" loading="lazy" src="https://adopt.twic.pics/static/version6851/frontend/Adopt/hyva/fr_FR/images/logo.svg?twic=v1" title="Adopt Parfums : parfums, soins visage et corps et maquillage" alt="adopt-parfums-eau-de-parfum-maquillage-soin-mode" class="w-auto h-[33px] transition-all duration-200 md:h-[44px] lg:h-auto lg:min-w-[120px] lg:w-[120px] ml-4 md:ml-0" x-ref="logo" :class="{ 'md:h-[34px] lg:min-w-[101px] lg:w-[101px]': isScrolled, 'md:h-[44px] lg:min-w-[120px] lg:w-[120px]': !isScrolled }" width="189" height="64" /></a></div><script>
function initLogo() {
return {
isNavLight: 0,
immersiveColor: '',
isScrolled: false,
init($refs) {
if(window.pageYOffset > 0) {
this.isScrolled = true;
}
if(this.immersiveColor) {
if(!this.isScrolled) {
$refs.logo.src = 'https://adopt.twic.pics/static/version6851/frontend/Adopt/hyva/fr_FR/images/logo-white.svg?twic=v1'
} else {
$refs.logo.src = 'https://adopt.twic.pics/static/version6851/frontend/Adopt/hyva/fr_FR/images/logo.svg?twic=v1'
}
}
},
scroll($refs) {
this.isScrolled = window.pageYOffset > 0
if(this.immersiveColor) {
if(!this.isScrolled) {
$refs.logo.src = 'https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/images/logo-white.svg'
} else {
$refs.logo.src = 'https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/images/logo.svg'
}
}
}
}
}</script></div> <div id="search-container" class="md:col-span-1 col-span-3 md:order-2 order-4 mx-2 md:mx-0"> <script>
function initMiniSearchComponent() {
"use strict";
return {
show: false,
formSelector: "#search_mini_form",
url: "https://www.adopt.com/fr/search/ajax/suggest",
templates: {"term":{"title":"Recherches populaires","template":"Hyva_SmileElasticsuite::core\/autocomplete\/term.phtml"},"product":{"title":"Produits","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/product.phtml"},"category":{"title":"Cat\u00e9gories","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/category.phtml"},"product_attribute":{"title":"Attributs","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/product_attribute.phtml","titleRenderer":"renderEsAutocompleteTitleAttribute"},"cms_page":{"title":"Cms page","template":"Hyva_SmileElasticsuite::cms-search\/autocomplete\/cms.phtml"}},
priceFormat: {"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":"\u202f","groupLength":3,"integerRequired":false},
minSearchLength: 4,
searchResultsByType: { },
currentRequest: null,
focusInput: false,
urlUpdateTimer: null,
init() {
this.initFromUrl();
},
initFromUrl: function() {
const urlParams = new URLSearchParams(window.location.search);
const searchParam = urlParams.get('instantSearch');
if (searchParam) {
document.querySelector('#search').value = decodeURIComponent(searchParam);
this.getSearchResults();
}
},
updateUrl: function() {
if (this.urlUpdateTimer) {
clearTimeout(this.urlUpdateTimer);
}
this.urlUpdateTimer = setTimeout(() => {
let value = document.querySelector('#search').value.trim();
if (value.length > 0) {
let searchUrl = '?' + 'instantSearch' + '=' + encodeURIComponent(value);
history.pushState({}, '', searchUrl);
} else {
history.pushState({}, '', window.location.pathname);
}
}, 500);
},
getSearchResults: function () {
let value = document.querySelector('#search').value.trim();
if (value.length < parseInt(this.minSearchLength, 10)) {
this.searchResultsByType = [];
return false;
}
let url = this.url + '?' + new URLSearchParams({
q: document.querySelector('#search').value,
_: Date.now()
}).toString();
if (this.currentRequest !== null) {
this.currentRequest.abort();
}
this.currentRequest = new AbortController();
fetch(url, {
method: 'GET',
signal: this.currentRequest.signal,
}).then((response) => {
if (response.ok) {
return response.json();
}
}).then((data) => {
this.show = data.length > 0;
this.searchResultsByType = data.reduce((acc, result) => {
if (!acc[result.type]) acc[result.type] = [];
acc[result.type].push(result);
if (acc) {
if (window.matchMedia("(max-width: 1025px)").matches) {
document.body.style.overflow = 'hidden';
}
document.querySelector('#search-container').style.borderRadius = '0';
document.querySelector('#search-container').style.background = 'white';
document.querySelector('#search_autocomplete').style.display = 'block';
if (window.scrollY >= 1) {
const headerPosition = document.querySelector('#header').offsetHeight + document.querySelector('#search').offsetHeight
+ parseInt(window.getComputedStyle(document.getElementById('search-box')).getPropertyValue("margin-top")) +
parseInt(window.getComputedStyle(document.getElementById('search-box')).getPropertyValue("margin-bottom"));
if (window.matchMedia("(max-width: 1025px)").matches) {
document.querySelector('#search_autocomplete').style.height = 'calc(100vh - ' + headerPosition + 'px)';
if (document.querySelector('.block-promotional')) {
document.querySelector('.block-promotional').style.display = 'none';
}
}
} else {
const headerPosition = document.querySelector('.page-header').offsetHeight + document.querySelector('#search').offsetHeight
+ parseInt(window.getComputedStyle(document.getElementById('search-box')).getPropertyValue("margin-top")) +
parseInt(window.getComputedStyle(document.getElementById('search-box')).getPropertyValue("margin-bottom"));
if (window.matchMedia("(max-width: 1025px)").matches) {
document.querySelector('#search_autocomplete').style.height = 'calc(100vh - ' + headerPosition + 'px)';
}
}
}
return acc;
}, {});
}).catch((error) => {
;
});
},
search() {
const search = document.querySelector('#search');
let term = document.querySelector('#search').value.trim();
if (term.length >= 1) {
this.sendSearchEvent(term);
document.querySelector('#search_mini_form').submit();
}
},
clean() {
this.searchResultsByType = [];
this.show = false;
},
searchBarClickEvent() {
window.dataLayer?.push({
'event': 'searchBar_click',
'template': window.pageTemplate
});
},
autocompleteProductClickEvent() {
window.dataLayer?.push({
'event': 'searchBar_interaction',
'interaction_type': 'productclick',
'template': window.pageTemplate,
'search_term': document.querySelector('#search').value.trim(),
});
},
sendSearchEvent(term) {
window.dataLayer?.push({
'event': 'searchBar_interaction',
'interaction_type': 'search',
'template': window.pageTemplate,
'search_term': term,
});
}
}
}</script><div id="search-content" x-show="true" class=""><div class="text-black" x-data="initMiniSearchComponent()" @click.away="show = false" @click.away.outside="closeSearch()"><form class="form minisearch" id="search_mini_form" x-ref="form" action="https://www.adopt.com/fr/catalogsearch/result" @submit.prevent="search()" method="get"><div id="search-box" class="relative bg-white rounded-full"><label class="sr-only" for="search">Rechercher...</label> <input id="search" x-on:input.debounce.100ms="updateUrl()" x-on:input.debounce.250ms="getSearchResults()" x-ref="searchInput" type="search" autocomplete="off" name="q" value="" placeholder="Rechercher..." maxlength="128" class="text-anthracite-400 border border-lavender focus:border-[#5354A3] input-search w-full p-2 pl-10 leading-normal transition appearance-none bg-[#F5F5FD] rounded-full focus:outline-none focus:ring-0" @click.once="searchBarClickEvent()" @focusout="setTimeout(function(){ focusInput = false },100);" @focusin="focusInput = true" /><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="search" version="1.1" x="0px" y="0px" viewbox="0 0 23.9 23.9" enable-background="new 0 0 23.9 23.9" xml:space="preserve" class="text-anthracite-400 w-4.5 h-auto absolute left-3 top-1/2 transform -translate-y-1/2" width="17" height="20" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M9.9,19.4c5.2,0,9.4-4.2,9.4-9.4 c0-5.2-4.2-9.4-9.4-9.4c-5.2,0-9.4,4.2-9.4,9.4C0.5,15.2,4.7,19.4,9.9,19.4z"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M23.4,23.4l-6-6"/>
<title/></svg>
<template x-if="!show"><script>
document.querySelector('#search-container').style.borderRadius = '9999px';
document.querySelector('#search-container').style.background = 'none';
document.querySelector('#search_autocomplete').style.height = 'auto';
if (document.querySelector('.block-promotional')) {
document.querySelector('.block-promotional').style.display = 'flex';
}</script></template></div><div id="search_autocomplete" class="search-autocomplete w-full overflow-scroll md:overflow-visible" x-show="show" style="display:none;"><div class="absolute z-50 w-full grid grid-cols-1 md:grid-cols-2 md:p-10 md:pt-5 p-5 pt-0 gap-4 subnav-content bg-white left-0"><template x-for="searchResultByType in Object.values(searchResultsByType)"><div class="flex flex-col gap-3"><template x-if="searchResultByType.hasOwnProperty(0) && templates[searchResultByType[0].type].title && templates[searchResultByType[0].type].titleRenderer === undefined"><div class="font-semibold pt-2 uppercase text-xs-tiny md:text-xxs text-pink md:tracking-spaced-lg tracking-spaced-xs" x-text="templates[searchResultByType[0].type].title"></div></template><template x-if="searchResultByType.hasOwnProperty(0) && templates[searchResultByType[0].type].titleRenderer !== undefined"><div class="font-bold pt-2 pl-2 text-center" x-text="window[templates[searchResultByType[0].type].titleRenderer](searchResultByType)"></div></template><div class="grid md:grid-cols-2 grid-cols-1 gap-3"><template x-for="searchResult in searchResultByType"><div class="hover:bg-lilac"> <template x-if="searchResult.type == 'term'"><a class="w-full block p-2" x-bind:href="'https://www.adopt.com/fr/catalogsearch/result/?q=' + searchResult.title" :title="searchResult.title"><span class="text-sm" x-text="searchResult.title"></span> <span class="text-sm" x-text="'(' + searchResult.num_results + ')'"></span></a></template> <template x-if="searchResult.type == 'product'"><a class="search-item flex flex-row md:gap-4 gap-3 items-start" @click="autocompleteProductClickEvent()" :href="searchResult.url" :title="searchResult.title"><img class="md:w-20 w-16" :src="searchResult.image" :alt="searchResult.title"><div class="flex flex-col w-full"><span class="font-medium text-xs md:text-sm" x-text="searchResult.title"></span> <span class="uppercase font-medium text-pink text-very-tiny md:text-tiny tracking-spaced" x-text="searchResult.short_description"></span> <span class="search-item__price font-medium text-xs md:text-sm" x-html="searchResult.price"></span></div></a></template> <template x-if="searchResult.type == 'category'"><a class="w-full block" :href="searchResult.url" :title="searchResult.title"><span class="text-sm" x-text="searchResult.title"></span></a></template> <template x-if="searchResult.type == 'product_attribute'"><a class="w-full block p-2" :href="searchResult.url" :title="searchResult.title"><span class="text-sm" x-text="searchResult.title"></span> <span class="text-xs uppercase text-gray-500" x-text="searchResult.attribute_label" style="vertical-align: super;"></span></a></template><script>
function renderEsAutocompleteTitleAttribute(data)
{
data = data.filter(function(item) {
return item.type === 'product_attribute';
}).map(function(item) {
return item['attribute_label']
}).reduce(function(prev, item) {
if (item in prev) {
prev[item]++;
} else {
prev[item] = 1;
}
return prev;
}, {});
data = Object.entries(data).sort(function(item1, item2) {
return item2[1] - item1[1]
}).map(function(item) {return item[0]});
if (data.length > 2) {
data = data.slice(0, 2);
data.push('...');
}
return data.join(', ');
}</script> <template x-if="searchResult.type == 'cms_page'"><a class="w-full block p-2" :href="searchResult.url" :title="searchResult.title"><span class="text-sm" x-text="searchResult.title"></span></a></template> </div></template></div></div></template></div></div></form></div></div> </div><div class="flex items-center gap-2.5 menu-bp:gap-0.5 justify-end order-3"> <a aria-label="stores" class="inline-block no-underline p-1 md:p-2 text-lavender hover:text-anthracite-400 flex items-center justify-center" @click.prevent="clickIconHeaderEvent('Store locator', 'https://www.adopt.com/fr/store-locator')" href="https://www.adopt.com/fr/store-locator"> <span> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="pin-shop" version="1.1" x="0px" y="0px" viewbox="0 0 21.3 23.9" enable-background="new 0 0 21.3 23.9" xml:space="preserve" class="w-auto h-5.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.7,0.5c2.2,0,4.3,0.6,6.2,1.8 c4.8,3,5.2,9.2,1.3,13.7c-2.3,2.7-4.8,5.2-7.5,7.4c-2.7-2.2-5.3-4.7-7.5-7.4C-0.7,11.4-0.4,5.3,4.4,2.3C6.3,1.1,8.5,0.5,10.7,0.5z M10.7,5.2c-2.4,0-4.4,1.9-4.4,4.3c0,2.4,1.9,4.3,4.4,4.3c2.4,0,4.4-1.9,4.4-4.3C15,7.1,13.1,5.2,10.7,5.2z"/>
<title/></svg>
</span></a> <a aria-label="wishlist" class="hidden md:flex p-1 no-underline md:p-2 text-lavender hover:text-anthracite-400 items-center justify-center w-fit h-fit" href="https://www.adopt.com/fr/wishlist" @click.prevent="clickIconHeaderEvent('wishlist', 'https://www.adopt.com/fr/wishlist')"> <span> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite" version="1.1" x="0px" y="0px" viewbox="0 0 26.3 22.8" enable-background="new 0 0 26.3 22.8" xml:space="preserve" class="w-auto h-5.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="0.948" d="M13.2,22.3c-24.4-13.5-7.3-28.2,0-18.9C20.5-5.9,37.6,8.8,13.2,22.3z"/>
<title/></svg>
</span></a> <script>
function customerLocalStorage() {
let browserStorage = hyva.getBrowserStorage().getItem('mage-cache-storage');
let customer = "";
browserStorage = JSON.parse(browserStorage);
if (browserStorage) {
customer = browserStorage.customer;
} else {
customer = undefined;
}
return customer;
}
function initCustomerNav() {
return {
open: false,
immersiveColor: '',
isScrolled: false,
name: '',
isMobile: window.outerWidth < 768,
movementInterval: null,
openNav($event) {
if (this.isMobile) {
window.location.href = $event.target.href;
} else {
this.open = !this.open;
if (this.open) {
window.dispatchEvent(
new CustomEvent('open-mini-cart')
);
}
}
},
init($refs) {
if (window.pageYOffset > 0) {
this.isScrolled = true;
}
let intervalCustomer = setInterval(() => {
if (customerLocalStorage() !== undefined) {
this.name = customerLocalStorage().firstname;
clearInterval(intervalCustomer);
}
}, 500)
this.svgClean($refs);
if (!localStorage.getItem("animationLoginPellet") || (((localStorage.getItem("animationLoginPellet") / 1000) - (new Date().getTime() / 1000)) < -86400)) {
this.animationPellet();
}
},
clickIconHeaderEvent(label) {
localStorage.setItem("animationLoginPellet", new Date().getTime());
clearInterval(this.movementInterval);
window.dataLayer?.push({
'event': 'clic-icon-header',
'text': label
});
},
scroll($refs) {
this.isScrolled = window.pageYOffset > 0
},
svgClean($refs) {
if (this.$refs.reassurance) {
this.$refs.reassurance.querySelectorAll('svg').forEach(icon => {
icon.removeAttribute('width');
icon.removeAttribute('height')
})
}
if (this.$refs.nav) {
this.$refs.nav.querySelectorAll('svg').forEach(icon => {
icon.removeAttribute('width');
icon.removeAttribute('height')
})
}
},
closeNav() {
this.open = false;
window.dispatchEvent(
new CustomEvent('close-mini-cart')
);
},
movementPellet() {
this.$refs.pellet.style.top = '20%'
setTimeout(() => {
this.$refs.pellet.style.top = '70%'
}, "150");
setTimeout(() => {
this.$refs.pellet.style.top = '20%'
}, "300");
setTimeout(() => {
this.$refs.pellet.style.top = '50%'
}, "450");
},
animationPellet() {
clearInterval(this.movementInterval);
this.movementInterval = setInterval(() => {
this.movementPellet()
}, 6000)
},
sendCreateAccountEvent() {
window.dataLayer?.push({
'event': 'creer_mon_compte',
'element': 'Header - Desktop'
});
},
sendLoginEvent() {
window.dataLayer?.push({
'event': 'identifiez_vous',
'element': 'Header - Desktop'
});
}
}
}</script><div x-data="initCustomerNav()" x-init="init($refs)" @scroll.window="scroll($refs)" @resize.window.debounce.100="isMobile = window.outerWidth < 768;" class="relative inline-block"><a href="https://www.adopt.com/fr/customer/account" type="button" class="block no-button-appearance text-lavender hover:text-anthracite" @click.prevent.stop="openNav($event); clickIconHeaderEvent('Mon compte')" aria-haspopup="true" aria-expanded="true" aria-label="Mon compte"> <span class="pointer-events-none p-0.5 md:p-1.5 flex justify-center items-center"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="compte" version="1.1" x="0px" y="0px" viewbox="0 0 22.8 23.9" enable-background="new 0 0 22.8 23.9" xml:space="preserve" class="w-auto h-5.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.4,11.9c3.2,0,5.7-2.6,5.7-5.7 s-2.6-5.7-5.7-5.7C8.3,0.4,5.7,3,5.7,6.2S8.3,11.9,11.4,11.9z"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M22.3,23.4c-1.5-4.7-5.9-7.9-10.9-7.9 S2,18.7,0.5,23.4H22.3z"/>
<title/></svg>
</span> <span x-ref="pellet" class="block absolute pointer-events-none w-2 h-2 bg-pink rounded-full top-1/2 right-[15%] transition-all duration-300"></span> </a> <nav class="account-pop absolute right-0 z-40 hidden bg-white w-fit mt-2.5 text-anthracite rounded-[1.25rem] overflow-hidden w-40 md:min-w-[370px]" :class="{ 'hidden' : (!open && !isMobile) || isMobile }" @click.away.outside="closeNav()" aria-labelledby="customer-menu"> <div class="bg-white shadow-lg min-w-[28rem] w-full"><div class="px-9 py-6 flex flex-col gap-6"><div class="flex flex-col gap-2"><span class="text-4xl font-bold font-romie">Bonjour</span> <span class="text-sm">Connectez-vous et bénéficiez d'une expérience 100% personnalisée</span></div><div class="flex flex-col gap-2.5 text-xs font-medium uppercase leading-tightened"><span>Mon compte</span> <span>Mes achats</span> <span>Mes offres fidélités</span> <span>Mon profil beauté</span> </div><a class="btn btn-primary w-full min-h-[3.75rem] flex justify-center items-center" onclick="hyva.setCookie && hyva.setCookie('login_redirect', window.location.href, 0.0069444)" href="https://www.adopt.com/fr/customer/account/index" @click="sendLoginEvent" >Identifiez-vous</a></div><div class="px-9 py-6 text-white bg-cover bg-center flex flex-col gap-6" style="background-image: url('https://adopt.twic.pics/static/frontend/Adopt/hyva/fr_FR/images/backgrounds/background-colibri.png?twic=v1');"><span class="text-2xl font-romie font-bold leading-none">Nouveau client ? Rejoignez myAdopt</span> <ul class="flex flex-col gap-3"> <li class="text-sm leading-none text-white flex items-center gap-2.5"><div class="bg-white rounded-full h-4.5 w-4.5 flex justify-center items-center"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="h-2 w-2 text-lavender" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
</div>1 parfum offert le mois de votre anniversaire</li> <li class="text-sm leading-none text-white flex items-center gap-2.5"><div class="bg-white rounded-full h-4.5 w-4.5 flex justify-center items-center"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="h-2 w-2 text-lavender" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
</div>5€ offerts dès 75€ d'achat</li> </ul> <a class="btn btn-primary-white !bg-anthracite-200 hover:!bg-white w-full min-h-[3.75rem] flex justify-center items-center" onclick="hyva.setCookie && hyva.setCookie('login_redirect', window.location.href, 0.0069444)" @click="sendCreateAccountEvent" href="https://www.adopt.com/fr/customer/account/create">Créer mon compte</a> </div></div></nav></div> <a id="menu-cart-icon" @click.prevent.stop="$dispatch('toggle-cart',{});clickIconHeaderEvent('Panier')" class="relative inline-block p-1 no-underline md:p-2 text-lavender hover:text-anthracite h-10 w-10 flex items-center justify-center" href="https://www.adopt.com/fr/checkout/cart" aria-label="Panier"><span class="sr-only label">Panier</span> <span> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="bag" version="1.1" x="0px" y="0px" viewbox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="w-auto h-5.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M16.8,5.3c-0.5-2.8-2.7-4.8-5.3-4.8 c-2.6,0-4.8,2-5.3,4.8"/>
<path fill="none" stroke="currentColor" d="M10.1,5.3h3.8c5.3,0,9.6,4.3,9.6,9.6v8.6h-23v-8.6C0.5,9.6,4.8,5.3,10.1,5.3z"/>
<title/></svg>
</span> <span x-text="cart.summary_count" class="absolute top-0 right-0 hidden h-5 px-[7px] py-1.25 -mt-3 md:-mr-2 text-xs-tiny md:text-xs font-medium leading-none text-center text-white uppercase transform -translate-x-1 translate-y-1/2 rounded-full bg-pink-300" :class="{ 'hidden': !cart.summary_count, 'block': cart.summary_count }"></span></a> </div><div class="md:col-span-3 md:order-4 order-1"> <div x-data="initMenuMobile_69301d89e4790()" class="z-40 navigation-mobile menu-bp:hidden" @open-mini-cart.window="$el.style.zIndex = '20'" @close-mini-cart.window.debounce="$el.style.zIndex = '40'" ><div class="flex flex-row h-[63px]"><div class="flex justify-end"><button type="button" @click="toggleMobileMenu()" aria-label="Menu" aria-expanded="false" :aria-expanded="open" class="flex items-center justify-center cursor-pointer text-pink" :class="{ 'ml-auto': open }"><svg width="17" height="15" version="1.1" viewbox="0 0 17 15" xmlns="http://www.w3.org/2000/svg" class="block w-12 h-12 p-3 fill-current text-lavender block" :class="{ 'hidden' : open, 'block': !open, 'text-lavender': 1, 'text-white': 0 }"><g id="icons/burger-adopt" fill="none" fill-rule="evenodd"><g id="adopt" fill="currentColor"><rect width="17" height="1" rx=".5"/><rect y="7" width="13" height="1" rx=".5"/><rect y="14" width="17" height="1" rx=".5"/></g></g></svg><svg width="15.5" height="15.5" version="1.1" viewbox="0 0 15.5 15.5" xmlns="http://www.w3.org/2000/svg" class="hidden w-12 h-12 p-4 text-[#F98CDC]" :class="{ 'hidden' : !open, 'block': open }"><g transform="translate(.75 .75)" fill="currentColor" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><line x2="14" y1="14"/><line transform="matrix(-1,0,0,1,14,0)" x2="14" y1="14"/></g></svg></button></div></div><!-- mobile --><div class="nav-mobile flex flex-col z-50" :class="{'fixed left-0 w-full bg-container-lighter' : open}" @keydown.window.escape="closeMenuMobile()" ><nav class="nav-wrapper hidden w-full duration-150 ease-in-out transform transition-display border-container overflow-x-hidden overflow-y-auto flex-1" :class="{ 'hidden' : !open }" > <div class="py-3"> <a href="https://www.adopt.com/fr/diagnostic-olfactif/" class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" version="1.1" viewbox="0 0 30 30" class="w-8.75 h-auto mr-4" role="img">
<g fill-rule="evenodd">
<circle cx="15" cy="15" r="15" fill="#fdbcff"/>
<circle cx="15" cy="15" r="12" fill="#feddff"/>
<circle cx="15" cy="15" r="8" fill="#fffaff"/>
<path d="m23.269 7.2479c1.3034-0.37112 2.2518-0.22709 2.731-0.18556-0.74483 0.12371-1.0552 0.18556-1.7379 0.30927-0.68276 0.12371-2.0483 0.74225-3.1034 1.2989-1.0552 0.55669-1.4276 1.7938-1.5517 2.536-0.12414 0.74225 0.12414 1.7319-0.31034 3.7112s-2.4207 3.402-5.0276 5.2576c-1.7379 1.2371-3.1241 2.8453-4.1586 4.8246 0.53793-2.1855 0.97241-3.7937 1.3034-4.8246s1.0138-2.6803 2.0483-4.9483c0.28966 0.20618 0.51724 0.35051 0.68276 0.43298 1.2662 0.63091 1.8149 0.63617 2.3322 0.62355l0.18239-0.0042 0.09231-8.04e-4c-1.6759-0.12371-2.8552-0.98966-3.8483-1.6701-0.9931-0.68039-1.9241-1.6082-2.6069-2.9071-0.45517-0.86595-1.2207-2.0618-2.2966-3.5875 0.37241 0.16494 0.84828 0.41236 1.4276 0.74225 0.57931 0.32989 2.6069 1.1752 6.0828 2.536 0.08276-1.0721 0.2069-1.835 0.37241-2.2886 0.24828-0.68039 0.86897-1.5463 2.1724-1.6082 1.3034-0.061854 1.5517 0.49483 2.2345 0.61854s1.6759-0.49483 2.9793-0.86595z" fill="#ee5194"/>
</g>
<title/></svg>
Diagnostic parfum</a> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a href="https://www.adopt.com/fr/offres-commerciales.html" class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs" title="Offres"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Sans_titre_62_-min_2.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Sans_titre_62_-min_2.png" data-twic-bot="cover-max=74" alt="Offres" title="Offres" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Offres</a> </span> </div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a href="https://www.adopt.com/fr/calendrier-de-l-avent.html" class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs font-medium" style="color:#c70033;" title="Calendrier"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/STILL_NOEL_CALENDRIER_FAMILLE_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/STILL_NOEL_CALENDRIER_FAMILLE_1.jpg" data-twic-bot="cover-max=74" alt="Calendrier" title="Calendrier" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Calendrier</a> </span> </div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs font-medium font-medium" style="color:#c70033;" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1473' ? 0 : 'category-node-1473'; nameActiveMenu = 'No\u00EBl'; activeSubNav();" title="Noël"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/NOEL24_CRM_COFFRETS_MIX_FEMME_2_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/NOEL24_CRM_COFFRETS_MIX_FEMME_2_2.jpg" data-twic-bot="cover-max=74" alt="Noël" title="Noël" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Noël</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1473' ? 0 : 'category-node-1473'; nameActiveMenu = 'No\u00EBl'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
</div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1473', 'translate-x-0' : mobilePanelActiveId === 'category-node-1473' }"><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
<span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Noël</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/fr/noel-coffret-parfum.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/NOEL24_CRM_COFFRETS_MIX_FEMME_2_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/NOEL24_CRM_COFFRETS_MIX_FEMME_2_2.jpg" alt="Noël" title="Noël" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>Voir tout</span></a></div> <a href="https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-parfums.html" title="Cadeaux Femme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-parfums.html', '2', 'Cadeaux Femme')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/STILL_VISUEL_POURELLE_1_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/STILL_VISUEL_POURELLE_1_2.jpg" alt="Cadeaux Femme" title="Cadeaux Femme" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Cadeaux Femme</span></a> <a href="https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-homme.html" title="Cadeaux Homme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-homme.html', '2', 'Cadeaux Homme')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/STILL_VISUEL_POURLUI_1_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/STILL_VISUEL_POURLUI_1_2.jpg" alt="Cadeaux Homme" title="Cadeaux Homme" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Cadeaux Homme</span></a> <a href="https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-soins.html" title="Cadeaux Soins" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-soins.html', '2', 'Cadeaux Soins')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/STILL_VISUEL_SOINCORPS_1_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/STILL_VISUEL_SOINCORPS_1_2.jpg" alt="Cadeaux Soins" title="Cadeaux Soins" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Cadeaux Soins</span></a> <a href="https://www.adopt.com/fr/noel-coffret-parfum/petites-attentions.html" title="Petites attentions" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/petites-attentions.html', '2', 'Petites attentions')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/STILL_LANDINGPAGE_PETITESATTENTIONS_1_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/STILL_LANDINGPAGE_PETITESATTENTIONS_1_2.jpg" alt="Petites attentions" title="Petites attentions" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Petites attentions</span></a> <a href="https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-maquillage.html" title="Cadeaux maquillage" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-maquillage.html', '2', 'Cadeaux maquillage')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/STILL_VISUEL_MAQUILLAGE_1_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/STILL_VISUEL_MAQUILLAGE_1_2.jpg" alt="Cadeaux maquillage" title="Cadeaux maquillage" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Cadeaux maquillage</span></a> <a href="https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-maison.html" title="Cadeaux Maison" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-maison.html', '2', 'Cadeaux Maison')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_MULTI_NOEL_BOUGIES_1_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_MULTI_NOEL_BOUGIES_1_2.jpg" alt="Cadeaux Maison" title="Cadeaux Maison" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Cadeaux Maison</span></a> <div class="bg-pink-100 mt-5 py-2"> </div></div> </div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs font-medium font-medium" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1472' ? 0 : 'category-node-1472'; nameActiveMenu = 'Parfum'; activeSubNav();" title="Parfum"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/CRM_MIXMULTIPRODUIT_MIXTE_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/CRM_MIXMULTIPRODUIT_MIXTE_1_1.jpg" data-twic-bot="cover-max=74" alt="Parfum" title="Parfum" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Parfum</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1472' ? 0 : 'category-node-1472'; nameActiveMenu = 'Parfum'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
</div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1472', 'translate-x-0' : mobilePanelActiveId === 'category-node-1472' }"><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
<span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Parfum</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/fr/parfum.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/CRM_MIXMULTIPRODUIT_MIXTE_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/CRM_MIXMULTIPRODUIT_MIXTE_1_1.jpg" alt="Parfum" title="Parfum" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>Voir tout</span></a></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Parfum femme" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_PERF_MULTI_CARROUSELS_30_1_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_PERF_MULTI_CARROUSELS_30_1_2.jpg" alt="Parfum femme" title="Parfum femme" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Parfum femme</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/parfum/parfum-femme/eau-de-parfum-femme.html" title="Eau de parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme/eau-de-parfum-femme.html', '3', 'Eau de parfum')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Eau de parfum</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-femme/coffret-parfum-femme.html" title="Coffret parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme/coffret-parfum-femme.html', '3', 'Coffret parfum')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Coffret parfum</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-femme/collection-voyage.html" title="Les Voyages" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme/collection-voyage.html', '3', 'Les Voyages')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Les Voyages</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-femme/parfum-intense.html" title="Les Intenses" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme/parfum-intense.html', '3', 'Les Intenses')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Les Intenses</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-femme/brume-parfumee.html" title="Brume Parfumée" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme/brume-parfumee.html', '3', 'Brume Parfumée')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Brume Parfumée</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-femme.html" title="Parfum femme" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Parfum homme" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/RS_ADOPT_EDP_30ML_HOMME_1_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/RS_ADOPT_EDP_30ML_HOMME_1_2.jpg" alt="Parfum homme" title="Parfum homme" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Parfum homme</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/parfum/parfum-homme/eau-de-parfum-homme.html" title="Eau de parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-homme/eau-de-parfum-homme.html', '3', 'Eau de parfum')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Eau de parfum</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-homme/coffret-parfum-homme.html" title="Coffret parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-homme/coffret-parfum-homme.html', '3', 'Coffret parfum')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Coffret parfum</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-homme.html" title="Parfum homme" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <a href="https://www.adopt.com/fr/parfum/parfum-mixte.html" title="Parfum mixte" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-mixte.html', '2', 'Parfum mixte')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-mixte-coffret-parfum_1__1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-mixte-coffret-parfum_1__1.jpg" alt="Parfum mixte" title="Parfum mixte" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Parfum mixte</span></a> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Univers olfactif" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/diag-olfa-circle_COLIBRI-min.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/diag-olfa-circle_COLIBRI-min.png" alt="Univers olfactif" title="Univers olfactif" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Univers olfactif</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/coton-et-douceur.html" title="Les délicats" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/coton-et-douceur.html', '3', 'Les délicats')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Les délicats</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/boise-et-caractere.html" title="Les caractères" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/boise-et-caractere.html', '3', 'Les caractères')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Les caractères</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/fraicheur-et-agrume.html" title="Les frais" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/fraicheur-et-agrume.html', '3', 'Les frais')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Les frais</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/fleurs-et-romantisme.html" title="Les floraux" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/fleurs-et-romantisme.html', '3', 'Les floraux')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Les floraux</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/fruits-et-plaisir.html" title="Les fruités" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/fruits-et-plaisir.html', '3', 'Les fruités')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Les fruités</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/gourmandise-et-seduction.html" title="Les gourmands" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/gourmandise-et-seduction.html', '3', 'Les gourmands')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Les gourmands</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/soleil-et-sensualite.html" title="Les solaires" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/soleil-et-sensualite.html', '3', 'Les solaires')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Les solaires</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum.html" title="Univers olfactif" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <a href="https://www.adopt.com/fr/parfum/accessoire-parfum.html" title="Accessoire Parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/accessoire-parfum.html', '2', 'Accessoire Parfum')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <span class="inline-block mr-4 w-8.75 h-8.75"></span> Accessoire Parfum</span></a> <div class="bg-pink-100 mt-5 py-2"> <a href="https://www.adopt.com/fr/diagnostic-olfactif/" title="Faire mon diagnostic" class="a flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium gradient-text-purple">Faire mon diagnostic</a> <a href="https://www.adopt.com/fr/parfum/exclusivite-web.html" title="Exclu web" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Exclu web</span></a> <a href="https://www.adopt.com/fr/parfum/nouveautes-parfum.html" title="Nouveautés" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Nouveautés</span></a> <a href="https://www.adopt.com/fr/parfum/meilleures-ventes-parfum.html" title="Meilleures ventes" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Meilleures ventes</span></a> <a href="https://www.adopt.com/fr/parfum/format-decouverte.html" title="Parfum miniature" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Parfum miniature</span></a> <a href="https://www.adopt.com/fr/parfum/magic-touch.html" title="Magic Touch" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Magic Touch</span></a> </div></div> <div class="py-5 border-t border-dashed border-lavender"><div class="px-5 text-pink uppercase text-xxs font-medium tracking-spaced-lg mb-5"><a href="https://www.adopt.com/fr/parfum/famille-olfactive.html">#notesolfactives</a></div><div class="w-full overflow-x-hidden"><div class="flex gap-2.5 overflow-x-auto pb-1 hide-scrollbar"> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-vanille-famille-olfactive.html"> #Vanille</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-fleurs-d-oranger-famille-olfactive.html"> #Fleurs d'oranger</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-rose-famille-olfactive.html"> #Rose</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-patchouly-famille-olfactive.html"> #Patchouli</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-monoi-famille-olfactive.html"> #Monoï</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-muscfamille-olfactive.html"> #Musc</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-ambre-famille-olfactive.html"> #Ambre</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-oud-famille-olfactive.html"> #Oud</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-coco-note-olfactive.html"> #Coco</a> </div></div></div> <div class="pt-2.5"><a href="#" class="block"><img loading="lazy" class="w-full" src="https://adopt.twic.pics/media/catalog/category/ECOMM_ANIM_WEB_NOEL_1_JOALIA_Overlay_NOUVEAU_FR_1_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_ANIM_WEB_NOEL_1_JOALIA_Overlay_NOUVEAU_FR_1_1.png" width="701" height="994" alt="Parfum" title="Parfum"></a></div></div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs font-medium font-medium" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1369' ? 0 : 'category-node-1369'; nameActiveMenu = 'Corps'; activeSubNav();" title="Corps"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/SOINS_POT_1_1__5.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/SOINS_POT_1_1__5.jpg" data-twic-bot="cover-max=74" alt="Corps" title="Corps" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Corps</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1369' ? 0 : 'category-node-1369'; nameActiveMenu = 'Corps'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
</div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1369', 'translate-x-0' : mobilePanelActiveId === 'category-node-1369' }"><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
<span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Corps</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/fr/soin-corps.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/SOINS_POT_1_1__5.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/SOINS_POT_1_1__5.jpg" alt="Corps" title="Corps" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>Voir tout</span></a></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('1')"><button title="Par produit" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-soins-corps-rituel-yummy-candy_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-soins-corps-rituel-yummy-candy_1_1.jpg" alt="Par produit" title="Par produit" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Par produit</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gel-douche-parfume.html" title="Gel douche parfumé" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gel-douche-parfume.html', '3', 'Gel douche parfumé')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Gel douche parfumé</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/creme-et-lait-corps.html" title="Crème & lait corps" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/creme-et-lait-corps.html', '3', 'Crème & lait corps')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Crème & lait corps</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/soin-des-mains.html" title="Crème mains" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/soin-des-mains.html', '3', 'Crème mains')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Crème mains</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gommage-corps.html" title="Gommage corps" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gommage-corps.html', '3', 'Gommage corps')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Gommage corps</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/deodorant.html" title="Déodorant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/deodorant.html', '3', 'Déodorant')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Déodorant</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/huile-corps.html" title="Huile corps" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/huile-corps.html', '3', 'Huile corps')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Huile corps</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gelee-corps.html" title="Gelée corps" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gelee-corps.html', '3', 'Gelée corps')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Gelée corps</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/bombe-de-bain.html" title="Bombe de bain" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/bombe-de-bain.html', '3', 'Bombe de bain')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Bombe de bain</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/accessoires-corps.html" title="Accessoire corps" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/accessoires-corps.html', '3', 'Accessoire corps')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Accessoire corps</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit.html" title="Par produit" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Par action" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <span class="inline-block mr-4 w-8.75 h-8.75"></span> Par action</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-hydratant.html" title="Hydratant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-hydratant.html', '3', 'Hydratant')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Hydratant</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-nourrissant.html" title="Nourrissant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-nourrissant.html', '3', 'Nourrissant')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Nourrissant</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-eclat.html" title="Éclat" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-eclat.html', '3', 'Éclat')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Éclat</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-exfoliant.html" title="Exfoliant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-exfoliant.html', '3', 'Exfoliant')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Exfoliant</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-nettoyant.html" title="Nettoyant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-nettoyant.html', '3', 'Nettoyant')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Nettoyant</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action.html" title="Par action" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Rituel soin parfumé" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-maixte-eau-parfum_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-maixte-eau-parfum_1.jpg" alt="Rituel soin parfumé" title="Rituel soin parfumé" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Rituel soin parfumé</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/joalia.html" title="Joalia" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/joalia.html', '3', 'Joalia')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Joalia</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/onyx.html" title="Onyx" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/onyx.html', '3', 'Onyx')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Onyx</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/solaria.html" title="Solaria" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/solaria.html', '3', 'Solaria')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Solaria</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/monoi-des-iles.html" title="Monoï des îles" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/monoi-des-iles.html', '3', 'Monoï des îles')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Monoï des îles</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/monoi-blanc.html" title="Monoï Blanc" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/monoi-blanc.html', '3', 'Monoï Blanc')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Monoï Blanc</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/tahiti-paradis.html" title="Tahiti Paradis" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/tahiti-paradis.html', '3', 'Tahiti Paradis')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Tahiti Paradis</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/sunny-vibes.html" title="Sunny Vibes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/sunny-vibes.html', '3', 'Sunny Vibes')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Sunny Vibes</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/blackstone.html" title="Blackstone" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/blackstone.html', '3', 'Blackstone')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Blackstone</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/fleur-de-tiare.html" title="Fleur des Tropiques" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/fleur-de-tiare.html', '3', 'Fleur des Tropiques')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Fleur des Tropiques</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/l-or-des-sables.html" title="L'or des Sables" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/l-or-des-sables.html', '3', 'L\'or des Sables')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">L'or des Sables</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/reve-de-coco.html" title="Rêve de coco" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/reve-de-coco.html', '3', 'Rêve de coco')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Rêve de coco</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume.html" title="Rituel soin parfumé" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div class="bg-pink-100 mt-5 py-2"> <a href="https://www.adopt.com/fr/soin-corps/nouveautes-soin-corps.html" title="Nouveautés" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Nouveautés</span></a> <a href="https://www.adopt.com/fr/soin-corps/meilleures-ventes-soin-corps.html" title="Meilleures ventes" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Meilleures ventes</span></a> <a href="https://www.adopt.com/fr/soin-corps/soins-d-exception-corps.html" title="Karité & Argan" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Karité & Argan</span></a> <a href="https://www.adopt.com/fr/soin-corps/soins-corps-homme.html" title="Homme" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Homme</span></a> <a href="https://www.adopt.com/fr/soin-corps/beaute-d-orient.html" title="Beauté d'Orient" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Beauté d'Orient</span></a> <a href="https://www.adopt.com/fr/soin-corps/gamme-bain.html" title="Gamme bain" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Gamme bain</span></a> </div></div> <div class="pt-2.5"><a href="#" class="block"><img loading="lazy" class="w-full" src="https://adopt.twic.pics/media/catalog/category/ECOMM_ANIM_WEB_NOEL_1_SOINS_Gamme_Vanille_Rupture_Merch_DESK_FR_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_ANIM_WEB_NOEL_1_SOINS_Gamme_Vanille_Rupture_Merch_DESK_FR_1.png" width="1355" height="2075" alt="Corps" title="Corps"></a></div></div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs font-medium font-medium" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1343' ? 0 : 'category-node-1343'; nameActiveMenu = 'Visage'; activeSubNav();" title="Visage"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ADOPT_RS_AVRIL_176_4.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ADOPT_RS_AVRIL_176_4.jpg" data-twic-bot="cover-max=74" alt="Visage" title="Visage" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Visage</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1343' ? 0 : 'category-node-1343'; nameActiveMenu = 'Visage'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
</div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1343', 'translate-x-0' : mobilePanelActiveId === 'category-node-1343' }"><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
<span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Visage</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/fr/soin-visage.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ADOPT_RS_AVRIL_176_4.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ADOPT_RS_AVRIL_176_4.jpg" alt="Visage" title="Visage" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>Voir tout</span></a></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('1')"><button title="Par produit" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Dimension_special_category_3__1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Dimension_special_category_3__1.png" alt="Par produit" title="Par produit" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Par produit</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/demaquillants.html" title="Démaquillants" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/demaquillants.html', '3', 'Démaquillants')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Démaquillants</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/nettoyants.html" title="Nettoyants" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/nettoyants.html', '3', 'Nettoyants')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Nettoyants</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/masques-exfoliants.html" title="Masques & Exfoliants" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/masques-exfoliants.html', '3', 'Masques & Exfoliants')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Masques & Exfoliants</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/serums.html" title="Sérums" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/serums.html', '3', 'Sérums')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Sérums</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/soin-contour-des-yeux.html" title="Soin contour des yeux" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/soin-contour-des-yeux.html', '3', 'Soin contour des yeux')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Soin contour des yeux</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/creme-jour-et-nuit.html" title="Crème jour et nuit" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/creme-jour-et-nuit.html', '3', 'Crème jour et nuit')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Crème jour et nuit</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit.html" title="Par produit" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Par action" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/image_mobile_1.webp?twic=v1/output=preview" data-twic-src="image:media/catalog/category/image_mobile_1.webp" alt="Par action" title="Par action" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Par action</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-action/hydratation-eclat.html" title="Hydratation & Eclat" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-action/hydratation-eclat.html', '3', 'Hydratation & Eclat')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Hydratation & Eclat</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-action/purifiant-matifiant.html" title="Purifiant & Matifiant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-action/purifiant-matifiant.html', '3', 'Purifiant & Matifiant')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Purifiant & Matifiant</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-action/lissant-repulpant.html" title="Lissant & Repulpant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-action/lissant-repulpant.html', '3', 'Lissant & Repulpant')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Lissant & Repulpant</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-action.html" title="Par action" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Par Actif" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <span class="inline-block mr-4 w-8.75 h-8.75"></span> Par Actif</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/soin-visage/par-actif/zinc.html" title="Zinc" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/zinc.html', '3', 'Zinc')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Zinc</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/acide-salicylique.html" title="Acide salicylique" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/acide-salicylique.html', '3', 'Acide salicylique')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Acide salicylique</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/argile.html" title="Argile" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/argile.html', '3', 'Argile')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Argile</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/vitamine-c.html" title="Vitamine C" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/vitamine-c.html', '3', 'Vitamine C')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Vitamine C</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/acide-hyaluronique.html" title="Acide hyaluronique" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/acide-hyaluronique.html', '3', 'Acide hyaluronique')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Acide hyaluronique</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/cafeine.html" title="Caféine" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/cafeine.html', '3', 'Caféine')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Caféine</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/huile-amande-douce.html" title="Huile amande douce" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/huile-amande-douce.html', '3', 'Huile amande douce')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Huile amande douce</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif.html" title="Par Actif" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div class="bg-pink-100 mt-5 py-2"> <a href="https://www.adopt.com/fr/soin-visage/nouveautes-soin-visage.html" title="Nouveautés" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Nouveautés</span></a> <a href="https://www.adopt.com/fr/soin-visage/meilleures-ventes-soin-visage.html" title="Meilleures ventes" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Meilleures ventes</span></a> </div></div> <div class="pt-2.5"><a href="#" class="block"><img loading="lazy" class="w-full" src="https://adopt.twic.pics/media/catalog/category/ECOM_Delicieux_Interdits_Overlay_Gamme_Lissante_FR_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOM_Delicieux_Interdits_Overlay_Gamme_Lissante_FR_1.png" width="704" height="994" alt="Visage" title="Visage"></a></div></div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs font-medium font-medium" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1443' ? 0 : 'category-node-1443'; nameActiveMenu = 'Maquillage'; activeSubNav();" title="Maquillage"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_NIGHT_ICON_Overlay_FR_0_5x_2_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_NIGHT_ICON_Overlay_FR_0_5x_2_1.png" data-twic-bot="cover-max=74" alt="Maquillage" title="Maquillage" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Maquillage</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1443' ? 0 : 'category-node-1443'; nameActiveMenu = 'Maquillage'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
</div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1443', 'translate-x-0' : mobilePanelActiveId === 'category-node-1443' }"><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
<span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Maquillage</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/fr/maquillage.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_NIGHT_ICON_Overlay_FR_0_5x_2_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_NIGHT_ICON_Overlay_FR_0_5x_2_1.png" alt="Maquillage" title="Maquillage" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>Voir tout</span></a></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Teint" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-maquillage-fond-de-teint_1__1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-maquillage-fond-de-teint_1__1.jpg" alt="Teint" title="Teint" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Teint</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/fond-de-teint.html" title="Fond de teint" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/fond-de-teint.html', '3', 'Fond de teint')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Fond de teint</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/anti-cernes-et-correcteur.html" title="Correcteur & anti-cernes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/anti-cernes-et-correcteur.html', '3', 'Correcteur & anti-cernes')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Correcteur & anti-cernes</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/base-de-teint-et-fixateur.html" title="Base de teint & fixateur" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/base-de-teint-et-fixateur.html', '3', 'Base de teint & fixateur')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Base de teint & fixateur</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/blush.html" title="Blush & enlumineur" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/blush.html', '3', 'Blush & enlumineur')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Blush & enlumineur</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/poudre.html" title="Poudre" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/poudre.html', '3', 'Poudre')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Poudre</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/accessoires-teint.html" title="Accessoire teint" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/accessoires-teint.html', '3', 'Accessoire teint')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Accessoire teint</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint.html" title="Teint" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Yeux" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-maquillage-mascara_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-maquillage-mascara_1_1.jpg" alt="Yeux" title="Yeux" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Yeux</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/mascara.html" title="Mascara" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/mascara.html', '3', 'Mascara')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Mascara</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/eyeliner.html" title="Eyeliner" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/eyeliner.html', '3', 'Eyeliner')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Eyeliner</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/crayon-pour-les-yeux.html" title="Crayon" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/crayon-pour-les-yeux.html', '3', 'Crayon')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Crayon</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/fard-a-paupieres.html" title="Fard à paupières" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/fard-a-paupieres.html', '3', 'Fard à paupières')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Fard à paupières</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/sourcil.html" title="Sourcils" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/sourcil.html', '3', 'Sourcils')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Sourcils</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/palette-yeux.html" title="Palette" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/palette-yeux.html', '3', 'Palette')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Palette</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/accessoires-yeux.html" title="Accessoire yeux" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/accessoires-yeux.html', '3', 'Accessoire yeux')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Accessoire yeux</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux.html" title="Yeux" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Lèvres" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-maquillage-rouge-a-levres_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-maquillage-rouge-a-levres_1_1.jpg" alt="Lèvres" title="Lèvres" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Lèvres</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/maquillage/maquillage-levres/rouge-a-levres.html" title="Rouge à lèvres" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-levres/rouge-a-levres.html', '3', 'Rouge à lèvres')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Rouge à lèvres</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-levres/gloss.html" title="Gloss" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-levres/gloss.html', '3', 'Gloss')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Gloss</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-levres/baume-a-levres.html" title="Baume à lèvres" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-levres/baume-a-levres.html', '3', 'Baume à lèvres')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Baume à lèvres</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-levres.html" title="Lèvres" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Ongles" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-maquillage-vernis-ongles_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-maquillage-vernis-ongles_1_1.jpg" alt="Ongles" title="Ongles" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Ongles</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/maquillage/maquillage-ongles/vernis-a-ongles.html" title="Vernis à ongles" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-ongles/vernis-a-ongles.html', '3', 'Vernis à ongles')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Vernis à ongles</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-ongles/accessoires-manucure.html" title="Accessoire manucure" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-ongles/accessoires-manucure.html', '3', 'Accessoire manucure')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Accessoire manucure</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-ongles.html" title="Ongles" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div class="bg-pink-100 mt-5 py-2"> <a href="https://www.adopt.com/fr/maquillage/nouveautes-maquillage.html" title="Nouveautés" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Nouveautés</span></a> <a href="https://www.adopt.com/fr/maquillage/meilleures-ventes-maquillage.html" title="Meilleures ventes" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Meilleures ventes</span></a> </div></div> </div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs font-medium font-medium" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1428' ? 0 : 'category-node-1428'; nameActiveMenu = 'Cadeau'; activeSubNav();" title="Cadeau"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_CALENDRIERS_Overlay_FR_0_5x_2.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_CALENDRIERS_Overlay_FR_0_5x_2.png" data-twic-bot="cover-max=74" alt="Cadeau" title="Cadeau" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Cadeau</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1428' ? 0 : 'category-node-1428'; nameActiveMenu = 'Cadeau'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
</div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1428', 'translate-x-0' : mobilePanelActiveId === 'category-node-1428' }"><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
<span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Cadeau</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/fr/cadeaux.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_CALENDRIERS_Overlay_FR_0_5x_2.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_CALENDRIERS_Overlay_FR_0_5x_2.png" alt="Cadeau" title="Cadeau" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>Voir tout</span></a></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('1')"><button title="Pour qui" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/M_chamment_styl_feeling_box_fdp-min_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/M_chamment_styl_feeling_box_fdp-min_1.png" alt="Pour qui" title="Pour qui" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Pour qui</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-femme.html" title="Cadeau Femme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-femme.html', '3', 'Cadeau Femme')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Cadeau Femme</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-lui.html" title="Cadeau Homme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-lui.html', '3', 'Cadeau Homme')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Cadeau Homme</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-enfant.html" title="Cadeau Enfant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-enfant.html', '3', 'Cadeau Enfant')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Cadeau Enfant</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui.html" title="Pour qui" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_69301d89e4790('0')"><button title="Par prix" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/PACK_MULTI_DESTINATIONSOLEIL_FEELINGBOX_Montage_Vanille_Bourbon-1-min_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/PACK_MULTI_DESTINATIONSOLEIL_FEELINGBOX_Montage_Vanille_Bourbon-1-min_1.png" alt="Par prix" title="Par prix" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Par prix</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-moins-de-10-euros.html" title="Petits prix" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-moins-de-10-euros.html', '3', 'Petits prix')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Petits prix</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-entre-10-et-20-euros.html" title="Moins de 20€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-entre-10-et-20-euros.html', '3', 'Moins de 20€')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Moins de 20€</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-entre-20-et-30-euros.html" title="Entre 20 et 30€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-entre-20-et-30-euros.html', '3', 'Entre 20 et 30€')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Entre 20 et 30€</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-plus-de-30-euros.html" title="Cadeau premium" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-plus-de-30-euros.html', '3', 'Cadeau premium')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Cadeau premium</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-par-prix.html" title="Par prix" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">Voir tout</span></a></div></div> <div class="bg-pink-100 mt-5 py-2"> <a href="https://www.adopt.com/fr/guide-cadeaux-adopt" title="Guide cadeau" class="a flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium gradient-text-purple" data-parent-id="category-node-1428">Guide cadeau</a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-coups-de-coeur.html" title="Nos coups de coeur" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Nos coups de coeur</span></a> <a href="https://www.adopt.com/fr/cadeaux/exclu-web.html" title="Exclu web" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Exclu web</span></a> <a href="https://www.adopt.com/fr/cadeaux/emballage-cadeaux.html" title="Emballage cadeau" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Emballage cadeau</span></a> </div></div> <div class="pt-2.5"><a href="#" class="block"><img loading="lazy" class="w-full" src="https://adopt.twic.pics/media/catalog/category/ECOMM_CALENDRIERS_Overlay_FR_0_5x_4.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_CALENDRIERS_Overlay_FR_0_5x_4.png" width="351" height="497" alt="Cadeau" title="Cadeau"></a></div></div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs font-medium font-medium font-medium" style="color:#46405a;" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1667' ? 0 : 'category-node-1667'; nameActiveMenu = 'Maison'; activeSubNav();" title="Maison"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__2.jpg" data-twic-bot="cover-max=74" alt="Maison" title="Maison" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Maison</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1667' ? 0 : 'category-node-1667'; nameActiveMenu = 'Maison'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
</div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1667', 'translate-x-0' : mobilePanelActiveId === 'category-node-1667' }"><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
<span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Maison</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/fr/maison.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__2.jpg" alt="Maison" title="Maison" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>Voir tout</span></a></div> <a href="https://www.adopt.com/fr/maison/bougie-parfumee.html" title="Bougie parfumée" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maison/bougie-parfumee.html', '2', 'Bougie parfumée')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_HOME_CANDLE_JARDINDESROSES_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_HOME_CANDLE_JARDINDESROSES_2.jpg" alt="Bougie parfumée" title="Bougie parfumée" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Bougie parfumée</span></a> <a href="https://www.adopt.com/fr/maison/parfums-d-interieur.html" title="Parfums d'intérieur" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maison/parfums-d-interieur.html', '2', 'Parfums d\'intérieur')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_HOME_MULTI_DIFFUSER_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_HOME_MULTI_DIFFUSER_2.jpg" alt="Parfums d'intérieur" title="Parfums d'intérieur" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Parfums d'intérieur</span></a> <a href="https://www.adopt.com/fr/maison/huile-essentielle.html" title="Huile essentielle" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maison/huile-essentielle.html', '2', 'Huile essentielle')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/PLV_BRUME_D_OREILLER_LAVANDE_5.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/PLV_BRUME_D_OREILLER_LAVANDE_5.jpg" alt="Huile essentielle" title="Huile essentielle" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Huile essentielle</span></a> <div class="bg-pink-100 mt-5 py-2"> </div></div> <div class="pt-2.5"><a href="#" class="block"><img loading="lazy" class="w-full" src="https://adopt.twic.pics/media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__4.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__4.jpg" width="1200" height="1200" alt="Maison" title="Maison"></a></div></div></div> </div> <div class="border-t border-lavender-400 py-3 overflow-hidden"><div class=""> <div x-data="{ ...initMobileCmsPageMenuItem_69301d89e4790(), openBrandElement: false, openSubElement: false }"><button type="button" title="Nos valeurs" class="flex items-center justify-between w-full px-8 py-4 cursor-pointer border-container text-xs font-medium tracking-spaced-lg transition duration-300 hover:bg-lavender-300" @click="openBrandElement = !openBrandElement">Nos valeurs <div class="absolute right-0 flex w-14 items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container"><span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="h-2.5 w-auto" width="14" height="13" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
</span></div></button> <div class="absolute pb-16 bg-lavender-300 top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto transform bg-container-lighter" :class="{ 'translate-x-full' : !openBrandElement, 'translate-x-0' : openBrandElement }"><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="openBrandElement = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
<span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Nos valeurs</span></button> <div class="flex flex-col gap-2.5 px-2"> <a href="https://www.adopt.com/fr/programme-colibri" title="Les Programmes Colibri" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/programme-colibri', '2', 'Les Programmes Colibri')" class="relative block text-anthracite text-xxs group tracking-wider hover:bg-lavender-300"><img loading="lazy" class="w-full rounded-[10px] h-[200px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/carr__0.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/carr__0.jpg" data-twic-transform="max=500" alt="Les Programmes Colibri" title="Les Programmes Colibri"><button class="absolute bottom-6 btn btn-primary-white-cta min-h-[55px] text-smaller mx-auto left-0 right-0 w-fit">Les Programmes Colibri</button></a> <a href="https://www.adopt.com/fr/nos-engagements" title="Nos engagements" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/nos-engagements', '2', 'Nos engagements')" class="relative block text-anthracite text-xxs group tracking-wider hover:bg-lavender-300"><img loading="lazy" class="w-full rounded-[10px] h-[200px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/nos_engagements.jpg_1__0.png?twic=v1/output=preview" data-twic-src="image:media/picto/image/nos_engagements.jpg_1__0.png" data-twic-transform="max=500" alt="Nos engagements" title="Nos engagements"><button class="absolute bottom-6 btn btn-primary-white-cta min-h-[55px] text-smaller mx-auto left-0 right-0 w-fit">Nos engagements</button></a> <a href="https://www.adopt.com/fr/l-univers-adopt" title="L'univers adopt" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/l-univers-adopt', '2', 'L\'univers adopt')" class="relative block text-anthracite text-xxs group tracking-wider hover:bg-lavender-300"><img loading="lazy" class="w-full rounded-[10px] h-[200px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/Adopt_0505_Capots_2_Invio_0.png?twic=v1/output=preview" data-twic-src="image:media/picto/image/Adopt_0505_Capots_2_Invio_0.png" data-twic-transform="max=500" alt="L'univers adopt" title="L'univers adopt"><button class="absolute bottom-6 btn btn-primary-white-cta min-h-[55px] text-smaller mx-auto left-0 right-0 w-fit">L'univers adopt</button></a> <a href="https://www.adopt.com/fr/savoir-faire" title="Savoir-faire" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/savoir-faire', '2', 'Savoir-faire')" class="relative block text-anthracite text-xxs group tracking-wider hover:bg-lavender-300"><img loading="lazy" class="w-full rounded-[10px] h-[200px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/savoir-faire-adopt_1.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/savoir-faire-adopt_1.jpg" data-twic-transform="max=500" alt="Savoir-faire" title="Savoir-faire"><button class="absolute bottom-6 btn btn-primary-white-cta min-h-[55px] text-smaller mx-auto left-0 right-0 w-fit">Savoir-faire</button></a> <a href="https://www.adopt.com/fr/nos-services-en-boutique" title="Nos services en boutique" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/nos-services-en-boutique', '2', 'Nos services en boutique')" class="relative block text-anthracite text-xxs group tracking-wider hover:bg-lavender-300"><img loading="lazy" class="w-full rounded-[10px] h-[200px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/service_en_boutique_0.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/service_en_boutique_0.jpg" data-twic-transform="max=500" alt="Nos services en boutique" title="Nos services en boutique"><button class="absolute bottom-6 btn btn-primary-white-cta min-h-[55px] text-smaller mx-auto left-0 right-0 w-fit">Nos services en boutique</button></a> </div></div></div> </div> <div class="bg-pink-100 py-5 px-8"><a href="https://www.adopt.com/fr/checkout/cart" class="py-4 flex items-center gap-6 text-xs-tiny tracking-spaced-lg font-medium uppercase transition duration-300 hover:text-pink"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="bag" version="1.1" x="0px" y="0px" viewbox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="w-4.5 h-auto" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M16.8,5.3c-0.5-2.8-2.7-4.8-5.3-4.8 c-2.6,0-4.8,2-5.3,4.8"/>
<path fill="none" stroke="currentColor" d="M10.1,5.3h3.8c5.3,0,9.6,4.3,9.6,9.6v8.6h-23v-8.6C0.5,9.6,4.8,5.3,10.1,5.3z"/>
<title/></svg>
<span>Mon panier</span></a> <a href="https://www.adopt.com/fr/customer/account" class="py-4 flex items-center gap-6 text-xs-tiny tracking-spaced-lg font-medium uppercase transition duration-300 hover:text-pink"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="compte" version="1.1" x="0px" y="0px" viewbox="0 0 22.8 23.9" enable-background="new 0 0 22.8 23.9" xml:space="preserve" class="w-4.5 h-auto" width="24" height="25" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.4,11.9c3.2,0,5.7-2.6,5.7-5.7 s-2.6-5.7-5.7-5.7C8.3,0.4,5.7,3,5.7,6.2S8.3,11.9,11.4,11.9z"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M22.3,23.4c-1.5-4.7-5.9-7.9-10.9-7.9 S2,18.7,0.5,23.4H22.3z"/>
<title/></svg>
<span>Mon compte</span></a> <a href="https://www.adopt.com/fr/wishlist" class="py-4 flex items-center gap-6 text-xs-tiny tracking-spaced-lg font-medium uppercase transition duration-300 hover:text-pink"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite" version="1.1" x="0px" y="0px" viewbox="0 0 26.3 22.8" enable-background="new 0 0 26.3 22.8" xml:space="preserve" class="w-4.5 h-auto" width="26" height="23" role="img">
<path fill="none" stroke="currentColor" stroke-width="0.948" d="M13.2,22.3c-24.4-13.5-7.3-28.2,0-18.9C20.5-5.9,37.6,8.8,13.2,22.3z"/>
<title/></svg>
<span>Mes favoris</span></a> <a href="https://www.adopt.com/fr/store-locator" class="py-4 flex items-center gap-6 text-xs-tiny tracking-spaced-lg font-medium uppercase transition duration-300 hover:text-pink"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="pin-shop" version="1.1" x="0px" y="0px" viewbox="0 0 21.3 23.9" enable-background="new 0 0 21.3 23.9" xml:space="preserve" class="w-4.5 h-auto" width="23" height="26" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.7,0.5c2.2,0,4.3,0.6,6.2,1.8 c4.8,3,5.2,9.2,1.3,13.7c-2.3,2.7-4.8,5.2-7.5,7.4c-2.7-2.2-5.3-4.7-7.5-7.4C-0.7,11.4-0.4,5.3,4.4,2.3C6.3,1.1,8.5,0.5,10.7,0.5z M10.7,5.2c-2.4,0-4.4,1.9-4.4,4.3c0,2.4,1.9,4.3,4.4,4.3c2.4,0,4.4-1.9,4.4-4.3C15,7.1,13.1,5.2,10.7,5.2z"/>
<title/></svg>
<span>Nos boutiques</span></a> <div x-data="initStoreSwitcherForm_69301d8a37d9c()" @private-content-loaded.window.debounce="onPrivateContentLoaded($event.detail.data)"><div :class="!isFromMobileMenu ? 'relative inline-block text-left' : ''"><template x-if="currentStoreCountryName && currentStoreLanguageCode && currentStoreSvg"><div><button @click.prevent="storeMenuMobile();" @keydown.window.escape="storeMenuMobile('close');" type="button" :class="isFromMobileMenu ? 'py-4 text-xs-tiny gap-6' : 'justify-center w-full focus:outline-none border-none p-0 flex-row-reverse gap-2'" class="flex items-center" aria-haspopup="true" aria-expanded="true" x-html='isFromMobileMenu ? currentStoreSvg + "<span>" + currentStoreCountryName.toUpperCase() + " (" + currentStoreLanguageCode.toUpperCase() + ")</span>" : "<span class=\"link link-simple \">" + currentStoreCountryName.toUpperCase() + " (" + currentStoreLanguageCode.toUpperCase() + ")</span> " + currentStoreSvg' ></button></div></template></div></div><script>
function initStoreSwitcherForm_69301d8a37d9c() {
return {
currentCountrySvg: null,
currentStoreCountryCode: 'FR',
currentStoreCountryName: '',
currentStoreLanguageCode: 'fr',
currentStoreSvg: null,
destinationUrl: null,
directoryData: null,
geoIpCountryCode: hyva.getCookie('select-store-user-country-code'),
isFromMobileMenu: 1,
selectedStore: null,
svgBaseUrl: 'https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/Hyva_Theme/svg/flag',
svgTemplate: '<img loading="lazy" src="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/Hyva_Theme/svg/flag/%1.svg" alt="%2" height="20" width="20">',
translatedWordings: {"modalTitle":{"fr":"Bienvenue sur Adopt.com","en":"Welcome on Adopt.com","es":"Bienvenido a Adopt.com","it":"Benvenuto su Adopt.com","nl":"Welkom op Adopt.com"},"selectTitle":{"fr":"Pays de livraison","en":"Shipping country","es":"Pa\u00eds de entrega","nl":"Land van levering","it":"Paese di consegna"},"modalDescription":{"fr":"Veuillez choisir votre <b>pays de livraison<\/b>","en":"Please choose your <b>delivery country<\/b>","es":"Elija su pa\u00eds de <b>entrega<\/b>","it":"Scegli il <b>paese di consegna<\/b>","nl":"Kies het <b>land van levering<\/b>"},"modalButton":{"fr":"Appliquer","en":"Apply","es":"Solicitar","it":"Applicare","nl":"Toepassen"}},
userLanguageCode: window.navigator.language.indexOf("-") > 0 ? window.navigator.language.substring(0, window.navigator.language.indexOf("-")) : window.navigator.language,
websites: [{"country_code":"FR","country_label":{"fr":"France","es":"Francia","en":"France","nl":"Frankrijk"},"locale_code":"default","locale_label":"fr","store_code":"fr","destinationUrl":"https:\/\/www.adopt.com\/fr\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"FR","locale_label":"fr","store_code":"be-fr","destinationUrl":"https:\/\/www.adopt.com\/be-fr\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"NL","locale_label":"nl","store_code":"be-nl","destinationUrl":"https:\/\/www.adopt.com\/be-nl\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"CA","country_label":{"fr":"Canada","es":"Canad\u00e1","en":"Canada","nl":"Canada"},"locale_code":"default","locale_label":"fr","store_code":"ca-fr","destinationUrl":"https:\/\/www.adopt.com\/ca-fr\/"},{"country_code":"DE","country_label":{"fr":"Allemagne","es":"Alemania","en":"Germany","nl":"Duitsland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"AT","country_label":{"fr":"Autriche","es":"Austria","en":"Austria","nl":"Oostenrijk"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"HR","country_label":{"fr":"Croatie","es":"Croacia","en":"Croatia","nl":"Kroati\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"DK","country_label":{"fr":"Danemark","es":"Dinamarca","en":"Denmark","nl":"Denemarken"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"ES","country_label":{"fr":"Espagne","es":"Espa\u00f1a","en":"Spain","nl":"Spanje"},"locale_code":"default","locale_label":"es","store_code":"es","destinationUrl":"https:\/\/www.adopt.com\/es\/"},{"country_code":"EE","country_label":{"fr":"Estonie","es":"Estonia","en":"Estonia","nl":"Estland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"FI","country_label":{"fr":"Finlande","es":"Finlandia","en":"Finland","nl":"Finland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"GR","country_label":{"fr":"Gr\u00e8ce","es":"Grecia","en":"Greece","nl":"Griekenland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"HU","country_label":{"fr":"Hongrie","es":"Hungr\u00eda","en":"Hungary","nl":"Hongarije"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"IE","country_label":{"fr":"Irlande","es":"Irlanda","en":"Ireland","nl":"Ierland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"IT","country_label":{"fr":"Italie","es":"Italia","en":"Italy","nl":"Itali\u00eb"},"locale_code":"default","locale_label":"it","store_code":"it","destinationUrl":"https:\/\/www.adopt.com\/it\/"},{"country_code":"LV","country_label":{"fr":"Lettonie","es":"Letonia","en":"Latvia","nl":"Letland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"LT","country_label":{"fr":"Lituanie","es":"Lituania","en":"Lithuania","nl":"Litouwen"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"LU","country_label":{"fr":"Luxembourg","es":"Luxemburgo","en":"Luxembourg","nl":"Luxemburg"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"NL","country_label":{"fr":"Pays-Bas","es":"Pa\u00edses Bajos","en":"Netherlands","nl":"Nederland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"PL","country_label":{"fr":"Pologne","es":"Polonia","en":"Poland","nl":"Polen"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"PT","country_label":{"fr":"Portugal","es":"Portugal","en":"Portugal","nl":"Portugal"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"RO","country_label":{"fr":"Roumanie","es":"Ruman\u00eda","en":"Romania","nl":"Roemeni\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SK","country_label":{"fr":"Slovaquie","es":"Eslovaquia","en":"Slovakia","nl":"Slowakije"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SI","country_label":{"fr":"Slov\u00e9nie","es":"Eslovenia","en":"Slovenia","nl":"Sloveni\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SE","country_label":{"fr":"Su\u00e8de","es":"Suecia","en":"Sweden","nl":"Zweden"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"CZ","country_label":{"fr":"Tch\u00e9quie","es":"Chequia","en":"Czechia","nl":"Tsjechi\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"}],
initComponent() {
this.$watch('geoIpCountryCode', (value) => {
this.openModaleIfNeeded(value);
});
this.initDefaultValues();
if (!this.hasUserChoice() && !this.geoIpCountryCode) {
this.getCountryFromHeader();
}
this.openModaleIfNeeded(this.geoIpCountryCode);
},
onPrivateContentLoaded(data) {
if (data['directory-data']) {
this.directoryData = data['directory-data'];
this.initComponent()
}
},
openModaleIfNeeded(geoIpCountryCode) {
if (!geoIpCountryCode) {
return;
}
if (!this.hasUserChoice() && (geoIpCountryCode != this.currentStoreCountryCode)) {
this.selectStoreBasedOnUser(geoIpCountryCode);
if (this.selectedStore) {
this.storeMenuMobile();
}
}
},
selectStoreBasedOnUser(geoIpCountryCode) {
let defaultStoreForCountry = null;
this.websites.forEach(element => {
if (element.country_code.toLowerCase() == geoIpCountryCode.toLowerCase()) {
if (element.locale_code.toLowerCase() == 'default') {
defaultStoreForCountry = element;
}
if (element.locale_code.toLowerCase() == this.userLanguageCode.toLowerCase()) {
this.selectedStore = element;
}
}
})
if (!this.selectedStore) {
this.selectedStore = defaultStoreForCountry;
}
if (this.selectedStore) {
const hrefElement = document.getElementById('alternate-url-' + this.selectedStore.store_code);
this.destinationUrl = hrefElement ? hrefElement.getAttribute('href') : this.selectedStore.destinationUrl;
}
},
selectStore(website) {
this.selectedStore = website;
const hrefElement = document.getElementById('alternate-url-' + this.selectedStore.store_code);
this.destinationUrl = hrefElement ? hrefElement.getAttribute('href') : this.selectedStore.destinationUrl;
},
initDefaultValues() {
const selectedCountry = hyva.getCookie('selected_country');
if (selectedCountry) {
this.currentStoreCountryCode = selectedCountry;
}
if (this.directoryData) {
this.currentStoreCountryName = this.directoryData[this.currentStoreCountryCode].name;
this.currentStoreSvg = this.svgTemplate
.replace('%1', this.currentStoreCountryCode.toLowerCase())
.replace('%2', this.currentStoreCountryName + ' flag');
}
},
remindUserChoice() {
hyva.setCookie('select-store-user-choice', true, 365, true);
},
hasUserChoice() {
return hyva.getCookie('select-store-user-choice') !== null;
},
getCountryFromHeader() {
const client = new XMLHttpRequest();
client.open("HEAD", window.location, true);
client.send(null);
client.onreadystatechange = () => {
if (client.readyState === client.HEADERS_RECEIVED) {
const disCountry = client.getResponseHeader("X-Dis-Country");
if (disCountry) {
hyva.setCookie('select-store-user-country-code', disCountry, 7, true);
this.geoIpCountryCode = disCountry;
}
client.abort();
}
};
},
submitForm() {
const $form = document.querySelector('#store-switcher-form');
window.dataLayer?.push({
'event': 'selectionPaysLivraison',
'pays': this.selectedStore.country_label['en'],
'langue': this.selectedStore.store_code.toUpperCase(),
});
this.remindUserChoice();
$form.submit();
},
storeMenuMobile($close) {
const storeSelectorModale = document.querySelector('.stores-choice');
if (storeSelectorModale) {
if ($close) {
this.remindUserChoice();
storeSelectorModale.style.display = 'none';
} else {
storeSelectorModale.style.display = 'flex';
}
}
}
}
}</script></div></nav></div></div><script>
'use strict';
function initMobileCmsPageMenuItem_69301d89e4790(isChildOpen = 0) {
return {
openSubElement: isChildOpen == 1 ? true : false,
clickMenuEntryEvent(url, level, label, blank = false) {
window.dataLayer?.push({
'event': 'clicMenuniveau' + level,
'text': label
});
if (blank) {
window.open(url, '_blank');
} else {
window.location.href = url;
}
}
}
}
function initMenuMobile_69301d89e4790() {
return {
mobilePanelActiveId: null,
hoverPanelActiveId: null,
open: false,
topOpened: document.querySelector('.block-promotional') ? document.querySelector('.block-promotional').offsetHeight : 0,
isSubnavOpen: false,
nameActiveMenu: null,
isNavLight: 0,
clickMenuEntryEvent(url, level, label, blank = false) {
window.dataLayer?.push({
'event': 'clicMenuniveau' + level,
'text': label
});
if (blank) {
window.open(url, '_blank');
} else {
window.location.href = url;
}
},
setActiveMenu(menuNode) {
Array.from(menuNode.querySelectorAll('a')).filter(link => {
return link.href === window.location.href.split('?')[0];
}).map(item => {
item.classList.add('text-pink');
item.closest('div.level-0') &&
item.closest('div.level-0').querySelector('a.level-0').classList.add('text-pink');
});
},
toggleMobileMenu() {
this.open = !this.open;
if (window.innerWidth < 1025) {
if (this.open) {
document.body.classList.add('overflow-hidden');
let headerHeight = document.querySelector('#header').offsetHeight - document.querySelector('#search-container').offsetHeight - 10;
document.querySelector('.nav-mobile').style.height = `calc(100dvh - ${headerHeight}px)`;
if (document.querySelector('.block-promotional')) {
document.querySelector('.block-promotional').style.display = 'none';
}
document.body.classList.add('is-menu-open');
} else {
document.body.classList.remove('overflow-hidden');
document.querySelector('.nav-mobile').style.height = 'unset';
if (document.querySelector('.block-promotional')) {
document.querySelector('.block-promotional').style.display = 'flex';
}
this.mobilePanelActiveId = null;
document.body.classList.remove('is-menu-open');
}
document.querySelector('.nav-wrapper').style.overflowY = 'auto';
}
},
closeMenuMobile() {
this.open = false;
const headerPosition = document.querySelector('.header-wrapper').offsetHeight;
document.body.classList.remove('overflow-hidden');
document.querySelector('.nav-mobile').style.height = 'unset';
if (document.querySelector('.block-promotional')) {
document.querySelector('.block-promotional').style.display = 'flex';
}
this.mobilePanelActiveId = null;
document.body.classList.remove('is-menu-open');
document.querySelector('.nav-wrapper').style.overflowY = 'auto';
},
activeSubNav() {
this.isSubnavOpen = !this.isSubnavOpen;
document.querySelector('.nav-wrapper').style.overflowY = 'hidden';
if (this.isSubnavOpen) {
document.querySelector('.nav-wrapper').scrollTop = 0
document.querySelector('.nav-wrapper').style.height = 'auto';
document.querySelector('.nav-wrapper').style.overflowY = 'hidden';
}
}
}
}</script> <div x-data="initMenuDesktop_69301d8a3855a()" class="z-20 order-2 menu-bp:flex-1 sm:order-1 menu-bp:order-2 navigation hidden menu-bp:flex overflow-auto hide-scrollbar"><!-- desktop --><div x-ref="navDesktop" @load.window="setActiveMenu($el)" class="hidden lg:block lg:min-h-0 px-7 lg:pt-0 overflow-auto hide-scrollbar mx-auto relative w-full"><button class="left-0 top-1/2 -translate-y-1/2 absolute hover:bg-anthracite-200 border border-lavender-lightest bg-white rounded-full p-1 text-pink transition duration-300" type="button" title="Précédent" x-cloak x-show="showPrevious" @click="prevMenu()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewbox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-3.5 h-auto filter drop-shadow-pink-lighter-icon -scale-x-100" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/>
<title/></svg>
</button> <nav x-ref="slider" @resize.window.debounce.100="resizeMenu()" x-cloak class="main-menu-container duration-150 ease-in-out transform flex min-h-0 transition-display leading-none relative overflow-x-auto overflow-y-hidden hide-scrollbar scroll-smooth gap-6 justify-between"> <div class="menu-item level-0 text-tiny text-center shrink-0" @mouseenter="openSubNav('category-node-1547', $refs)" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-semibold tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1547" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/offres-commerciales.html', '1', ' Offres')" href="https://www.adopt.com/fr/offres-commerciales.html" title="Offres">Offres</a></span></div> <div class="menu-item level-0 text-tiny text-center shrink-0" @mouseenter="openSubNav('category-node-1548', $refs)" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-semibold tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny font-bold tracking-[1.77px] category-node" id="category-node-1548" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/calendrier-de-l-avent.html', '1', ' Calendrier')" style="color:#c70033;" href="https://www.adopt.com/fr/calendrier-de-l-avent.html" title="Calendrier">Calendrier</a></span></div> <div class="menu-item level-0 text-tiny text-center shrink-0" @mouseenter="openSubNav('category-node-1473', $refs)" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-semibold tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny font-bold tracking-[1.77px] category-node" id="category-node-1473" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum.html', '1', ' Noël')" style="color:#c70033;" href="https://www.adopt.com/fr/noel-coffret-parfum.html" title="Noël">Noël</a></span></div> <div class="menu-item level-0 text-tiny text-center shrink-0" @mouseenter="openSubNav('category-node-1472', $refs)" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-semibold tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1472" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum.html', '1', ' Parfum')" href="https://www.adopt.com/fr/parfum.html" title="Parfum">Parfum</a></span></div> <div class="menu-item level-0 text-tiny text-center shrink-0" @mouseenter="openSubNav('category-node-1369', $refs)" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-semibold tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1369" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps.html', '1', ' Corps')" href="https://www.adopt.com/fr/soin-corps.html" title="Corps">Corps</a></span></div> <div class="menu-item level-0 text-tiny text-center shrink-0" @mouseenter="openSubNav('category-node-1343', $refs)" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-semibold tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1343" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage.html', '1', ' Visage')" href="https://www.adopt.com/fr/soin-visage.html" title="Visage">Visage</a></span></div> <div class="menu-item level-0 text-tiny text-center shrink-0" @mouseenter="openSubNav('category-node-1443', $refs)" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-semibold tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1443" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage.html', '1', ' Maquillage')" href="https://www.adopt.com/fr/maquillage.html" title="Maquillage">Maquillage</a></span></div> <div class="menu-item level-0 text-tiny text-center shrink-0" @mouseenter="openSubNav('category-node-1428', $refs)" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-semibold tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1428" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux.html', '1', ' Cadeau')" href="https://www.adopt.com/fr/cadeaux.html" title="Cadeau">Cadeau</a></span></div> <div class="menu-item level-0 text-tiny text-center shrink-0" @mouseenter="openSubNav('category-node-1667', $refs)" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-semibold tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny font-bold tracking-[1.77px] category-node" id="category-node-1667" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maison.html', '1', ' Maison')" style="color:#46405a;" href="https://www.adopt.com/fr/maison.html" title="Maison">Maison</a></span></div> <div class="flex items-center justify-start menu-item"><div class="text-center my-auto"><span class="w-1 h-1 bg-anthracite rounded-full relative -top-0.5 inline-block mx-3"></span></div> <div class="level-0 text-tiny text-center shrink-0" @mouseenter="hoverPanelActiveId = 'cms-node-69301d8a38e79'" @mouseleave="hoverPanelActiveId = 0"><span class="flex h-full items-center block text-md bg-opacity-95 relative"><span class="flex main-nav-link main-nav-link--cms cursor-pointer leading-none w-full py-3 px-2 lg:px-2.5 transition duration-300 level-0 text-smaller tracking-spaced-lg font-secondary font-bold">Nos valeurs</span></span></div> <div class="level-0 text-tiny text-center"><span class="flex items-center text-md bg-opacity-95 relative"><a class="main-nav-link leading-none w-full py-3 px-2 lg:px-2.5 transition duration-300 level-0 text-smaller tracking-spaced-lg font-secondary font-bold" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/diagnostic-olfactif/', '1', 'Diagnostic\u0020parfum')" href="https://www.adopt.com/fr/diagnostic-olfactif/" title="Diagnostic parfum">Diagnostic parfum</a></span></div></div></nav> <button class="right-1 top-1/2 -translate-y-1/2 absolute hover:bg-anthracite-200 border border-lavender-lightest bg-white rounded-full p-1 text-pink transition duration-300" type="button" title="Suivant" x-cloak x-show="showNext" @click="nextMenu()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewbox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-3.5 h-auto filter drop-shadow-pink-lighter-icon" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/>
<title/></svg>
</button></div><div id="subnav-wrapper" class="subnav-wrapper absolute z-50 left-0 right-0 px-5"> <div @mouseenter="openSubNav( 'category-node-1473', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1473', 'block' : hoverPanelActiveId === 'category-node-1473' }"><div class="shadow-lg bg-white"> <div class="flex p-12 gap-12"> <div class="flex gap-7"> <a href="https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-parfums.html" title="Cadeaux Femme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-parfums.html', '2', 'Cadeaux Femme')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1473"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/STILL_VISUEL_POURELLE_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/STILL_VISUEL_POURELLE_1_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Cadeaux Femme" title="Cadeaux Femme"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Cadeaux Femme</span></a> <a href="https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-homme.html" title="Cadeaux Homme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-homme.html', '2', 'Cadeaux Homme')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1473"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/STILL_VISUEL_POURLUI_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/STILL_VISUEL_POURLUI_1_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Cadeaux Homme" title="Cadeaux Homme"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Cadeaux Homme</span></a> <a href="https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-soins.html" title="Cadeaux Soins" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-soins.html', '2', 'Cadeaux Soins')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1473"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/STILL_VISUEL_SOINCORPS_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/STILL_VISUEL_SOINCORPS_1_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Cadeaux Soins" title="Cadeaux Soins"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Cadeaux Soins</span></a> <a href="https://www.adopt.com/fr/noel-coffret-parfum/petites-attentions.html" title="Petites attentions" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/petites-attentions.html', '2', 'Petites attentions')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1473"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/STILL_LANDINGPAGE_PETITESATTENTIONS_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/STILL_LANDINGPAGE_PETITESATTENTIONS_1_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Petites attentions" title="Petites attentions"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Petites attentions</span></a> <a href="https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-maquillage.html" title="Cadeaux maquillage" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-maquillage.html', '2', 'Cadeaux maquillage')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1473"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/STILL_VISUEL_MAQUILLAGE_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/STILL_VISUEL_MAQUILLAGE_1_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Cadeaux maquillage" title="Cadeaux maquillage"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Cadeaux maquillage</span></a> <a href="https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-maison.html" title="Cadeaux Maison" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-maison.html', '2', 'Cadeaux Maison')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1473"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_MULTI_NOEL_BOUGIES_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_MULTI_NOEL_BOUGIES_1_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Cadeaux Maison" title="Cadeaux Maison"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Cadeaux Maison</span></a> </div></div></div></div> <div @mouseenter="openSubNav( 'category-node-1472', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1472', 'block' : hoverPanelActiveId === 'category-node-1472' }"><div class="shadow-lg bg-white"> <div class="flex"><div class="pt-12 px-12 flex-1 max-w-[75%] pb-5"><div class="flex items-start gap-28"> <div class="w-fit"><span class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block">Sélections</span> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/parfum/exclusivite-web.html" title="Exclu web" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/exclusivite-web.html', '3', 'Exclu web')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Exclu web</span></a> <a href="https://www.adopt.com/fr/parfum/nouveautes-parfum.html" title="Nouveautés" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/nouveautes-parfum.html', '3', 'Nouveautés')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Nouveautés</span></a> <a href="https://www.adopt.com/fr/parfum/meilleures-ventes-parfum.html" title="Meilleures ventes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/meilleures-ventes-parfum.html', '3', 'Meilleures ventes')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Meilleures ventes</span></a> <a href="https://www.adopt.com/fr/parfum/format-decouverte.html" title="Parfum miniature" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/format-decouverte.html', '3', 'Parfum miniature')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Parfum miniature</span></a> <a href="https://www.adopt.com/fr/parfum/magic-touch.html" title="Magic Touch" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/magic-touch.html', '3', 'Magic Touch')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Magic Touch</span></a> <a href="https://www.adopt.com/fr/diagnostic-olfactif" title="Faire mon diagnostic" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/diagnostic-olfactif/', '3', 'Faire\u0020mon\u0020diagnostic')" class="text-xxs font-medium uppercase gradient-text-purple tracking-[2.57px]" data-parent-id="category-node-1472" >Faire mon diagnostic</a> </div></div> <div class="gap-10 w-fit columns-4"> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/parfum/parfum-femme.html" title="Parfum femme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme.html', '2','Parfum femme')" data-parent-id="category-node-1472" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Parfum femme</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/parfum/parfum-femme/eau-de-parfum-femme.html" title="Eau de parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme/eau-de-parfum-femme.html', '3', 'Eau de parfum')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Eau de parfum</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-femme/coffret-parfum-femme.html" title="Coffret parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme/coffret-parfum-femme.html', '3', 'Coffret parfum')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Coffret parfum</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-femme/collection-voyage.html" title="Les Voyages" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme/collection-voyage.html', '3', 'Les Voyages')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Les Voyages</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-femme/parfum-intense.html" title="Les Intenses" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme/parfum-intense.html', '3', 'Les Intenses')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Les Intenses</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-femme/brume-parfumee.html" title="Brume Parfumée" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme/brume-parfumee.html', '3', 'Brume Parfumée')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Brume Parfumée</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-femme.html" title="Parfum femme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-femme.html', '3', 'Parfum femme')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/parfum/parfum-homme.html" title="Parfum homme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-homme.html', '2','Parfum homme')" data-parent-id="category-node-1472" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Parfum homme</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/parfum/parfum-homme/eau-de-parfum-homme.html" title="Eau de parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-homme/eau-de-parfum-homme.html', '3', 'Eau de parfum')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Eau de parfum</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-homme/coffret-parfum-homme.html" title="Coffret parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-homme/coffret-parfum-homme.html', '3', 'Coffret parfum')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Coffret parfum</span></a> <a href="https://www.adopt.com/fr/parfum/parfum-homme.html" title="Parfum homme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-homme.html', '3', 'Parfum homme')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/parfum/parfum-mixte.html" title="Parfum mixte" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-mixte.html', '2','Parfum mixte')" data-parent-id="category-node-1472" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Parfum mixte</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/parfum/parfum-mixte.html" title="Parfum mixte" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/parfum-mixte.html', '3', 'Parfum mixte')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/parfum/envie-de-parfum.html" title="Univers olfactif" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum.html', '2','Univers olfactif')" data-parent-id="category-node-1472" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Univers olfactif</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/coton-et-douceur.html" title="Les délicats" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/coton-et-douceur.html', '3', 'Les délicats')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Les délicats</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/boise-et-caractere.html" title="Les caractères" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/boise-et-caractere.html', '3', 'Les caractères')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Les caractères</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/fraicheur-et-agrume.html" title="Les frais" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/fraicheur-et-agrume.html', '3', 'Les frais')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Les frais</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/fleurs-et-romantisme.html" title="Les floraux" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/fleurs-et-romantisme.html', '3', 'Les floraux')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Les floraux</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/fruits-et-plaisir.html" title="Les fruités" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/fruits-et-plaisir.html', '3', 'Les fruités')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Les fruités</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/gourmandise-et-seduction.html" title="Les gourmands" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/gourmandise-et-seduction.html', '3', 'Les gourmands')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Les gourmands</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum/soleil-et-sensualite.html" title="Les solaires" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum/soleil-et-sensualite.html', '3', 'Les solaires')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Les solaires</span></a> <a href="https://www.adopt.com/fr/parfum/envie-de-parfum.html" title="Univers olfactif" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/envie-de-parfum.html', '3', 'Univers olfactif')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/parfum/accessoire-parfum.html" title="Accessoire Parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/accessoire-parfum.html', '2','Accessoire Parfum')" data-parent-id="category-node-1472" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Accessoire Parfum</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/parfum/accessoire-parfum.html" title="Accessoire Parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum/accessoire-parfum.html', '3', 'Accessoire Parfum')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> </div></div> <div><div class="flex justify-between"><div class="text-pink uppercase text-xxs font-semibold tracking-spaced-lg mb-5"><a href="https://www.adopt.com/fr/parfum/famille-olfactive.html">#notesolfactives</a></div><div class="olfactive-notes__navigation text-pink flex hidden" x-ref="olfactiveNav"><button type="button" @click="prevOlfactive($refs)" class="olfactive-notes__navigation__item prev p-2.5 inline-block hover:text-lavender transition duration-300 -scale-x-100" :class="{'opacity-30' : sliderPosition === 'start'}"><svg width="8" height="14" version="1.1" viewbox="0 0 8 14" xmlns="http://www.w3.org/2000/svg"><g transform="translate(.5385 .5385)" fill="none" fill-rule="evenodd" stroke-linecap="round"><path d="m6.4615 6.4615-6 6m6-6-6-6" stroke="currentColor" stroke-width="2"></path></g></svg></button> <button type="button" @click="nextOlfactive($refs)" class="olfactive-notes__navigation__item next px-2.5 py-2 inline-block hover:text-lavender transition duration-300" :class="{'opacity-30' : sliderPosition === 'end'}"><svg width="8" height="14" version="1.1" viewbox="0 0 8 14" xmlns="http://www.w3.org/2000/svg"><g transform="translate(.5385 .5385)" fill="none" fill-rule="evenodd" stroke-linecap="round"><path d="m6.4615 6.4615-6 6m6-6-6-6" stroke="currentColor" stroke-width="2"></path></g></svg></button></div></div><div class="olfactive-notes w-full pb-1.25 overflow-hidden" @resize.window.debounce.100="isMobile = window.outerWidth < 768; loadSliderOlfactive($refs)" x-ref="olfactiveWrapper"><div class="olfactive-notes__content flex gap-2.5 w-fit relative" x-ref="olfactiveContent"> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-vanille-famille-olfactive.html"> #Vanille</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-fleurs-d-oranger-famille-olfactive.html"> #Fleurs d'oranger</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-rose-famille-olfactive.html"> #Rose</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-patchouly-famille-olfactive.html"> #Patchouli</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-monoi-famille-olfactive.html"> #Monoï</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-muscfamille-olfactive.html"> #Musc</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-ambre-famille-olfactive.html"> #Ambre</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-oud-famille-olfactive.html"> #Oud</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/fr/parfum/famille-olfactive/parfum-coco-note-olfactive.html"> #Coco</a> </div></div></div></div> <div class="max-w-[25%]"> <a href="https://www.adopt.com/fr/parfum/parfum-femme/eau-de-parfum-femme.html" @click.prevent="clickMenuBannerEvent('https://www.adopt.com/fr/parfum/parfum-femme/eau-de-parfum-femme.html', 'Parfum')"> <img class="h-full" loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_ANIM_WEB_NOEL_1_JOALIA_Overlay_NOUVEAU_FR_2.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_ANIM_WEB_NOEL_1_JOALIA_Overlay_NOUVEAU_FR_2.png" data-twic-transform="max=450" alt="Parfum" title="Parfum" /></a> </div></div> </div></div> <div @mouseenter="openSubNav( 'category-node-1369', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1369', 'block' : hoverPanelActiveId === 'category-node-1369' }"><div class="shadow-lg bg-white"> <div class="flex"><div class="pt-12 px-12 flex-1 max-w-[75%] pb-5"><div class="flex items-start gap-28"> <div class="w-fit"><span class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block">Sélections</span> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/soin-corps/nouveautes-soin-corps.html" title="Nouveautés" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/nouveautes-soin-corps.html', '3', 'Nouveautés')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Nouveautés</span></a> <a href="https://www.adopt.com/fr/soin-corps/meilleures-ventes-soin-corps.html" title="Meilleures ventes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/meilleures-ventes-soin-corps.html', '3', 'Meilleures ventes')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Meilleures ventes</span></a> <a href="https://www.adopt.com/fr/soin-corps/soins-d-exception-corps.html" title="Karité & Argan" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soins-d-exception-corps.html', '3', 'Karité & Argan')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Karité & Argan</span></a> <a href="https://www.adopt.com/fr/soin-corps/soins-corps-homme.html" title="Homme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soins-corps-homme.html', '3', 'Homme')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Homme</span></a> <a href="https://www.adopt.com/fr/soin-corps/beaute-d-orient.html" title="Beauté d'Orient" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/beaute-d-orient.html', '3', 'Beauté d\'Orient')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Beauté d'Orient</span></a> <a href="https://www.adopt.com/fr/soin-corps/gamme-bain.html" title="Gamme bain" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/gamme-bain.html', '3', 'Gamme bain')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Gamme bain</span></a> </div></div> <div class="gap-10 w-fit columns-4"> <div class="break-inside-avoid-column"> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit.html" title="Par produit" class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block">Par produit</a> <div class="gap-2.5 mb-2.5 flex flex-col"> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gel-douche-parfume.html" title="Gel douche parfumé" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gel-douche-parfume.html', '3', 'Gel douche parfumé')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Gel douche parfumé</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/creme-et-lait-corps.html" title="Crème & lait corps" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/creme-et-lait-corps.html', '3', 'Crème & lait corps')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Crème & lait corps</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/soin-des-mains.html" title="Crème mains" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/soin-des-mains.html', '3', 'Crème mains')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Crème mains</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gommage-corps.html" title="Gommage corps" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gommage-corps.html', '3', 'Gommage corps')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Gommage corps</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/deodorant.html" title="Déodorant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/deodorant.html', '3', 'Déodorant')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Déodorant</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit.html" title="Par produit" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit.html', '3', 'Par produit')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"> <div class="h-4.5 mb-6"></div> <div class="gap-2.5 mb-2.5 flex flex-col"> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/huile-corps.html" title="Huile corps" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/huile-corps.html', '3', 'Huile corps')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Huile corps</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gelee-corps.html" title="Gelée corps" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gelee-corps.html', '3', 'Gelée corps')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Gelée corps</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/bombe-de-bain.html" title="Bombe de bain" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/bombe-de-bain.html', '3', 'Bombe de bain')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Bombe de bain</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/accessoires-corps.html" title="Accessoire corps" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/accessoires-corps.html', '3', 'Accessoire corps')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Accessoire corps</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action.html" title="Par action" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action.html', '2','Par action')" data-parent-id="category-node-1369" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Par action</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-hydratant.html" title="Hydratant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-hydratant.html', '3', 'Hydratant')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Hydratant</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-nourrissant.html" title="Nourrissant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-nourrissant.html', '3', 'Nourrissant')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Nourrissant</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-eclat.html" title="Éclat" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-eclat.html', '3', 'Éclat')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Éclat</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-exfoliant.html" title="Exfoliant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-exfoliant.html', '3', 'Exfoliant')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Exfoliant</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-nettoyant.html" title="Nettoyant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action/soin-corps-nettoyant.html', '3', 'Nettoyant')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Nettoyant</span></a> <a href="https://www.adopt.com/fr/soin-corps/soin-corps-par-action.html" title="Par action" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/soin-corps-par-action.html', '3', 'Par action')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume.html" title="Rituel soin parfumé" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume.html', '2','Rituel soin parfumé')" data-parent-id="category-node-1369" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Rituel soin parfumé</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/joalia.html" title="Joalia" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/joalia.html', '3', 'Joalia')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Joalia</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/onyx.html" title="Onyx" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/onyx.html', '3', 'Onyx')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Onyx</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/solaria.html" title="Solaria" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/solaria.html', '3', 'Solaria')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Solaria</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/monoi-des-iles.html" title="Monoï des îles" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/monoi-des-iles.html', '3', 'Monoï des îles')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Monoï des îles</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/monoi-blanc.html" title="Monoï Blanc" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/monoi-blanc.html', '3', 'Monoï Blanc')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Monoï Blanc</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/tahiti-paradis.html" title="Tahiti Paradis" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/tahiti-paradis.html', '3', 'Tahiti Paradis')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Tahiti Paradis</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/sunny-vibes.html" title="Sunny Vibes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/sunny-vibes.html', '3', 'Sunny Vibes')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Sunny Vibes</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/blackstone.html" title="Blackstone" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/blackstone.html', '3', 'Blackstone')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Blackstone</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/fleur-de-tiare.html" title="Fleur des Tropiques" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/fleur-de-tiare.html', '3', 'Fleur des Tropiques')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Fleur des Tropiques</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/l-or-des-sables.html" title="L'or des Sables" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/l-or-des-sables.html', '3', 'L\'or des Sables')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">L'or des Sables</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/reve-de-coco.html" title="Rêve de coco" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/reve-de-coco.html', '3', 'Rêve de coco')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Rêve de coco</span></a> <a href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume.html" title="Rituel soin parfumé" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps/rituel-soin-parfume.html', '3', 'Rituel soin parfumé')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> </div></div></div> <div class="max-w-[25%]"> <a href="https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-soins.html" @click.prevent="clickMenuBannerEvent('https://www.adopt.com/fr/noel-coffret-parfum/cadeaux-soins.html', 'Corps')"> <img class="h-full" loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_ANIM_WEB_NOEL_1_SOINS_Gamme_Vanille_Rupture_Merch_DESK_FR.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_ANIM_WEB_NOEL_1_SOINS_Gamme_Vanille_Rupture_Merch_DESK_FR.png" data-twic-transform="max=450" alt="Corps" title="Corps" /></a> </div></div> </div></div> <div @mouseenter="openSubNav( 'category-node-1343', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1343', 'block' : hoverPanelActiveId === 'category-node-1343' }"><div class="shadow-lg bg-white"> <div class="flex"><div class="pt-12 px-12 flex-1 max-w-[75%] pb-5"><div class="flex items-start gap-28"> <div class="w-fit"><span class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block">Sélections</span> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/soin-visage/nouveautes-soin-visage.html" title="Nouveautés" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/nouveautes-soin-visage.html', '3', 'Nouveautés')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Nouveautés</span></a> <a href="https://www.adopt.com/fr/soin-visage/meilleures-ventes-soin-visage.html" title="Meilleures ventes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/meilleures-ventes-soin-visage.html', '3', 'Meilleures ventes')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Meilleures ventes</span></a> </div></div> <div class="gap-10 w-fit columns-4"> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit.html" title="Par produit" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit.html', '2','Par produit')" data-parent-id="category-node-1343" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Par produit</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/demaquillants.html" title="Démaquillants" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/demaquillants.html', '3', 'Démaquillants')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Démaquillants</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/nettoyants.html" title="Nettoyants" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/nettoyants.html', '3', 'Nettoyants')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Nettoyants</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/masques-exfoliants.html" title="Masques & Exfoliants" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/masques-exfoliants.html', '3', 'Masques & Exfoliants')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Masques & Exfoliants</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/serums.html" title="Sérums" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/serums.html', '3', 'Sérums')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Sérums</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/soin-contour-des-yeux.html" title="Soin contour des yeux" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/soin-contour-des-yeux.html', '3', 'Soin contour des yeux')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Soin contour des yeux</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/creme-jour-et-nuit.html" title="Crème jour et nuit" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit/creme-jour-et-nuit.html', '3', 'Crème jour et nuit')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Crème jour et nuit</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-produit.html" title="Par produit" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-produit.html', '3', 'Par produit')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-action.html" title="Par action" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-action.html', '2','Par action')" data-parent-id="category-node-1343" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Par action</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-action/hydratation-eclat.html" title="Hydratation & Eclat" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-action/hydratation-eclat.html', '3', 'Hydratation & Eclat')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Hydratation & Eclat</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-action/purifiant-matifiant.html" title="Purifiant & Matifiant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-action/purifiant-matifiant.html', '3', 'Purifiant & Matifiant')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Purifiant & Matifiant</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-action/lissant-repulpant.html" title="Lissant & Repulpant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-action/lissant-repulpant.html', '3', 'Lissant & Repulpant')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Lissant & Repulpant</span></a> <a href="https://www.adopt.com/fr/soin-visage/soin-visage-par-action.html" title="Par action" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/soin-visage-par-action.html', '3', 'Par action')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/soin-visage/par-actif.html" title="Par Actif" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif.html', '2','Par Actif')" data-parent-id="category-node-1343" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Par Actif</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/soin-visage/par-actif/zinc.html" title="Zinc" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/zinc.html', '3', 'Zinc')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Zinc</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/acide-salicylique.html" title="Acide salicylique" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/acide-salicylique.html', '3', 'Acide salicylique')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Acide salicylique</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/argile.html" title="Argile" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/argile.html', '3', 'Argile')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Argile</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/vitamine-c.html" title="Vitamine C" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/vitamine-c.html', '3', 'Vitamine C')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Vitamine C</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/acide-hyaluronique.html" title="Acide hyaluronique" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/acide-hyaluronique.html', '3', 'Acide hyaluronique')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Acide hyaluronique</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/cafeine.html" title="Caféine" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/cafeine.html', '3', 'Caféine')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Caféine</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif/huile-amande-douce.html" title="Huile amande douce" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif/huile-amande-douce.html', '3', 'Huile amande douce')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Huile amande douce</span></a> <a href="https://www.adopt.com/fr/soin-visage/par-actif.html" title="Par Actif" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage/par-actif.html', '3', 'Par Actif')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> </div></div></div> <div class="max-w-[25%]"> <a href="https://www.adopt.com/fr/soin-visage.html" @click.prevent="clickMenuBannerEvent('https://www.adopt.com/fr/soin-visage.html', 'Visage')"> <img class="h-full" loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOM_Delicieux_Interdits_Overlay_Gamme_Lissante_FR.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOM_Delicieux_Interdits_Overlay_Gamme_Lissante_FR.png" data-twic-transform="max=450" alt="Visage" title="Visage" /></a> </div></div> </div></div> <div @mouseenter="openSubNav( 'category-node-1443', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1443', 'block' : hoverPanelActiveId === 'category-node-1443' }"><div class="shadow-lg bg-white"> <div class="flex"><div class="pt-12 px-12 flex-1 max-w-[75%] pb-5"><div class="flex items-start gap-28"> <div class="w-fit"><span class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block">Sélections</span> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/maquillage/nouveautes-maquillage.html" title="Nouveautés" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/nouveautes-maquillage.html', '3', 'Nouveautés')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Nouveautés</span></a> <a href="https://www.adopt.com/fr/maquillage/meilleures-ventes-maquillage.html" title="Meilleures ventes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/meilleures-ventes-maquillage.html', '3', 'Meilleures ventes')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Meilleures ventes</span></a> </div></div> <div class="gap-10 w-fit columns-4"> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/maquillage/maquillage-teint.html" title="Teint" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint.html', '2','Teint')" data-parent-id="category-node-1443" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Teint</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/fond-de-teint.html" title="Fond de teint" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/fond-de-teint.html', '3', 'Fond de teint')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Fond de teint</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/anti-cernes-et-correcteur.html" title="Correcteur & anti-cernes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/anti-cernes-et-correcteur.html', '3', 'Correcteur & anti-cernes')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Correcteur & anti-cernes</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/base-de-teint-et-fixateur.html" title="Base de teint & fixateur" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/base-de-teint-et-fixateur.html', '3', 'Base de teint & fixateur')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Base de teint & fixateur</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/blush.html" title="Blush & enlumineur" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/blush.html', '3', 'Blush & enlumineur')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Blush & enlumineur</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/poudre.html" title="Poudre" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/poudre.html', '3', 'Poudre')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Poudre</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint/accessoires-teint.html" title="Accessoire teint" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint/accessoires-teint.html', '3', 'Accessoire teint')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Accessoire teint</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-teint.html" title="Teint" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-teint.html', '3', 'Teint')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/maquillage/maquillage-yeux.html" title="Yeux" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux.html', '2','Yeux')" data-parent-id="category-node-1443" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Yeux</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/mascara.html" title="Mascara" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/mascara.html', '3', 'Mascara')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Mascara</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/eyeliner.html" title="Eyeliner" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/eyeliner.html', '3', 'Eyeliner')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Eyeliner</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/crayon-pour-les-yeux.html" title="Crayon" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/crayon-pour-les-yeux.html', '3', 'Crayon')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Crayon</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/fard-a-paupieres.html" title="Fard à paupières" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/fard-a-paupieres.html', '3', 'Fard à paupières')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Fard à paupières</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/sourcil.html" title="Sourcils" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/sourcil.html', '3', 'Sourcils')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Sourcils</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/palette-yeux.html" title="Palette" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/palette-yeux.html', '3', 'Palette')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Palette</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux/accessoires-yeux.html" title="Accessoire yeux" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux/accessoires-yeux.html', '3', 'Accessoire yeux')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Accessoire yeux</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-yeux.html" title="Yeux" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-yeux.html', '3', 'Yeux')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/maquillage/maquillage-levres.html" title="Lèvres" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-levres.html', '2','Lèvres')" data-parent-id="category-node-1443" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Lèvres</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/maquillage/maquillage-levres/rouge-a-levres.html" title="Rouge à lèvres" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-levres/rouge-a-levres.html', '3', 'Rouge à lèvres')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Rouge à lèvres</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-levres/gloss.html" title="Gloss" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-levres/gloss.html', '3', 'Gloss')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Gloss</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-levres/baume-a-levres.html" title="Baume à lèvres" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-levres/baume-a-levres.html', '3', 'Baume à lèvres')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Baume à lèvres</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-levres.html" title="Lèvres" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-levres.html', '3', 'Lèvres')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/maquillage/maquillage-ongles.html" title="Ongles" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-ongles.html', '2','Ongles')" data-parent-id="category-node-1443" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Ongles</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/maquillage/maquillage-ongles/vernis-a-ongles.html" title="Vernis à ongles" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-ongles/vernis-a-ongles.html', '3', 'Vernis à ongles')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Vernis à ongles</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-ongles/accessoires-manucure.html" title="Accessoire manucure" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-ongles/accessoires-manucure.html', '3', 'Accessoire manucure')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Accessoire manucure</span></a> <a href="https://www.adopt.com/fr/maquillage/maquillage-ongles.html" title="Ongles" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage/maquillage-ongles.html', '3', 'Ongles')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> </div></div></div> <div class="max-w-[25%]"> <a href="https://www.adopt.com/fr/maquillage.html" @click.prevent="clickMenuBannerEvent('https://www.adopt.com/fr/maquillage.html', 'Maquillage')"> <img class="h-full" loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_NIGHT_ICON_Overlay_FR_0_5x_3_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_NIGHT_ICON_Overlay_FR_0_5x_3_1.png" data-twic-transform="max=450" alt="Maquillage" title="Maquillage" /></a> </div></div> </div></div> <div @mouseenter="openSubNav( 'category-node-1428', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1428', 'block' : hoverPanelActiveId === 'category-node-1428' }"><div class="shadow-lg bg-white"> <div class="flex"><div class="pt-12 px-12 flex-1 max-w-[75%] pb-5"><div class="flex items-start gap-28"> <div class="w-fit"><span class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block">Sélections</span> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-coups-de-coeur.html" title="Nos coups de coeur" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-coups-de-coeur.html', '3', 'Nos coups de coeur')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Nos coups de coeur</span></a> <a href="https://www.adopt.com/fr/cadeaux/exclu-web.html" title="Exclu web" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/exclu-web.html', '3', 'Exclu web')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Exclu web</span></a> <a href="https://www.adopt.com/fr/cadeaux/emballage-cadeaux.html" title="Emballage cadeau" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/emballage-cadeaux.html', '3', 'Emballage cadeau')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Emballage cadeau</span></a> <a href="https://www.adopt.com/fr/guide-cadeaux-adopt" title="Guide cadeau" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/guide-cadeaux-adopt', '3', 'Guide\u0020cadeau')" class="text-xxs font-medium uppercase gradient-text-purple tracking-[2.57px]" data-parent-id="category-node-1428" >Guide cadeau</a> </div></div> <div class="gap-10 w-fit columns-2"> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui.html" title="Pour qui" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui.html', '2','Pour qui')" data-parent-id="category-node-1428" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Pour qui</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-femme.html" title="Cadeau Femme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-femme.html', '3', 'Cadeau Femme')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Cadeau Femme</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-lui.html" title="Cadeau Homme" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-lui.html', '3', 'Cadeau Homme')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Cadeau Homme</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-enfant.html" title="Cadeau Enfant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui/cadeaux-pour-enfant.html', '3', 'Cadeau Enfant')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Cadeau Enfant</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui.html" title="Pour qui" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-pour-qui.html', '3', 'Pour qui')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/fr/cadeaux/cadeaux-par-prix.html" title="Par prix" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-par-prix.html', '2','Par prix')" data-parent-id="category-node-1428" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block">Par prix</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-moins-de-10-euros.html" title="Petits prix" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-moins-de-10-euros.html', '3', 'Petits prix')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Petits prix</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-entre-10-et-20-euros.html" title="Moins de 20€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-entre-10-et-20-euros.html', '3', 'Moins de 20€')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Moins de 20€</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-entre-20-et-30-euros.html" title="Entre 20 et 30€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-entre-20-et-30-euros.html', '3', 'Entre 20 et 30€')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Entre 20 et 30€</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-plus-de-30-euros.html" title="Cadeau premium" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-par-prix/cadeaux-plus-de-30-euros.html', '3', 'Cadeau premium')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Cadeau premium</span></a> <a href="https://www.adopt.com/fr/cadeaux/cadeaux-par-prix.html" title="Par prix" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux/cadeaux-par-prix.html', '3', 'Par prix')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Voir tout</span></a> </div></div> </div></div></div> <div class=""> <a href="https://www.adopt.com/fr/calendrier-de-l-avent.html" @click.prevent="clickMenuBannerEvent('https://www.adopt.com/fr/calendrier-de-l-avent.html', 'Cadeau')"> <img class="h-full" loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_CALENDRIERS_Overlay_FR_0_5x_3.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_CALENDRIERS_Overlay_FR_0_5x_3.png" data-twic-transform="max=450" alt="Cadeau" title="Cadeau" /></a> </div></div> </div></div> <div @mouseenter="openSubNav( 'category-node-1667', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1667', 'block' : hoverPanelActiveId === 'category-node-1667' }"><div class="shadow-lg bg-white"> <div class="flex p-12 gap-12"> <div class="flex gap-7"> <a href="https://www.adopt.com/fr/maison/bougie-parfumee.html" title="Bougie parfumée" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maison/bougie-parfumee.html', '2', 'Bougie parfumée')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1667"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_HOME_CANDLE_JARDINDESROSES_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_HOME_CANDLE_JARDINDESROSES_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Bougie parfumée" title="Bougie parfumée"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Bougie parfumée</span></a> <a href="https://www.adopt.com/fr/maison/parfums-d-interieur.html" title="Parfums d'intérieur" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maison/parfums-d-interieur.html', '2', 'Parfums d\'intérieur')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1667"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_HOME_MULTI_DIFFUSER_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_HOME_MULTI_DIFFUSER_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Parfums d'intérieur" title="Parfums d'intérieur"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Parfums d'intérieur</span></a> <a href="https://www.adopt.com/fr/maison/huile-essentielle.html" title="Huile essentielle" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maison/huile-essentielle.html', '2', 'Huile essentielle')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1667"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/PLV_BRUME_D_OREILLER_LAVANDE_4.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/PLV_BRUME_D_OREILLER_LAVANDE_4.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Huile essentielle" title="Huile essentielle"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Huile essentielle</span></a> </div></div></div></div> <div @mouseenter="openSubNav( 'cms-node-69301d8a38e79', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'cms-node-69301d8a38e79', 'block' : hoverPanelActiveId === 'cms-node-69301d8a38e79' }"><div class="shadow-lg bg-white"><div class="p-1 flex items-stretch gap-5 w-full" x-data="initSliderMenuPage(5)"> <button type="button" class="z-1 absolute flex justify-center items-center left-10 top-0 bottom-0 border border-anthracite-500 my-auto w-15 h-15 rounded-full bg-white" @click="prev()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewbox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="text-anthracite-500 w-5 h-auto transform rotate-180" width="8" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/>
<title/></svg>
</button> <div class="overflow-hidden flex-1"><ul class="flex justify-between transition-all duration-300 gap-1" :style="calcSlider()"> <li class="w-1/4"><a class="block group relative" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/programme-colibri', '2', 'Les Programmes Colibri')" href="https://www.adopt.com/fr/programme-colibri" title="Les Programmes Colibri"><img loading="lazy" class="w-full rounded-[10px] h-[440px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/carr__0.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/carr__0.jpg" data-twic-transform="max=500" alt="Les Programmes Colibri" title="Les Programmes Colibri"><button class="absolute bottom-5 btn btn-primary-white-cta min-h-[60px] mx-auto left-0 right-0 w-fit">Les Programmes Colibri</button></a></li> <li class="w-1/4"><a class="block group relative" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/nos-engagements', '2', 'Nos engagements')" href="https://www.adopt.com/fr/nos-engagements" title="Nos engagements"><img loading="lazy" class="w-full rounded-[10px] h-[440px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/nos_engagements.jpg_1__0.png?twic=v1/output=preview" data-twic-src="image:media/picto/image/nos_engagements.jpg_1__0.png" data-twic-transform="max=500" alt="Nos engagements" title="Nos engagements"><button class="absolute bottom-5 btn btn-primary-white-cta min-h-[60px] mx-auto left-0 right-0 w-fit">Nos engagements</button></a></li> <li class="w-1/4"><a class="block group relative" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/l-univers-adopt', '2', 'L\'univers adopt')" href="https://www.adopt.com/fr/l-univers-adopt" title="L'univers adopt"><img loading="lazy" class="w-full rounded-[10px] h-[440px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/Adopt_0505_Capots_2_Invio_0.png?twic=v1/output=preview" data-twic-src="image:media/picto/image/Adopt_0505_Capots_2_Invio_0.png" data-twic-transform="max=500" alt="L'univers adopt" title="L'univers adopt"><button class="absolute bottom-5 btn btn-primary-white-cta min-h-[60px] mx-auto left-0 right-0 w-fit">L'univers adopt</button></a></li> <li class="w-1/4"><a class="block group relative" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/savoir-faire', '2', 'Savoir-faire')" href="https://www.adopt.com/fr/savoir-faire" title="Savoir-faire"><img loading="lazy" class="w-full rounded-[10px] h-[440px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/savoir-faire-adopt_1.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/savoir-faire-adopt_1.jpg" data-twic-transform="max=500" alt="Savoir-faire" title="Savoir-faire"><button class="absolute bottom-5 btn btn-primary-white-cta min-h-[60px] mx-auto left-0 right-0 w-fit">Savoir-faire</button></a></li> <li class="w-1/4"><a class="block group relative" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/nos-services-en-boutique', '2', 'Nos services en boutique')" href="https://www.adopt.com/fr/nos-services-en-boutique" title="Nos services en boutique"><img loading="lazy" class="w-full rounded-[10px] h-[440px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/service_en_boutique_0.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/service_en_boutique_0.jpg" data-twic-transform="max=500" alt="Nos services en boutique" title="Nos services en boutique"><button class="absolute bottom-5 btn btn-primary-white-cta min-h-[60px] mx-auto left-0 right-0 w-fit">Nos services en boutique</button></a></li> </ul></div> <button type="button" class="z-1 absolute flex justify-center items-center right-10 top-0 bottom-0 border border-anthracite-500 my-auto w-15 h-15 rounded-full bg-white" @click="next()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewbox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="text-anthracite-500 w-5 h-auto" width="8" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/>
<title/></svg>
</button> </div></div></div></div></div><script>
'use strict';
const initMenuDesktop_69301d8a3855a = () => {
return {
hoverPanelActiveId: null,
isOpenSubNav: false,
isMobile: window.outerWidth < 768,
hasOlfactiveSlider: false,
lastOlfactiveShow: 0,
childOlfactive: [],
numberChild: 0,
sliderPosition: 'start',
showPrevious: false,
showNext: false,
init() {
this.resizeMenu();
},
resizeMenu() {
const containerWidth = this.$refs.slider.offsetWidth;
const scrollWidth = this.$refs.slider.scrollWidth;
this.showNext = scrollWidth > containerWidth;
this.$refs.slider.scrollLeft = 0;
this.showPrevious = false;
},
nextMenu() {
const containerWidth = this.$refs.slider.offsetWidth;
const scrollAmount = containerWidth * 0.8;
const currentScroll = this.$refs.slider.scrollLeft;
const maxScroll = this.$refs.slider.scrollWidth - containerWidth;
const newScrollLeft = Math.min(currentScroll + scrollAmount, maxScroll);
this.$refs.slider.scrollLeft = newScrollLeft;
this.showPrevious = newScrollLeft > 0;
this.showNext = newScrollLeft < maxScroll;
},
prevMenu() {
const containerWidth = this.$refs.slider.offsetWidth;
const scrollAmount = containerWidth * 0.8;
const currentScroll = this.$refs.slider.scrollLeft;
const maxScroll = this.$refs.slider.scrollWidth - containerWidth;
const newScrollLeft = Math.max(currentScroll - scrollAmount, 0);
this.$refs.slider.scrollLeft = newScrollLeft;
this.showPrevious = newScrollLeft > 0;
this.showNext = newScrollLeft < maxScroll;
},
setActiveMenu(menuNode) {
Array.from(menuNode.querySelectorAll('a')).filter(link => {
return link.href === window.location.href.split('?')[0];
}).map(item => {
if (item.classList.contains('main-nav-link')) {
item.classList.add('current');
} else {
const parentId = item.getAttribute('data-parent-id');
const element = document.querySelector('#' + parentId);
element && element.classList.add('current');
}
});
},
clickMenuEntryEvent(url, level, label, blank = false) {
window.dataLayer?.push({
'event': 'clicMenuniveau' + level,
'text': label
});
if (blank) {
window.open(url, '_blank');
} else {
window.location.href = url
}
},
clickMenuBannerEvent(url, label) {
window.dataLayer?.push({
'event': 'clicMenuBannière',
'text': label
});
window.location.href = url
},
openSubNav(idCat, $refs) {
this.hoverPanelActiveId = idCat;
const subnavWrapper = document.getElementById('subnav-wrapper');
const subnavContent = document.querySelectorAll('.subnav-content');
if (document.body.classList.contains('catalog-product-view')) {
subnavWrapper.style.top = document.querySelector('#header').offsetHeight - 10 + 'px';
} else {
subnavWrapper.style.top = document.querySelector('#header').offsetHeight + 'px';
}
if (idCat !== 0) {
this.isOpenSubNav = true;
subnavWrapper.style.maxHeight = 'calc(100vh - ' + subnavWrapper.getBoundingClientRect().top + 'px - 2px)';
subnavContent.forEach(item => {
item.style.maxHeight = 'calc(100vh - ' + subnavWrapper.getBoundingClientRect().top + 'px - 2px)';
this.loadSliderOlfactive($refs);
})
window.dispatchEvent(
new CustomEvent('open-menu-subnav')
);
} else {
this.isOpenSubNav = false;
subnavWrapper.style.maxHeight = 'unset';
subnavContent.forEach(item => {
item.style.maxHeight = 'unset';
});
window.dispatchEvent(
new CustomEvent('close-menu-subnav')
);
}
},
loadSliderOlfactive($refs) {
if ($refs.olfactiveContent) {
if ($refs.olfactiveContent.offsetWidth > $refs.olfactiveWrapper.offsetWidth && !this.isMobile) {
this.hasOlfactiveSlider = true;
$refs.olfactiveNav.classList.remove('hidden');
}
$refs.olfactiveContent.dataset.translate = 0;
let child = []
$refs.olfactiveContent.childNodes.forEach(item => {
if (item.nodeType === 1) {
this.childOlfactive.push(item);
if ((item.offsetLeft + item.offsetWidth) > $refs.olfactiveWrapper.offsetWidth) {
item.classList.add('no-showed')
child.push(item);
}
}
})
this.numberChild = this.childOlfactive.length - 1;
this.lastOlfactiveShow = child[0];
}
},
prevOlfactive($refs) {
if ($refs.olfactiveContent.dataset.translate > 0 && this.lastOlfactiveShow.previousElementSibling !== null) {
this.lastOlfactiveShow = this.lastOlfactiveShow.previousElementSibling;
let translation = $refs.olfactiveContent.dataset.translate - this.lastOlfactiveShow.previousElementSibling.offsetWidth - 10;
$refs.olfactiveContent.style.marginLeft = "-" + translation + "px";
$refs.olfactiveContent.dataset.translate = translation;
this.sliderPosition = null
} else {
$refs.olfactiveContent.style.marginLeft = 0;
$refs.olfactiveContent.dataset.translate = 0;
this.sliderPosition = 'start';
}
},
nextOlfactive($refs) {
if (this.lastOlfactiveShow.nextElementSibling !== null) {
this.lastOlfactiveShow = this.lastOlfactiveShow.nextElementSibling;
let translation = this.lastOlfactiveShow.offsetWidth - ($refs.olfactiveWrapper.offsetWidth - this.lastOlfactiveShow.offsetLeft) + 10
$refs.olfactiveContent.style.marginLeft = "-" + translation + "px";
$refs.olfactiveContent.dataset.translate = translation;
this.sliderPosition = null
} else {
this.sliderPosition = "end"
}
}
}
}
function initSliderMenuPage(numberSlide) {
return {
currentSlide: 1,
sliderPosition: 0,
widthWrapper: 100,
gap: 24,
next() {
if (this.currentSlide < numberSlide && this.currentSlide < (numberSlide - 3)) {
this.currentSlide = this.currentSlide + 1;
} else {
this.currentSlide = 1;
}
},
prev() {
if (this.currentSlide <= 1) {
this.currentSlide = numberSlide - 3;
} else {
this.currentSlide = this.currentSlide - 1;
}
},
calcSlider() {
this.sliderPosition = (100 / 4) * this.currentSlide
this.widthWrapper = (100 / 4) * numberSlide;
return 'width: calc(' + this.widthWrapper + '%); margin-left: calc(-' + this.sliderPosition + '% + 25%)';
},
clickMenuEntryEvent(url, level, label) {
window.dataLayer?.push({
'event': 'clicMenuniveau' + level,
'text': label
});
window.location.href = url
}
}
}</script></div></div> <script>
function initCartDrawer() {
return {
open: false,
cart: {},
twicPicsUrl: 'https://adopt.twic.pics/media/',
getData(data) {
if (data.cart) {
this.cart = data.cart
this.freeShippingValue = this.cart.freeShippingAmount;
this.setCartItems();
}
},
cartItems: {},
setCartItems() {
if (this.cart && this.cart.items) {
this.cartItems = this.cart.items;
} else {
this.cartItems = {};
}
},
deleteItemFromCart(item, itemId) {
this.isLoading = true;
const itemToDelete = item;
const self = this;
const formKey = hyva.getFormKey();
const postUrl = BASE_URL + 'checkout/sidebar/removeItem/';
fetch(postUrl, {
"headers": {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
"body": "form_key=" + formKey + "&item_id=" + itemId,
"method": "POST",
"mode": "cors",
"credentials": "include"
}).then(response => {
if (response.redirected) {
window.location.href = response.url;
} else if (response.ok) {
return response.json();
} else {
window.dispatchMessages && window.dispatchMessages([{
type: 'warning',
text: 'Could\u0020not\u0020remove\u0020item\u0020from\u0020quote.'
}]);
this.isLoading = false;
}
}).then(result => {
if (result.success) {
self.removeFromCartEvent(itemToDelete);
}
window.dispatchMessages && window.dispatchMessages([{
type: result.success ? 'success' : 'error',
text: result.success
? 'Vous\u0020avez\u0020supprim\u00E9\u0020l\u0027\u00E9l\u00E9ment.'
: result.error_message
}], result.success ? 5000 : 0)
window.dispatchEvent(
new CustomEvent(
'reload-customer-section-data',
{
detail: {
sections: ['cart', 'cart-tagging', 'messages']
}
}
)
);
});
},
removeFromCartEvent(item) {
let productData = {
'product_ean': item.product_sku,
'product_name': item.product_name,
'product_quantity': item.qty,
'product_id': item.product_id,
'product_family': item.product_family,
'product_rayon': item.product_rayon,
'product_size': item.product_size,
'product_color': item.product_color,
'product_unitprice_ati': item.product_unitprice_ati,
'product_unitprice_tf': item.product_unitprice_tf,
'product_discount_ati': item.product_discount_ati,
'product_discount_tf': item.product_discount_tf,
};
let removeFromCart = window.dataLayer?.filter(function (entry) {
return entry.event === 'removeFromCart' && entry.hasOwnProperty('productremoveFromCart');
})[0];
if (typeof removeFromCart === 'undefined') {
window.dataLayer?.push({
'event': 'removeFromCart',
'productremoveFromCart': [productData]
})
} else {
removeFromCart.productremoveFromCart.push(productData);
window.dataLayer?.push(removeFromCart);
}
},
openMiniCart() {
this.open = true;
window.dispatchEvent(
new CustomEvent('open-mini-cart')
);
document.body.style.overflow = 'hidden';
},
closeMiniCart() {
this.open = false;
window.dispatchEvent(
new CustomEvent('close-mini-cart')
);
document.body.style.removeProperty('overflow');
},
extractSubtotal() {
let subtotal = this.cart.subtotal;
subtotal = parseFloat(subtotal.replace(/(<([^>]+)>)/gi, "").replace("€", "").replace(",", "."));
return subtotal;
},
getCartImage(image) {
return this.twicPicsUrl + image + "?twic=v1/cover=80";
},
sendViewCartEvent() {
window.dataLayer?.push({
'event': 'voir_le_panier',
'element': 'Mini-cart'
});
},
sendCheckoutEvent() {
window.dataLayer?.push({
'event': 'Commander',
'element': 'Mini-cart'
});
}
}
}</script><section id="cart-drawer" x-data="initCartDrawer()" @private-content-loaded.window="getData(event.detail.data)" @toggle-cart.window="openMiniCart()" @keydown.window.escape="closeMiniCart()" ><template x-if="cart && cart.summary_count >= 0"><div role="dialog" aria-labelledby="cart-drawer-title" aria-modal="true" @click.away.self="closeMiniCart()" class="fixed inset-y-0 right-0 z-50 flex max-w-full"><div class="backdrop" x-show="open" x-transition:enter="ease-in-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in-out duration-300" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" @click="closeMiniCart()" aria-label="Close panel"></div><div class="relative w-screen max-w-md shadow-2xl" x-show="open" x-transition:enter="transform transition ease-in-out duration-300" x-transition:enter-start="translate-x-full" x-transition:enter-end="translate-x-0" x-transition:leave="transform transition ease-in-out duration-300" x-transition:leave-start="translate-x-0" x-transition:leave-end="translate-x-full" ><div x-show="open" x-transition:enter="ease-in-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in-out duration-300" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="absolute top-0 right-0 flex px-6 py-5"><button @click="closeMiniCart();" aria-label="Close panel" class="p-2 text-anthracite-400 transition duration-150 ease-in-out hover:text-anthracite-600"><svg viewbox="0 0 15.5 15.5" class="w-3.5 h-auto"><g transform="translate(.75 .75)" fill="currentColor" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><line x2="14" y1="14"/><line transform="matrix(-1,0,0,1,14,0)" x2="14" y1="14"/></g></svg></button></div><div class="flex flex-col h-full bg-white shadow-xl"><header class="px-6 py-7 border-b border-lavender-400 flex gap-2.5 items-center"><div id="cart-drawer-title" class="font-medium text-xl leading-very-tiny uppercase tracking-spaced">Mon panier</div><span x-text="cart.summary_count" class="md:hidden text-white text-tiny md:text-xxs font-medium bg-anthracite-600 rounded-full leading-none flex justify-center items-center min-w-[25px] h-[25px] px-1.25"></span></header> <div x-show="cart.summary_count === 0"> <div class="relative flex items-center bg-lavender-300 text-anthracite-600 rounded-xl" x-data="initMiniCartSnackbarSlider()" x-init="sliderAuto($refs)"><div class="flex flex-row items-center overflow-hidden gap-4"><div class="w-full flex flex-row transition-all duration-300 leading-tightened" x-ref="snackWrapper"> <div class="flex flex-col w-full shrink-0 p-6 whitespace-pre-line justify-center"><span class="leading-none md:max-w-1/2 font-medium"><a href='https://www.adopt.com/fr/offres-commerciales.html'>3 parfums achetés = le 4ème OFFERT (hors remisés*)</a></span></div> <div class="flex flex-col w-full shrink-0 p-6 whitespace-pre-line justify-center"><span class="leading-none md:max-w-1/2 font-medium">Livraison OFFERTE dès 35€ d'achat </span></div></div></div><div class="px-6 flex flex-row"> <div @click="sliderMove($refs, 0)" class="px-1"><span class="rounded-full bg-anthracite-400 w-1 h-1 block cursor-pointer" :class="{ 'bg-anthracite': slideActive === 0, 'bg-anthracite/30': slideActive !== 0 }" ></span></div> <div @click="sliderMove($refs, 1)" class="px-1"><span class="rounded-full bg-anthracite-400 w-1 h-1 block cursor-pointer" :class="{ 'bg-anthracite': slideActive === 1, 'bg-anthracite/30': slideActive !== 1 }" ></span></div></div></div><script>
function initMiniCartSnackbarSlider() {
return {
slideActive: 0,
numberSlide: 2,
sliderMove($refs, slide) {
this.slideActive = slide;
const margin = -100 * slide;
this.$refs.snackWrapper.style.marginLeft = margin + "%";
},
sliderAuto($refs) {
const self = this;
function sliderBounce() {
self.slideActive = self.slideActive + 1;
if (self.slideActive > self.numberSlide - 1) {
self.slideActive = 0;
self.$refs.snackWrapper.style.marginLeft = 0;
} else {
const margin = -100 * self.slideActive;
self.$refs.snackWrapper.style.marginLeft = margin + "%";
}
}
setInterval(() => {
sliderBounce();
}, 3000)
}
}
}</script> <div class="flex flex-col justify-center px-6 pt-6 pb-9"><span class="text-3xl md:text-3.5xl font-secondary font-bold tracking-spaced">Votre panier est vide</span> <div class="flex flex-col pb-5 pt-3">Commencez votre shopping</div></div></div><div class="flex-1 overflow-y-auto overflow-x-hidden flex flex-col"> <div class="relative flex flex-col gap-9 bg-white border-container" x-show="cart.summary_count > 0" > <div class="relative flex items-center bg-lavender-300 text-anthracite-600 rounded-xl" x-data="initMiniCartSnackbarSlider()" x-init="sliderAuto($refs)"><div class="flex flex-row items-center overflow-hidden gap-4"><div class="w-full flex flex-row transition-all duration-300 leading-tightened" x-ref="snackWrapper"> <div class="flex flex-col w-full shrink-0 p-6 whitespace-pre-line justify-center"><span class="leading-none md:max-w-1/2 font-medium"><a href='https://www.adopt.com/fr/offres-commerciales.html'>3 parfums achetés = le 4ème OFFERT (hors remisés*)</a></span></div> <div class="flex flex-col w-full shrink-0 p-6 whitespace-pre-line justify-center"><span class="leading-none md:max-w-1/2 font-medium">Livraison OFFERTE dès 35€ d'achat </span></div></div></div><div class="px-6 flex flex-row"> <div @click="sliderMove($refs, 0)" class="px-1"><span class="rounded-full bg-anthracite-400 w-1 h-1 block cursor-pointer" :class="{ 'bg-anthracite': slideActive === 0, 'bg-anthracite/30': slideActive !== 0 }" ></span></div> <div @click="sliderMove($refs, 1)" class="px-1"><span class="rounded-full bg-anthracite-400 w-1 h-1 block cursor-pointer" :class="{ 'bg-anthracite': slideActive === 1, 'bg-anthracite/30': slideActive !== 1 }" ></span></div></div></div><script>
function initMiniCartSnackbarSlider() {
return {
slideActive: 0,
numberSlide: 2,
sliderMove($refs, slide) {
this.slideActive = slide;
const margin = -100 * slide;
this.$refs.snackWrapper.style.marginLeft = margin + "%";
},
sliderAuto($refs) {
const self = this;
function sliderBounce() {
self.slideActive = self.slideActive + 1;
if (self.slideActive > self.numberSlide - 1) {
self.slideActive = 0;
self.$refs.snackWrapper.style.marginLeft = 0;
} else {
const margin = -100 * self.slideActive;
self.$refs.snackWrapper.style.marginLeft = margin + "%";
}
}
setInterval(() => {
sliderBounce();
}, 3000)
}
}
}</script> <div class="pl-6 pr-4 pb-9 flex flex-col gap-2.5"><template x-for="item in cartItems"><div class="flex flex-row gap-3 md:gap-4.5"><a class="shrink-0" :href="item.product_url"><img class="xl:w-20 w-16" :src="getCartImage(item.product_image.src)" :width="item.product_image.width" :height="item.product_image.height" :alt="item.product_name" loading="lazy"/></a> <div class="relative flex flex-col w-full justify-between py-3.25"><a :href="item.product_url" class="flex flex-row gap-2 justify-between group"><div class="flex flex-col"><span class="font-medium leading-[1.1] transition duration-300 group-hover:text-anthracite-400"><span x-html="item.qty"></span> x <span x-html="item.product_name"></span></span> <span class="uppercase font-medium text-pink text-xs-tiny md:text-tiny tracking-spaced-lg leading-[1.2] mt-0.5 truncate-short" x-html="item.product_short_description"></span> <dl class="item-options w-full break-all text-sm clearfix"><div class="flex flex-row text-xxs"><dd x-html="item.displayed_label"></dd></div></dl></div><div class="flex flex-col"><span class="font-medium text-xs xl:text-smaller" :class="{ 'text-pink' : item.has_special_price || (item.product_discount_ati > 0 && !item.has_special_price), 'text-anthracite' : !item.has_special_price && item.product_discount_ati === 0 }" x-html="item.product_price"></span> <span class="text-tiny xl:text-xs line-through" x-show="item.has_special_price" x-html="item.original_price"></span> <template x-if="item.product_discount_ati > 0 && !item.has_special_price"><span class="text-tiny xl:text-xs line-through" x-text="hyva.formatPrice(item.product_discount_ati + item.product_unitprice_ati)"></span></template></div></a> <div class="absolute right-0 bottom-0 flex flex-row justify-end items-center"><button @click="deleteItemFromCart(item, item.item_id)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="trash" version="1.1" x="0px" y="0px" viewbox="0 0 21.6 23.3" enable-background="new 0 0 21.6 23.3" xml:space="preserve" class="text-lavender fat-icon hover:text-pink transition duration-300 w-3.75 h-auto" width="13" height="14" role="img">
<path fill="none" stroke="currentColor" stroke-width="0.9237" stroke-linecap="round" stroke-linejoin="round" d="M0.5,5.6h20.7"/>
<path fill="none" stroke="currentColor" stroke-width="0.9237" stroke-linecap="round" stroke-linejoin="round" d="M3,5.6h15.5v15.5 c0,1-0.8,1.7-1.7,1.7H4.8c-1,0-1.7-0.8-1.7-1.7L3,5.6z"/>
<path fill="none" stroke="currentColor" stroke-width="0.9237" stroke-linecap="round" stroke-linejoin="round" d="M6.5,5.6V4.8 c0-2.4,1.9-4.3,4.3-4.3c2.4,0,4.3,1.9,4.3,4.3v0.9"/>
<title/></svg>
</button></div></div></div></template></div></div> <div class="product-slider-minicart product-slider-minicart--nosto"> <div x-data="initNostoItems_693003ff57789()" @open-mini-cart.window.once="getItemsData();" x-defer="intersect"></div><div id="_693003ff57789"></div><script>
function initNostoItems_693003ff57789() {
return {
isLoaded: false,
itemCount: 0,
requestSended: false,
async getTemplate(products, title, nostoElementId) {
fetch(
'https://www.adopt.com/fr/catalog/nosto/slider'
+ '?product_ids=' + products
+ '&title=' + title
+ '&nosto_element_id=' + nostoElementId
+ '&slider_block_name=' + 'nosto.minicart.recommendation.crosssell'
+ '&template=' + 'Magento_Catalog::product/slider/product-slider-crosssell.phtml'
+ '&item_template=' + 'Magento_Catalog::product/list/item-crosssell.phtml'
+ '&container_limitation_class=' + ''
+ '&add_background_color=' + ''
+ '&background_color=' + ''
+ '&display_flags=' + 'false'
,
{}
).then(response => response.json()
).then(json => {
this.isLoaded = true;
document.getElementById("_693003ff57789").innerHTML = json.html
});
},
getItemsData() {
if (this.requestSended) {
return;
}
const self = this;
if (typeof nostojs === 'function') {
self.requestSended = true;
nostojs(api => {
let doNotTrackStatus = api.visit.isDoNotTrack();
api.visit.setDoNotTrack(doNotTrackStatus);
api.defaultSession()
.viewCart()
.setPlacements(['nosto-page-cart2'])
.load()
.then(response => {
let data = Object.values(response.campaigns.recommendations)[0];
if (data) {
let productIds = [];
data.products.forEach(function (product) {
productIds.push(product.product_id);
});
self.itemsData = data.products;
self.numberSlide = data.products.length;
self.getTemplate(productIds.toString(), data.title, data.result_id);
}
})
});
}
}
}
}</script></div> <div class="bg-lavender-300 flex-1 p-5 pb-7 md:px-10 md:pt-6"><div class="flex justify-between font-medium text-xs md:text-smaller"><span>Sous-total</span><span x-html="cart.subtotal"></span></div><div class="border-t border-lavender-400 pt-5.5 md:pt-7 mt-5"><div class="flex flex-row gap-4"><div class="flex flex-row items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="pin-shop" version="1.1" x="0px" y="0px" viewbox="0 0 21.3 23.9" enable-background="new 0 0 21.3 23.9" xml:space="preserve" class="text-lavender w-6 h-auto" width="25" height="25" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.7,0.5c2.2,0,4.3,0.6,6.2,1.8 c4.8,3,5.2,9.2,1.3,13.7c-2.3,2.7-4.8,5.2-7.5,7.4c-2.7-2.2-5.3-4.7-7.5-7.4C-0.7,11.4-0.4,5.3,4.4,2.3C6.3,1.1,8.5,0.5,10.7,0.5z M10.7,5.2c-2.4,0-4.4,1.9-4.4,4.3c0,2.4,1.9,4.3,4.4,4.3c2.4,0,4.4-1.9,4.4-4.3C15,7.1,13.1,5.2,10.7,5.2z"/>
<title/></svg>
<div class="flex flex-col text-sm font-medium"><span class="">Livré sous 1 à 6 jours</span> <span class="text-xxs text-anthracite-400">Livraison gratuite dès <span x-html="freeShippingValue"></span>€ d'achat</span></div></div></div></div></div></div> <div class="relative grid bg-white border-t border-lavender-400 pt-5 pb-3.5 px-6"><div x-data="initIncentiveCart" class="incentiveBar hidden flex flex-col gap-2" :class="{'hidden': isLoading}" @private-content-loaded.window="calcFreeShipping($event.detail.data.cart)"><div class="text-xs md:text-sm font-medium leading-none md:leading-none pb-2" x-show="amountStep > 0"><span class="text-lavender">Plus que <span x-html="amountStep" ></span> €</span> <span>pour votre <span x-text="labelShippingStep"></span></span></div><div class="text-xs md:text-sm font-medium leading-none md:leading-none flex flex-col gap-2"><div x-show="amountStep < 0 && !freeGift2Amount && !freeGift3Amount">Livraison offerte</div><div x-show="!freeGift2Amount && !freeGift3Amount" class="w-full flex flex-row"><span class="w-3/4 shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div x-show="freeGift2Amount && !freeGift3Amount" class="h-24 flex flex-col"><div class="text-xs md:text-sm font-medium leading-none md:leading-none my-auto"><div class="relative w-full flex"><div class="w-1/3 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] rounded-l-lg border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] rounded-l-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep1 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute left-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center">Livraison offerte</span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeShippingValue"></span></div></div><div class="w-2/3 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step2')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div class="w-1/3 relative"><div class="w-full flex flex-row"><span x-show="amountStep2 < 0" class="w-full shrink-0 block border-b-[7px] rounded-r-lg border-lavender transition-all" ></span> <span class="w-full block border-b-[7px] rounded-r-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep2 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute right-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift2Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift2Amount"></span></div></div></div></div></div><div x-show="freeGift2Amount && freeGift3Amount" class="h-24 flex flex-col"><div class="text-xs md:text-sm font-medium leading-none md:leading-none my-auto"><div class="relative w-full flex"><div class="w-1/4 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] rounded-l-lg border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] rounded-l-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep1 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute left-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center">Livraison offerte</span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeShippingValue"></span></div></div><div class="w-1/2 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step2')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div :class="{'text-lavender': amountStep2 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute mx-auto left-0 right-0 bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift2Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift2Amount"></span></div><div class="w-1/2 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step3')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div class="w-1/4 relative"><div class="w-full flex flex-row"><span x-show="amountStep3 < 0" class="w-full shrink-0 block border-b-[7px] rounded-r-lg border-lavender transition-all" ></span> <span class="w-full block border-b-[7px] rounded-r-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep3 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute right-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift3Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift3Amount"></span></div></div></div></div></div></div> <div class="pt-3.5"> <a href="https://www.adopt.com/fr/checkout/cart" class="inline-flex btn btn-primary w-full justify-center items-center py-5.5 leading-none" @click="sendViewCartEvent" >Voir le panier - <span x-html="cart.subtotal"></span></a> </div></div></div></div></div></template></section> </nav></div></header> <script>
'use strict';
function initAwRbslider(config) {
return {
options: Object.assign({
autoplay: true,
pauseTimeBetweenTransitions: 3000,
slideTransitionSpeed: 500,
isStopAnimationMouseOnBanner: true,
animation: 'fade',
isRandomOrderImage: false,
sliderListSelector: '.uk-slideshow',
sliderItemSelector: '.aw-rbslider-item',
$refs: null
}, config),
slideshow: {options: {}},
init() {
this.options.$refs = this.$refs;
},
initSlider($refs) {
this.slideshow = window.awRbslider(this.$el, {
autoplay: this.options.autoplay,
autoplayInterval: this.options.pauseTimeBetweenTransitions,
duration: this.options.slideTransitionSpeed,
pauseOnHover: this.options.isStopAnimationMouseOnBanner,
animation: this.options.animation,
$refs: this.options.$refs,
});
this.loadSlides($refs);
this.slideshow.resize = () => this.resizeBanner(this.slideshow);
if (this.options.bannerSchedule.length > 0) {
if (!this.timeValidator([this.options.bannerSchedule[0]])) {
this.delayedUpdate(this.options.bannerSchedule[0]);
}
if (this.timeValidator(this.options.bannerSchedule)) {
this.sendRequest(this.options.bannerId);
}
}
},
loadSlider($refs) {
if (!window.awRbslider) {
let callbacks = [];
window.awRbslider = {'-isLoading': (callback) => callbacks.push(callback)};
}
if (window.awRbslider['-isLoading']) {
window.awRbslider['-isLoading'](() => this.loadSlider($refs))
}
if (!window.awRbslider['-isLoading']) {
this.initSlider($refs);
}
},
pauseOnEnter() {
if (this.slideshow.options.pauseOnHover) {
this.slideshow.hovering = true;
}
},
resumeOnLeave() {
this.slideshow.hovering = false;
},
/**
* Recalculate the width and height of the banner
*/
resizeBanner(slideshow) {
if (slideshow.slides.length) {
let firstChild = slideshow.slides[slideshow.current];
if (firstChild.querySelector('.rbslider__video')) {
const video = firstChild.querySelector('video');
if (slideshow.options.height === 'auto' && slideshow.slides.length) {
slideshow.slides[slideshow.current].style.height = '';
const height = video.getBoundingClientRect().height;
slideshow.container.style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)';
document.querySelector('.wrapperVideo').style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)';
}
} else {
if (slideshow.options.height === 'auto' && slideshow.slides.length) {
let maxHeight = 0;
slideshow.slides.forEach((slide) => {
slide.style.height = '';
const height = slide.getBoundingClientRect().height;
if (height > maxHeight) {
maxHeight = height;
}
});
slideshow.container.style.height = maxHeight + 'px';
slideshow.slides.forEach((slide) => {
slide.style.height = maxHeight + 'px';
});
}
}
}
},
/**
* Lazy load slides
*/
loadSlides($refs) {
this.slideshow.slides.forEach((slideElem, index) => {
if (index) {
const slideImg = slideElem.querySelector('img.aw-rbslider__img');
if (slideImg && slideImg.dataset.src) {
slideImg.addEventListener('load', () => {
slideImg.classList.add('is-loaded');
});
slideImg.src = slideImg.dataset.src;
slideImg.removeAttribute('data-src');
}
}
});
},
clickSliderEvent(url, label) {
window.dataLayer?.push({
'event': 'clicSliderHP',
'text': label
});
window.location.href = url
},
/**
* Compare current time with schedule
*/
timeValidator(schedule) {
const currentDateMinute = Math.floor(Date.now() / 1000 / 60);
let isValid = false;
schedule.forEach(item => {
if (currentDateMinute === Math.floor(new Date(item).getTime() / 1000 / 60)) {
isValid = true;
}
});
return isValid;
},
/**
* Send request for clean banner cache
*/
sendRequest(bannerId) {
const formKey = hyva.getFormKey();
fetch(this.options.cacheCleanUrl, {
method: 'post',
headers: {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
body: "form_key=" + formKey + "&bannerId=" + bannerId,
mode: "cors",
credentials: "include"
});
},
/**
* Schedule call to sendRequest for future schedule item
*/
delayedUpdate(futureTime) {
const currentDateMinute = Math.floor(Date.now() / 1000 / 60);
const interval = Math.floor(new Date(futureTime).getTime() / 1000 / 60) - currentDateMinute;
if (interval > 0) {
setTimeout(() => this.sendRequest(this.options.bannerId), interval);
}
},
/**
* @private
*/
_randomSort() {
const sliderListSelector = this.options.sliderListSelector,
sliderItemSelector = this.options.sliderItemSelector;
this.$el.querySelector(sliderListSelector)
.innerHTML = Array.from(this.$el.querySelectorAll(sliderListSelector + ' ' + sliderItemSelector))
.sort(() => Math.random() - 0.5)
.map(item => item.outerHTML)
.join('');
},
}
}</script> <script>
'use strict';
function initAwRbslider(config) {
return {
options: Object.assign({
autoplay: true,
pauseTimeBetweenTransitions: 3000,
slideTransitionSpeed: 500,
isStopAnimationMouseOnBanner: true,
animation: 'fade',
isRandomOrderImage: false,
sliderListSelector: '.uk-slideshow',
sliderItemSelector: '.aw-rbslider-item',
$refs: null
}, config),
slideshow: {options: {}},
init() {
this.options.$refs = this.$refs;
},
initSlider($refs) {
this.slideshow = window.awRbslider(this.$el, {
autoplay: this.options.autoplay,
autoplayInterval: this.options.pauseTimeBetweenTransitions,
duration: this.options.slideTransitionSpeed,
pauseOnHover: this.options.isStopAnimationMouseOnBanner,
animation: this.options.animation,
$refs: this.options.$refs,
});
this.loadSlides($refs);
this.slideshow.resize = () => this.resizeBanner(this.slideshow);
if (this.options.bannerSchedule.length > 0) {
if (!this.timeValidator([this.options.bannerSchedule[0]])) {
this.delayedUpdate(this.options.bannerSchedule[0]);
}
if (this.timeValidator(this.options.bannerSchedule)) {
this.sendRequest(this.options.bannerId);
}
}
},
loadSlider($refs) {
if (!window.awRbslider) {
let callbacks = [];
window.awRbslider = {'-isLoading': (callback) => callbacks.push(callback)};
}
if (window.awRbslider['-isLoading']) {
window.awRbslider['-isLoading'](() => this.loadSlider($refs))
}
if (!window.awRbslider['-isLoading']) {
this.initSlider($refs);
}
},
pauseOnEnter() {
if (this.slideshow.options.pauseOnHover) {
this.slideshow.hovering = true;
}
},
resumeOnLeave() {
this.slideshow.hovering = false;
},
/**
* Recalculate the width and height of the banner
*/
resizeBanner(slideshow) {
if (slideshow.slides.length) {
let firstChild = slideshow.slides[slideshow.current];
if (firstChild.querySelector('.rbslider__video')) {
const video = firstChild.querySelector('video');
if (slideshow.options.height === 'auto' && slideshow.slides.length) {
slideshow.slides[slideshow.current].style.height = '';
const height = video.getBoundingClientRect().height;
slideshow.container.style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)';
document.querySelector('.wrapperVideo').style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)';
}
} else {
if (slideshow.options.height === 'auto' && slideshow.slides.length) {
let maxHeight = 0;
slideshow.slides.forEach((slide) => {
slide.style.height = '';
const height = slide.getBoundingClientRect().height;
if (height > maxHeight) {
maxHeight = height;
}
});
slideshow.container.style.height = maxHeight + 'px';
slideshow.slides.forEach((slide) => {
slide.style.height = maxHeight + 'px';
});
}
}
}
},
/**
* Lazy load slides
*/
loadSlides($refs) {
this.slideshow.slides.forEach((slideElem, index) => {
if (index) {
const slideImg = slideElem.querySelector('img.aw-rbslider__img');
if (slideImg && slideImg.dataset.src) {
slideImg.addEventListener('load', () => {
slideImg.classList.add('is-loaded');
});
slideImg.src = slideImg.dataset.src;
slideImg.removeAttribute('data-src');
}
}
});
},
clickSliderEvent(url, label) {
window.dataLayer?.push({
'event': 'clicSliderHP',
'text': label
});
window.location.href = url
},
/**
* Compare current time with schedule
*/
timeValidator(schedule) {
const currentDateMinute = Math.floor(Date.now() / 1000 / 60);
let isValid = false;
schedule.forEach(item => {
if (currentDateMinute === Math.floor(new Date(item).getTime() / 1000 / 60)) {
isValid = true;
}
});
return isValid;
},
/**
* Send request for clean banner cache
*/
sendRequest(bannerId) {
const formKey = hyva.getFormKey();
fetch(this.options.cacheCleanUrl, {
method: 'post',
headers: {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
body: "form_key=" + formKey + "&bannerId=" + bannerId,
mode: "cors",
credentials: "include"
});
},
/**
* Schedule call to sendRequest for future schedule item
*/
delayedUpdate(futureTime) {
const currentDateMinute = Math.floor(Date.now() / 1000 / 60);
const interval = Math.floor(new Date(futureTime).getTime() / 1000 / 60) - currentDateMinute;
if (interval > 0) {
setTimeout(() => this.sendRequest(this.options.bannerId), interval);
}
},
/**
* @private
*/
_randomSort() {
const sliderListSelector = this.options.sliderListSelector,
sliderItemSelector = this.options.sliderItemSelector;
this.$el.querySelector(sliderListSelector)
.innerHTML = Array.from(this.$el.querySelectorAll(sliderListSelector + ' ' + sliderItemSelector))
.sort(() => Math.random() - 0.5)
.map(item => item.outerHTML)
.join('');
},
}
}</script><div class="page-main"><div class="page messages"> <script>
function initMessages() {
"use strict";
return {
messages: window.mageMessages || [],
init($refs) {
if(this.$refs.banner.closest('.page-main')) {
this.$refs.banner.closest('.page-main').style.background = 'none'
}
},
isEmpty() {
return this.messages.reduce(
function (isEmpty, message) {
return isEmpty && message === undefined
}, true
)
},
removeMessage(messageIndex) {
this.messages[messageIndex] = undefined;
},
addMessages(messages, hideAfter) {
messages.map((message) => {
this.messages = this.messages.concat(message);
let pageMessages = document.querySelector('.page.messages');
if (typeof message.class !== 'undefined') {
pageMessages.classList.add(message.class);
}
if (message.type === 'success' && message.text.toString().includes('checkout/cart')) {
pageMessages.classList.add("fixed");
}
if(message.type === "error" && message.errorType === 'login') {
pageMessages.classList.add("fixed");
} else {
pageMessages.classList.remove("fixed");
}
if (hideAfter) {
this.setHideTimeOut(this.messages.length -1, hideAfter);
}
if(!hideAfter && message.type === "success") {
this.setHideTimeOut(this.messages.length -1, 3000);
}
});
},
setHideTimeOut(messageIndex, hideAfter) {
setTimeout((messageIndex) => {
this.removeMessage(messageIndex);
}, hideAfter, messageIndex);
},
eventListeners: {
['@messages-loaded.window']() {
this.addMessages(event.detail.messages, event.detail.hideAfter)
},
['@private-content-loaded.window'](event) {
const data = event.detail.data;
if (
data.messages &&
data.messages.messages &&
data.messages.messages.length
) {
this.addMessages(data.messages.messages);
}
},
['@clear-messages.window']() {
this.messages = [];
}
}
}
}</script><section id="messages" x-data="initMessages()" x-bind="eventListeners" x-ref="banner" x-init="init($refs)" ><template x-if="!isEmpty()"><div class="w-full"><div role="alert" class="messages container mx-auto py-3"><template x-for="(message, index) in messages" :key="index"><div><template x-if="message"><div class="message" :class="message.type" :ui-id="'message-' + message.type" ><div class="flex items-center gap-2 md:gap-3.5"><svg x-show="message.type === 'success'" class="text-pink-lighter bg-white rounded-full box-content pt-1 pr-[3px] pb-1.5 pl-1 w-2.5 h-auto shrink-0 md:w-3" width="17" height="12.702" version="1.1" viewbox="0 0 17 12.702" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1,1)" fill="none" fill-rule="evenodd" stroke-linecap="round"><path d="M 15,0 6.0879121,10.702128 M 6,10 0,5" stroke="currentColor" stroke-width="2"></path></g></svg><span x-html="message.text"></span></div><a href="#" class="close cursor-pointer" title="close" @click.prevent="removeMessage(index)"><svg class="fill-current text-white" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 18 18"><path d="M14.53 4.53l-1.06-1.06L9 7.94 4.53 3.47 3.47 4.53 7.94 9l-4.47 4.47 1.06 1.06L9 10.06l4.47 4.47 1.06-1.06L10.06 9z"></path></svg></a></div></template></div></template></div></div></template></section></div></div><div id="category-view-container" class="category-view"> <script>
function initCategoryHeader() {
return {
isLandingPage: 0,
init() {
if((document.body.style.background === '') && this.isLandingPage) {
document.body.style.background = "#F5F5FD"
}
}
}
}</script> <div id="category-header" class="container w-full relative z-1 pb-6 md:pb-9 pt-[70px] md:pt-9" x-data="initCategoryHeader()" x-init="init()"><div><div class=""> <nav class="breadcrumbs" aria-label="Breadcrumb"><div class="container px-0 mx-0"><ol class="items list-reset py-1.25 rounded inline-flex flex-wrap text-sm gap-x-1.5"> <li class="item flex text-anthracite-400 font-medium text-tiny leading-[1.2] gap-x-1.5 md:text-tiny home"> <a href="https://www.adopt.com/fr" class="no-underline text-anthracite-400 hover:text-pink transition duration-300" title="Aller à la page d’accueil" >Adopt Parfums</a> </li> <li class="item flex text-anthracite-400 font-medium text-tiny leading-[1.2] gap-x-1.5 md:text-tiny category1472"> <span aria-hidden="true" class="separator text-anthracite-400">•</span> <span class="text-anthracite-400" aria-current="page" >Parfum</span> </li> </ol></div></nav> <script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Adopt\u0020Parfums",
"item": "https\u003A\u002F\u002Fwww.adopt.com\u002Ffr\u002F"
}, {
"@type": "ListItem",
"position": 2,
"name": "Parfum",
"item": ""
} ]
}</script> </div><div> <div class="page-title container flex flex-col md:flex-row flex-wrap my-6 font-bold px-0 lg:mt-8 categorie-title"><h1 class="font-secondary font-bold tracking-spaced text-3.5xl md:text-4.5xl font-normal leading-none md:leading-none text-anthracite-600" ><span class="base" data-ui-id="page-title-wrapper" >Parfum</span></h1></div></div><div class="md:w-2/3"> <div x-data="initDescriptionListing()" @resize.window="isMobile = window.outerWidth < 768; initMore()" class="category-description max-w-full px-0 pt-1.25 text-sm hidden md:block text-white relative" ><div x-ref="skeleton" class="skeleton-box -mt-1.5 h-[84px] w-full after:opacity-30 bg-transparent"></div><div x-ref="wrapper"><div x-ref="readmore" class="overflow-hidden transition-[height] duration-300 more-calc"><div><p> </p>
<div class="ewa-rteLine">Découvrez tous nos <span data-pb-style="62148BE9542B5"><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/parfum-femme.html" title="parfums femmes"><span>parfums femmes</span></a></strong></span>, <span data-pb-style="62148BE9542B5"><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/parfum-homme.html" title="parfums hommes"><span>parfums hommes</span></a></strong></span> et nos <span data-pb-style="62148BE9542B5"><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/parfum-mixte.html" title="parfums mixte"><span>parfums mixte</span></a></strong></span> créés et fabriqués en France.</div>
<div class="ewa-rteLine"></div>
<div class="ewa-rteLine"><span data-pb-style="62148BE9542B5"><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/fruits-et-plaisir.html" title="Parfums fruités"><span>Parfums fruités</span></a></strong></span>, <span data-pb-style="62148BE9542B5"><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/fleurs-et-romantisme.html" title="parfums floraux"><span>parfums floraux</span></a></strong></span>, <span data-pb-style="62148BE9542B5"><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/gourmandise-et-seduction.html" title="parfums gourmands"><span>parfums gourmands</span></a></strong></span>…</div>
<div class="ewa-rteLine"></div>
<div class="ewa-rteLine">Retrouvez plus de 100 parfums d’exception, élaborés par les plus grands parfumeurs, accessibles à tous et conçus dans le respect de la planète.</div>
<div class="ewa-rteLine"></div>
<div class="ewa-rteLine">Et vous quels parfums serez-vous aujourd'hui ? Faites le test avec notre <span data-pb-style="62148BE9542B5"><strong> <a class="link underline" href="https://www.adopt.com/fr/diagnostic-olfactif" title="diagnostic parfum"><span>diagnostic parfum</span></a>.</strong></span></div></div></div><div x-cloak x-show="isMoreContentActive"><button class="underline" @click="showMore()"><span x-show="!more">Plus</span> <span x-show="more" x-cloak>Moins</span></button></div></div></div><script>
function initDescriptionListing (lineClampNb = 3) {
return {
more: false,
isMobile: window.outerWidth < 768,
maxHeight: null,
lineHeight: 0,
isMoreContentActive: false,
init() {
if(!this.isMobile) {
this.initMore();
this.$refs.readmore.classList.remove('more-calc');
this.$refs.skeleton.classList.add('hidden');
}
},
initMore() {
this.getValues();
if(lineClampNb * this.lineHeight < this.maxHeight) {
this.$refs.readmore.style.height = lineClampNb * this.lineHeight + 'px';
this.isMoreContentActive = true;
}
this.$refs.readmore.classList.remove('more-calc');
this.$refs.skeleton.classList.add('hidden');
},
getValues() {
let computedStyles = window.getComputedStyle(this.$refs.readmore);
this.lineHeight = Number(computedStyles.getPropertyValue('line-height').replace('px', ''));
this.maxHeight = this.$refs.readmore.clientHeight;
},
showMore() {
this.more = !this.more;
if(this.more) {
this.$refs.readmore.style.height = this.maxHeight + 'px';
} else {
this.$refs.readmore.style.height = lineClampNb * this.lineHeight + 'px';
}
},
}
}</script></div></div> <div class="pt-6"><div class="category-sub flex gap-2.5 items-center" x-data="subCategoriesSlider()" x-init="init()" @resize.window="isMobile = window.innerWidth < 768; init()"><div x-ref="wrapper" class="overflow-y-auto hide-scrollbar scroll-smooth"><div x-ref="container" class="flex gap-1 md:gap-2 w-fit relative"> <a class="btn btn-primary-white hover:bg-[#EEEEFA] text-sm whitespace-nowrap py-4 px-5 md:px-7.5 leading-small" href="https://www.adopt.com/fr/le-diagnostic-olfactif-adopt.html">Diagnostic Parfum</a> <a class="btn btn-primary-white hover:bg-[#EEEEFA] text-sm whitespace-nowrap py-4 px-5 md:px-7.5 leading-small" href="https://www.adopt.com/fr/parfum/parfum-femme.html">Parfum Femme</a> <a class="btn btn-primary-white hover:bg-[#EEEEFA] text-sm whitespace-nowrap py-4 px-5 md:px-7.5 leading-small" href="https://www.adopt.com/fr/parfum/parfum-femme/brume-parfumee.html">Brume Parfumée</a> <a class="btn btn-primary-white hover:bg-[#EEEEFA] text-sm whitespace-nowrap py-4 px-5 md:px-7.5 leading-small" href="https://www.adopt.com/fr/parfum/parfum-homme.html">Parfum Homme</a> <a class="btn btn-primary-white hover:bg-[#EEEEFA] text-sm whitespace-nowrap py-4 px-5 md:px-7.5 leading-small" href="https://www.adopt.com/fr/parfum/les-signatures.html">Collection Voyage</a> <a class="btn btn-primary-white hover:bg-[#EEEEFA] text-sm whitespace-nowrap py-4 px-5 md:px-7.5 leading-small" href="https://www.adopt.com/fr/parfum/meilleures-ventes-parfum.html">Meilleures Ventes</a> <a class="btn btn-primary-white hover:bg-[#EEEEFA] text-sm whitespace-nowrap py-4 px-5 md:px-7.5 leading-small" href="https://www.adopt.com/fr/parfum/nouveautes-parfum.html">Nouveautés</a> </div></div><div x-show="isSlider" x-cloak class="hidden md:flex items-center gap-2.5 text-anthracite-400"><button class="link hover:text-pink" @click="prev()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="w-5 -scale-x-100" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
</button> <button class="link hover:text-pink" @click="next()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewbox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="w-5" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/>
<title/></svg>
</button></div></div></div><script>
function subCategoriesSlider() {
return {
isMobile: window.innerWidth < 768,
isSlider: false,
index: 0,
items: null,
maxItem: 0,
isLoaded: false,
init() {
if(this.$refs.container.getBoundingClientRect().width > this.$refs.wrapper.getBoundingClientRect().width) {
this.initSlider();
}
this.isLoaded = true;
},
initSlider() {
this.isSlider = true;
this.items = this.$refs.container.querySelectorAll('a');
this.maxItem = this.items.length;
},
prev() {
if(this.$refs.wrapper.scrollLeft > 0) {
this.index = this.index - 1;
this.$refs.wrapper.scrollLeft = this.items[this.index].offsetLeft;
}
},
next() {
const wrapper = this.$refs.wrapper;
if(wrapper.offsetWidth + wrapper.scrollLeft < wrapper.scrollWidth) {
this.index = this.index + 1;
this.$refs.wrapper.scrollLeft = this.items[this.index].offsetLeft;
}
}
}
}</script></div> <picture><source type="image/jpeg" srcset="https://adopt.twic.pics/media/catalog/category/ECOMM_HEROSCREEN_1200_Parfum.png?twic=v1 1x" media="(min-width: 896px)"><source type="image/jpeg" srcset="https://adopt.twic.pics/media/catalog/category/visual-categ-selection-parfums_1.jpg?twic=v1 1x" media="(min-width: 300px)"><img src="https://adopt.twic.pics/media/catalog/category/ECOMM_HEROSCREEN_1200_Parfum.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_HEROSCREEN_1200_Parfum.png" alt="Parfum" width="360" height="360" class="absolute top-0 left-1/2 -translate-x-1/2 h-full w-full object-cover"></picture> <style>::backdrop {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-gradient-from-position: ;
--tw-gradient-via-position: ;
--tw-gradient-to-position: ;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgb(59 130 246 / 0.5);
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia:
}</style></div><main id="maincontent" class="page-main"> <span id="contentarea" tabindex="-1"></span><div class="columns"><aside class="sidebar sidebar-main"> <div x-data="initLayeredNavigation()" @layered-navigation-filter-selected.window="updateFilters($event.detail)" @layered-navigation-radio-filter-selected.window="updateRadioFilters($event.detail)" @layered-navigation-filter-price-selected.window="updatePriceFilter($event.detail)" ><button id="triggerFilter" @click="openFilters()" class="hidden"></button> <div class="justify-end fixed inset-0 z-50 translate-y-full translate-x-0 md:translate-y-0 md:translate-x-full flex" id="filters_layered" ><span class="absolute opacity-0 bg-lavender-400 inset-0 cursor-pointer z-[-1] transition-opacity duration-300 translate-y-0 md:translate-x-0" :class="{ 'md:opacity-50 md:translate-y-0 md:-translate-x-full': blockOpen, 'opacity-0 translate-y-0 md:translate-y-0 md:translate-x-0': !blockOpen }" @click="openFilters()"></span> <div class="bg-white flex flex-col h-full w-full md:w-[500px] transition duration-300 md:delay-200 absolute top-0 left-0" :class="{ '-translate-y-full md:translate-y-0 md:-translate-x-full delay-unset': blockOpen, 'translate-y-0 md:translate-y-0 md:translate-x-0': !blockOpen }"><div class="block-title flex justify-between items-center pl-5 border-b border-lavender-400 md:pl-11.5"><span class="text-xl font-medium uppercase tracking-spaced text-anthracite-600">Filtrer</span> <button aria-label="close filter" class="group p-5 md:p-7.5" @click="openFilters()"><svg width="15.5" height="15.5" version="1.1" viewbox="0 0 15.5 15.5" xmlns="http://www.w3.org/2000/svg" class="text-pink-lighter group-hover:text-pink transition duration-300 w-3.5 h-auto"><g transform="translate(.75 .75)" fill="currentColor" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><line x2="14" y1="14"></line><line transform="matrix(-1,0,0,1,14,0)" x2="14" y1="14"></line></g></svg></button></div> <div class="px-5 grow-[1] overflow-y-auto pb-2 md:px-11.5"><div class="block-content filter-content"> <div class="filter-option border-b border-lavender-400 last:border-b-0" x-data="{ open: false }" ><div class="filter-options-title flex flex-row justify-between items-center py-4 md:py-6 cursor-pointer transition duration-300 group hover:text-pink" @click="open = !open" ><span class="font-medium text-anthracite-600"> Prix </span> <span class="-rotate-180" :class="{ '-rotate-180': open }"><svg width="9" height="4.8536" version="1.1" viewbox="0 0 9 4.8536" xmlns="http://www.w3.org/2000/svg" class="text-pink-lighter group-hover:text-pink transition duration-300 w-3 h-auto"><g transform="translate(-.5 -.5)" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="bevel"><path d="m1 1 4 4 4-4" stroke="currentColor"></path></g></svg></span> </div> <div class="filter-options-content hidden" :class="{ 'hidden': !open , 'block': 'open' }"> <script>
function rangeSlider_69301f58de36e(options) {
"use strict";
return {
options: {"minValue":0,"maxValue":120,"currentValue":{"from":0,"to":120},"fieldFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":"\u202f","groupLength":3,"integerRequired":false},"intervals":[{"value":0,"count":29},{"value":5,"count":6},{"value":7,"count":3},{"value":9,"count":1},{"value":11,"count":194},{"value":13,"count":8},{"value":14,"count":10},{"value":15,"count":36},{"value":17,"count":2},{"value":18,"count":2},{"value":19,"count":11},{"value":21,"count":16},{"value":24,"count":1},{"value":26,"count":9},{"value":28,"count":5},{"value":29,"count":2},{"value":30,"count":7},{"value":32,"count":1},{"value":34,"count":21},{"value":35,"count":5},{"value":36,"count":7},{"value":37,"count":3},{"value":39,"count":7},{"value":53,"count":1},{"value":59,"count":1},{"value":64,"count":1},{"value":74,"count":1},{"value":94,"count":1},{"value":119,"count":1}],"adaptiveIntervals":[],"showAdaptiveSlider":false,"urlTemplate":"price=<%- from %>-<%- to %>","messageTemplates":{"displayOne":"1 produit","displayCount":"<%- count %> produits","displayEmpty":"Aucun produit trouv\u00e9 pour cet intervalle."},"rate":1},
priceSlider: true,
lastThumbUpdatedMax: true,
sliderZindex: 20,
messageTemplates: {
"displayOne": '<span class="msg">1 article</span>',
"displayCount": '<span class="msg"><%- count %> articles</span>',
"displayEmpty": '<span class="msg-error">Aucun élément dans la plage actuelle.</span>'
},
initialize: function () {
this.options = Object.assign({}, this.options, options);
this.url = this.options.urlTemplate;
if (this.options.sliderZindex !== undefined) {
this.sliderZindex = this.options.sliderZindex;
}
this.showAdaptiveSlider = false;
if (this.options.showAdaptiveSlider !== undefined) {
this.showAdaptiveSlider = this.options.showAdaptiveSlider;
}
if (this.options.maxLabelOffset === undefined) {
this.options.maxLabelOffset = 0.01;
}
if (this.options.rate === undefined) {
this.options.rate = 1.0000;
}
if (this.showAdaptiveSlider) {
this._initAdaptiveSliderValues();
} else {
this._initSliderValues();
}
this.mintrigger();
this.maxtrigger();
},
_initSliderValues: function () {
this.rate = parseFloat(this.options.rate);
this.minprice = Math.floor(this.options.currentValue.from * this.rate);
this.maxprice = Math.round(this.options.currentValue.to * this.rate);
this.intervals = this.options.intervals.map(
function(item) { item.value = Math.round(item.value * this.rate); return item}.bind(this)
);
this.min = Math.floor(this.options.minValue * this.rate);
this.max = Math.round(this.options.maxValue * this.rate);
},
_initAdaptiveSliderValues: function () {
this.intervals = this.options.adaptiveIntervals;
this.options.adaptiveIntervals[0].value = Math.floor(this.options.adaptiveIntervals[0].value);
this.minprice = this._getAdaptiveValue(Number(this.options.currentValue.from));
this.maxprice = this._getAdaptiveValue(Number(this.options.currentValue.to));
this.rate = parseFloat(this.options.rate);
this.intervals = this.intervals.map(
function(item) { item.originalValue = Math.ceil(item.originalValue * this.rate); return item}.bind(this)
);
this.min = this.intervals[0].value;
this.max = this.intervals[this.intervals.length - 1].value;
},
mintrigger: function () {
this.lastThumbUpdatedMax = false;
this.validation();
this.minprice = this._getClosestAdaptiveValue(Math.min(this.minprice, this.maxprice));
this.minthumb = ((this.minprice - this.min) / (this.max - this.min)) * 100;
this._onChangeAfter();
},
maxtrigger: function () {
this.lastThumbUpdatedMax = true;
this.validation();
this.maxprice = this._getClosestAdaptiveValue(Math.max(this.maxprice, this.minprice));
this.maxthumb = ((this.maxprice - this.min) / (this.max - this.min)) * 100;
this._onChangeAfter();
},
_onChangeAfter: function () {
this._updateSliderZindexes();
this._applyRange();
this._refreshDisplay();
},
validation: function () {
if (/^\d*$/.test(this.minprice)) {
if (this.minprice > this.max) {
this.minprice = this._getAdaptiveValue(Number(this.options.currentValue.from));
}
if (this.minprice < this.min) {
this.minprice = this.min;
}
} else {
this.minprice = this._getAdaptiveValue(Number(this.options.currentValue.from));
}
if (/^\d*$/.test(this.maxprice)) {
if (this.maxprice > this.max) {
this.maxprice = this.max;
}
if (this.maxprice < this.min) {
this.maxprice = this._getAdaptiveValue(Number(this.options.currentValue.to));
}
} else {
this.maxprice = this._getAdaptiveValue(Number(this.options.currentValue.to))
}
},
getItemCount: function () {
var from = this.minprice, to = this.maxprice, intervals = this.intervals;
return intervals.map(function (item) {
return item.value >= from && item.value < to ? item.count : 0;
})
.reduce(function (a, b) {
return a + b;
});
},
_refreshDisplay: function () {
this.count = this.getItemCount();
let minprice = this._getOriginalValue(this.minprice);
if (minprice >= this._getOriginalValue(this.max) ) {
minprice = this._getOriginalValue(this.max) - this.options.maxLabelOffset;
}
this.fromLabel = this._formatLabel(minprice);
let maxprice = this._getOriginalValue(this.maxprice) - this.options.maxLabelOffset;
if (maxprice < this._getOriginalValue(this.min)) {
maxprice = this._getOriginalValue(this.maxprice);
}
this.toLabel = this._formatLabel(maxprice);
var messageTemplate = this.messageTemplates[this.count > 0 ? (this.count > 1 ? 'displayCount' : 'displayOne') : 'displayEmpty'];
this.message = this._unescape(messageTemplate.replace('<%- count %>', this.count));
},
_formatLabel: function (value) {
var formattedValue = value;
if (this.priceSlider && this.options.fieldFormat) {
formattedValue = this._formatPrice(value);
} else if (this.options.fieldFormat) {
formattedValue = this.options.fieldFormat.pattern.replace(
'%s',
Number.parseFloat(formattedValue).toFixed(this.options.fieldFormat.precision)
);
}
return formattedValue;
},
_formatPrice: function (value) {
var formatter = new Intl.NumberFormat(
document.documentElement.lang,
{
style: 'currency',
currency: 'EUR',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
}
);
value = Number.parseFloat(value).toFixed(1);
return formatter.format(value);
},
_applyRange: function () {
let range = {
from : this._getOriginalValue(this.minprice) * (1 / this.rate),
to : this._getOriginalValue(this.maxprice) * (1 / this.rate),
};
let resetFilter = false;
this.url = this._unescape(this.options.urlTemplate.replace('<%- from %>', range.from).replace('<%- to %>', range.to));
if (this.minprice === this.min && this.maxprice === this.max) {
resetFilter = true;
}
if (this.priceSlider) {
let attributeCode = this.url.split('=')[0];
let attributeValue = this.url.split('=')[1];
window.dispatchEvent(
new CustomEvent('layered-navigation-filter-price-selected', {
'detail': {
'attributeCode': attributeCode,
'attributeValue': attributeValue,
'resetFilter': resetFilter
}
})
);
}
},
_updateSliderZindexes: function () {
this.minZindex = this.sliderZindex;
this.maxZindex = this.sliderZindex;
if (this.minprice == this.maxprice) {
if (this.minprice === this.min || (this.minprice !== this.min && this.lastThumbUpdatedMax)) {
this.maxZindex = this.sliderZindex + 1;
}
if (this.maxprice === this.max || (this.maxprice !== this.max && !this.lastThumbUpdatedMax)) {
this.minZindex = this.sliderZindex + 1;
}
}
},
_getAdaptiveValue : function (value) {
if (!this.showAdaptiveSlider) {
return value;
}
var adaptiveValue = this.intervals[0].value;
var found = false;
this.intervals.forEach(function (item) {
if (found === false && item.originalValue === value) {
adaptiveValue = item.value;
found = true;
}
if (found === false && item.originalValue < value) {
adaptiveValue = item.value;
}
});
return adaptiveValue;
},
_getClosestAdaptiveValue : function (value) {
if (!this.showAdaptiveSlider) {
return value;
}
var closestValue = this.intervals[0].value;
var found = false;
this.intervals.forEach(function (item) {
if (item.value === value) {
closestValue = value;
found = true;
}
if (found === false && item.value < value) {
closestValue = item.value;
}
});
return closestValue;
},
_getOriginalValue : function (value) {
if (!this.showAdaptiveSlider) {
return value;
}
var originalValue = null;
this.intervals.forEach(function (item) {
if (item.value === value) {
originalValue = item.originalValue;
}
});
return originalValue;
},
_unescape: function (str) {
return str.replace(/<%|%3C%/g, '<%').replace(/%>|%%3E/g, '%>');
},
}
}</script> <style> .es-range-slider input[type=range] { pointer-events: none; } .es-range-slider .thumb { margin-top: -0.5rem; width: 1.5rem; height: 1.5rem; } .es-range-slider input[type=range] { margin-top: -0.5rem; height: 1.5rem; } .es-range-slider input[type=range]::-webkit-slider-thumb { pointer-events: all; width: 1.5rem; height: 1.5rem; border-radius: 0px; border: 0 none; -webkit-appearance: none; } .es-range-slider input[type=range]::-moz-range-thumb { pointer-events: all; width: 1.5rem; height: 1.5rem; border-radius: 0px; border: 0 none; -webkit-appearance: none; } .es-range-slider input[type=range]::-ms-thumb { pointer-events: all; width: 1.5rem; height: 1.5rem; border-radius: 0px; border: 0 none; -webkit-appearance: none; }</style><div class="smile-es-range-slider" data-role="range-price-slider-price"><div x-data="rangeSlider_69301f58de36e({})" x-init="initialize()" class="relative max-w-xl w-full"><div class="flex justify-between items-center mb-3.75"><div><span x-model="minprice" x-text="fromLabel" class="text-anthracite-400 font-medium text-sm rounded w-24 text-center"></span></div><div><span x-model="maxprice" x-text="toLabel" class="text-anthracite-400 font-medium text-sm rounded w-24 text-center"></span></div></div><div class="es-range-slider relative rounded-md bg-gray-200"><input aria-label="min range" type="range" step="1" x-bind:min="min" x-bind:max="max" x-on:input="mintrigger" x-bind:style="'z-index: ' + minZindex" x-model="minprice" class="absolute pointer-events-none appearance-none z-20 h-1 w-full opacity-0 cursor-pointer"><input aria-label="max range" type="range" step="1" x-bind:min="min" x-bind:max="max" x-on:input="maxtrigger" x-bind:style="'z-index: ' + maxZindex" x-model="maxprice" class="absolute pointer-events-none appearance-none z-20 h-1 w-full opacity-0 cursor-pointer"><div class="relative z-10 h-1"><div class="absolute z-10 left-0 right-0 bottom-0 top-0 rounded-md bg-candy"></div><div class="absolute z-20 top-0 bottom-0 rounded-md bg-lavender" x-bind:style="'right:'+ (100 - 1 - maxthumb)+'%; left:'+ minthumb+'%'"></div><div class="absolute z-[30] w-5 h-5 top-0 left-0 bg-white border-2 border-lavender rounded-full -mt-2 flex flex-col items-center hover:border-pink-lighter" x-bind:style="'left: '+minthumb+'%'"></div><div class="absolute z-[30] w-5 h-5 top-0 right-0 bg-white border-2 border-lavender rounded-full -mt-2 -ml-4 flex flex-col items-center hover:border-pink-lighter" x-bind:style="'left: '+maxthumb+'%'"></div></div></div><div class="mt-8 mb-8 h-6 flex justify-between items-center"><div x-html="message" class="text-anthracite-600 font-medium"></div></div></div></div></div></div> <div class="filter-option border-b border-lavender-400 last:border-b-0" x-data="{ open: false }" ><div class="filter-options-title flex flex-row justify-between items-center py-4 md:py-6 cursor-pointer transition duration-300 group hover:text-pink" @click="open = !open" ><span class="font-medium text-anthracite-600"> Univers olfactif </span> <span class="-rotate-180" :class="{ '-rotate-180': open }"><svg width="9" height="4.8536" version="1.1" viewbox="0 0 9 4.8536" xmlns="http://www.w3.org/2000/svg" class="text-pink-lighter group-hover:text-pink transition duration-300 w-3 h-auto"><g transform="translate(-.5 -.5)" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="bevel"><path d="m1 1 4 4 4-4" stroke="currentColor"></path></g></svg></span> </div> <div class="filter-options-content pb-8.5 hidden" :class="{ 'hidden': !open , 'block': 'open' }"> <script>
function initSmileAttibute_69301f58df0d2() {
"use strict";
return {
options : {"component":"Smile_ElasticsuiteCatalog\/js\/attribute-filter","maxSize":10,"displayProductCount":true,"hasMoreItems":true,"displayRelNofollow":"","ajaxLoadUrl":"https:\/\/www.adopt.com\/fr\/catalog\/navigation_filter\/ajax\/id\/1472\/?cat=1472&filterName=olfactive_fam","items":[{"label":"Gourmand","count":89,"url":"olfactive_fam=Gourmand","is_selected":false,"isBooleanDefaultValue":false},{"label":"Floral","count":82,"url":"olfactive_fam=Floral","is_selected":false,"isBooleanDefaultValue":false},{"label":"Fruit\u00e9","count":67,"url":"olfactive_fam=Fruit\u00e9","is_selected":false,"isBooleanDefaultValue":false},{"label":"Oriental","count":42,"url":"olfactive_fam=Oriental","is_selected":false,"isBooleanDefaultValue":false},{"label":"Caract\u00e8re","count":32,"url":"olfactive_fam=Caract\u00e8re","is_selected":false,"isBooleanDefaultValue":false},{"label":"Frais","count":25,"url":"olfactive_fam=Frais","is_selected":false,"isBooleanDefaultValue":false},{"label":"Solaire","count":25,"url":"olfactive_fam=Solaire","is_selected":false,"isBooleanDefaultValue":false},{"label":"Bois\u00e9","count":21,"url":"olfactive_fam=Bois\u00e9","is_selected":false,"isBooleanDefaultValue":false},{"label":"Aromatique","count":20,"url":"olfactive_fam=Aromatique","is_selected":false,"isBooleanDefaultValue":false},{"label":"D\u00e9licat","count":16,"url":"olfactive_fam=D\u00e9licat","is_selected":false,"isBooleanDefaultValue":false}]},
searchLabel : 'Rechercher (%s)',
showMoreLabel : 'Afficher plus',
showLessLabel : 'Voir moins',
noSearchResultLabel : 'Aucun résultat pour la recherche <b>%s</b>.',
expanded: false,
items: [],
lastSelectIndex: 0,
maxSize: 0,
displaySearch: false,
displayedItems: [],
fulltextSearch: null,
searchPlaceholder: '',
result: 0,
/**
* Component initialization
*/
initialize: function () {
this.items = this.options.items.map(this.addItemId.bind(this));
var lastSelectedIndex = Math.max.apply(null, (this.items.map(
function (v, k) {return v['is_selected'] ? k : 0;}))
);
this.maxSize = Math.max(this.options.maxSize, lastSelectedIndex + 1);
this.initSearchPlaceholder();
this.onShowLess();
this.displaySearch = this.displayShowMore();
this.displayedItems = this.getDisplayedItems();
},
/**
* Init the place holder
*/
initSearchPlaceholder: function () {
var examples = this.items.slice(0, 2).map(function (item) {return item.label});
if (this.items.length > 2) {
examples.push('...');
}
let placeholder = document.createElement('div');
placeholder.innerHTML = this.searchLabel.replace('%s', examples.join(', '));
this.searchPlaceholder = placeholder.textContent;
},
/**
* Triggered when typing on the search input
*/
onSearchChange: function (event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
this.onShowLess();
} else {
this.fulltextSearch = text;
this.onShowMore();
}
return true;
},
/**
* Triggered when leaving the search field.
*/
onSearchFocusOut: function(event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
}
},
/**
* Retrieve additional Results
*
* @param callback
*/
loadAdditionalItems: function (callback) {
fetch(this.options.ajaxLoadUrl, {
method: 'GET',
headers: {
'X-Requested-With': 'XMLHttpRequest',
},
})
.then((response) => response.json())
.then((data) => {
this.items = data.map(this.addItemId.bind(this));
this.options.hasMoreItems = false;
if (callback) {
return callback();
}
}
);
},
/**
* Retrieve items to display
*
* @returns {*}
*/
getDisplayedItems: function () {
var items = this.items;
if (this.expanded === false) {
items = this.items.slice(0, this.maxSize);
}
if (this.getFulltextSearch()) {
var searchTokens = this.slugify(this.getFulltextSearch()).split('-');
var lastSearchToken = searchTokens.splice(-1, 1)[0];
items = items.filter(function(item) {
var isValidItem = true;
var itemTokens = this.slugify(item.label).split('-');
searchTokens.forEach(function(currentToken) {
if (itemTokens.indexOf(currentToken) === -1) {
isValidItem = false;
}
})
if (isValidItem && lastSearchToken) {
var ngrams = itemTokens.map(function(token) {return token.substring(0, lastSearchToken.length)});
isValidItem = ngrams.indexOf(lastSearchToken) !== -1;
}
return isValidItem;
}.bind(this))
}
this.result = items.length;
return items;
},
/**
* Does the search have a result
*/
hasSearchResult: function () {
return this.getDisplayedItems().length > 0
},
/**
* Search result message
*/
getSearchResultMessage : function() {
return this.noSearchResultLabel.replace("%s", '"' + this.getFulltextSearch() + '"')
},
getFulltextSearch : function() {
return this.fulltextSearch;
},
/**
* Callback for the "Show more" button
*/
onShowMore: function () {
if (this.options.hasMoreItems) {
this.loadAdditionalItems(this.onShowMore.bind(this));
} else {
this.expanded = true;
}
this.displayedItems = this.getDisplayedItems();
},
/**
* Index the text to be searched.
*/
slugify: function(text) {
return text.toString().toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^\w\u0400-\u052F\u2DE0-\u2DFF\uA640-\uA69F'\-]+/g, '')
.replace(/\-\-+/g, '-')
.replace(/^-+/, '')
},
/**
* Callback for the "Show less" button
*/
onShowLess: function () {
this.expanded = false;
this.displayedItems = this.getDisplayedItems();
},
/**
* Check if the filter can be expanded
*
* @returns {boolean}
*/
enableExpansion : function () {
return this.options.hasMoreItems || this.items.length > this.maxSize;
},
/**
* Displays the "Show More" link
*
* @returns {*|boolean}
*/
displayShowMore: function () {
return this.enableExpansion() && this.expanded === false && !this.getFulltextSearch();
},
/**
* Displays the "Show Less" link
*
* @returns {*|boolean}
*/
displayShowLess: function () {
return this.enableExpansion() && this.expanded === true && !this.getFulltextSearch();
},
/**
* Add an id to items.
*/
addItemId: function (item) {
item.id = Math.floor(Math.random() * 1000000) + "_option_";
item.displayProductCount = this.options.displayProductCount && (item.count >= 1);
return item;
},
};
};</script> <div class="olfactive_famFilter" x-data="{...initSmileAttibute_69301f58df0d2(), ...initCustomSmileAttribute_69301f58df38b()}" x-init="initialize();"> <ol class="items grid grid-cols-2 gap-y-2 gap-x-3 xl:text-sm text-xxs"><template x-for="attribute in displayedItems" hidden><li class="item"><span x-show="attribute.count >= 1" @click.prevent="selectFilter(attribute.url, 'olfactive_fam', attribute.label)"><span class="form-input--checkbox"><label :for="attribute.id" class="inline-block cursor-pointer" style="gap: 0.2rem"><input type="checkbox" class="sr-only" :id="attribute.id" :checked="attribute.is_selected" onclick="this.parentNode.click();" /><span class="form-input--checkbox__controller shrink-0"></span> <span class="ml-2 font-medium" x-html="attribute.label"></span> <span class="count" x-text="'(' + attribute.count + ')'" x-show ="options.displayProductCount"></span></label></span></span> <div x-show="attribute.count < 1"><span x-html="attribute.label"></span> <span class="count" x-text="attribute.count"></span></div></li></template></ol> <div class="no-results-message" x-model="result" x-show="getFulltextSearch() && !hasSearchResult()"><p x-html="getSearchResultMessage()"></p></div><div class="actions" x-show="enableExpansion()"><div class="secondary text-right"><span class="action show-more underline text-secondary cursor-pointer" x-on:click="onShowMore()" x-show="displayShowMore()"><span x-text="showMoreLabel + '+'"></span></span> <span class="action show-less underline text-secondary cursor-pointer" x-on:click="onShowLess()" x-show="displayShowLess()"><span x-text="showLessLabel + '-'"></span></span></div></div></div><script>
'use strict';
function initCustomSmileAttribute_69301f58df38b() {
return {
selectFilter(param, action, value) {
window.dataLayer?.push({
'event': 'filtres',
'action': action,
'label': value
});
let attributeCode = param.split('=')[0];
let attributeValue = param.split('=')[1];
let checkbox = this.$el.querySelector('input[type="checkbox"]');
checkbox.checked = !checkbox.checked;
window.dispatchEvent(
new CustomEvent('layered-navigation-filter-selected', {
'detail': {
'attributeCode': attributeCode,
'attributeValue': attributeValue
}
})
);
},
}
}</script></div></div> <div class="filter-option border-b border-lavender-400 last:border-b-0" x-data="{ open: false }" ><div class="filter-options-title flex flex-row justify-between items-center py-4 md:py-6 cursor-pointer transition duration-300 group hover:text-pink" @click="open = !open" ><span class="font-medium text-anthracite-600"> Type de produit </span> <span class="-rotate-180" :class="{ '-rotate-180': open }"><svg width="9" height="4.8536" version="1.1" viewbox="0 0 9 4.8536" xmlns="http://www.w3.org/2000/svg" class="text-pink-lighter group-hover:text-pink transition duration-300 w-3 h-auto"><g transform="translate(-.5 -.5)" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="bevel"><path d="m1 1 4 4 4-4" stroke="currentColor"></path></g></svg></span> </div> <div class="filter-options-content pb-8.5 hidden" :class="{ 'hidden': !open , 'block': 'open' }"> <script>
function initSmileAttibute_69301f58e13d1() {
"use strict";
return {
options : {"component":"Smile_ElasticsuiteCatalog\/js\/attribute-filter","maxSize":10,"displayProductCount":true,"hasMoreItems":false,"displayRelNofollow":"","ajaxLoadUrl":"https:\/\/www.adopt.com\/fr\/catalog\/navigation_filter\/ajax\/id\/1472\/?cat=1472&filterName=product_type_back","items":[{"label":"Eau de parfum","count":211,"url":"product_type_back=Eau de parfum","is_selected":false,"isBooleanDefaultValue":false},{"label":"Coffret parfum","count":141,"url":"product_type_back=Coffret parfum","is_selected":false,"isBooleanDefaultValue":false},{"label":"Brume parfum\u00e9e","count":12,"url":"product_type_back=Brume parfum\u00e9e","is_selected":false,"isBooleanDefaultValue":false},{"label":"Boite cadeau","count":1,"url":"product_type_back=Boite cadeau","is_selected":false,"isBooleanDefaultValue":false},{"label":"Brume d'oreiller","count":1,"url":"product_type_back=Brume d'oreiller","is_selected":false,"isBooleanDefaultValue":false},{"label":"Eau de cologne","count":1,"url":"product_type_back=Eau de cologne","is_selected":false,"isBooleanDefaultValue":false}]},
searchLabel : 'Rechercher (%s)',
showMoreLabel : 'Afficher plus',
showLessLabel : 'Voir moins',
noSearchResultLabel : 'Aucun résultat pour la recherche <b>%s</b>.',
expanded: false,
items: [],
lastSelectIndex: 0,
maxSize: 0,
displaySearch: false,
displayedItems: [],
fulltextSearch: null,
searchPlaceholder: '',
result: 0,
/**
* Component initialization
*/
initialize: function () {
this.items = this.options.items.map(this.addItemId.bind(this));
var lastSelectedIndex = Math.max.apply(null, (this.items.map(
function (v, k) {return v['is_selected'] ? k : 0;}))
);
this.maxSize = Math.max(this.options.maxSize, lastSelectedIndex + 1);
this.initSearchPlaceholder();
this.onShowLess();
this.displaySearch = this.displayShowMore();
this.displayedItems = this.getDisplayedItems();
},
/**
* Init the place holder
*/
initSearchPlaceholder: function () {
var examples = this.items.slice(0, 2).map(function (item) {return item.label});
if (this.items.length > 2) {
examples.push('...');
}
let placeholder = document.createElement('div');
placeholder.innerHTML = this.searchLabel.replace('%s', examples.join(', '));
this.searchPlaceholder = placeholder.textContent;
},
/**
* Triggered when typing on the search input
*/
onSearchChange: function (event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
this.onShowLess();
} else {
this.fulltextSearch = text;
this.onShowMore();
}
return true;
},
/**
* Triggered when leaving the search field.
*/
onSearchFocusOut: function(event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
}
},
/**
* Retrieve additional Results
*
* @param callback
*/
loadAdditionalItems: function (callback) {
fetch(this.options.ajaxLoadUrl, {
method: 'GET',
headers: {
'X-Requested-With': 'XMLHttpRequest',
},
})
.then((response) => response.json())
.then((data) => {
this.items = data.map(this.addItemId.bind(this));
this.options.hasMoreItems = false;
if (callback) {
return callback();
}
}
);
},
/**
* Retrieve items to display
*
* @returns {*}
*/
getDisplayedItems: function () {
var items = this.items;
if (this.expanded === false) {
items = this.items.slice(0, this.maxSize);
}
if (this.getFulltextSearch()) {
var searchTokens = this.slugify(this.getFulltextSearch()).split('-');
var lastSearchToken = searchTokens.splice(-1, 1)[0];
items = items.filter(function(item) {
var isValidItem = true;
var itemTokens = this.slugify(item.label).split('-');
searchTokens.forEach(function(currentToken) {
if (itemTokens.indexOf(currentToken) === -1) {
isValidItem = false;
}
})
if (isValidItem && lastSearchToken) {
var ngrams = itemTokens.map(function(token) {return token.substring(0, lastSearchToken.length)});
isValidItem = ngrams.indexOf(lastSearchToken) !== -1;
}
return isValidItem;
}.bind(this))
}
this.result = items.length;
return items;
},
/**
* Does the search have a result
*/
hasSearchResult: function () {
return this.getDisplayedItems().length > 0
},
/**
* Search result message
*/
getSearchResultMessage : function() {
return this.noSearchResultLabel.replace("%s", '"' + this.getFulltextSearch() + '"')
},
getFulltextSearch : function() {
return this.fulltextSearch;
},
/**
* Callback for the "Show more" button
*/
onShowMore: function () {
if (this.options.hasMoreItems) {
this.loadAdditionalItems(this.onShowMore.bind(this));
} else {
this.expanded = true;
}
this.displayedItems = this.getDisplayedItems();
},
/**
* Index the text to be searched.
*/
slugify: function(text) {
return text.toString().toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^\w\u0400-\u052F\u2DE0-\u2DFF\uA640-\uA69F'\-]+/g, '')
.replace(/\-\-+/g, '-')
.replace(/^-+/, '')
},
/**
* Callback for the "Show less" button
*/
onShowLess: function () {
this.expanded = false;
this.displayedItems = this.getDisplayedItems();
},
/**
* Check if the filter can be expanded
*
* @returns {boolean}
*/
enableExpansion : function () {
return this.options.hasMoreItems || this.items.length > this.maxSize;
},
/**
* Displays the "Show More" link
*
* @returns {*|boolean}
*/
displayShowMore: function () {
return this.enableExpansion() && this.expanded === false && !this.getFulltextSearch();
},
/**
* Displays the "Show Less" link
*
* @returns {*|boolean}
*/
displayShowLess: function () {
return this.enableExpansion() && this.expanded === true && !this.getFulltextSearch();
},
/**
* Add an id to items.
*/
addItemId: function (item) {
item.id = Math.floor(Math.random() * 1000000) + "_option_";
item.displayProductCount = this.options.displayProductCount && (item.count >= 1);
return item;
},
};
};</script> <div class="product_type_backFilter" x-data="{...initSmileAttibute_69301f58e13d1(), ...initCustomSmileAttribute_69301f58e1a74()}" x-init="initialize();"> <ol class="items grid grid-cols-2 gap-y-2 gap-x-3 xl:text-sm text-xxs"><template x-for="attribute in displayedItems" hidden><li class="item"><span x-show="attribute.count >= 1" @click.prevent="selectFilter(attribute.url, 'product_type_back', attribute.label)"><span class="form-input--checkbox"><label :for="attribute.id" class="inline-block cursor-pointer" style="gap: 0.2rem"><input type="checkbox" class="sr-only" :id="attribute.id" :checked="attribute.is_selected" onclick="this.parentNode.click();" /><span class="form-input--checkbox__controller shrink-0"></span> <span class="ml-2 font-medium" x-html="attribute.label"></span> <span class="count" x-text="'(' + attribute.count + ')'" x-show ="options.displayProductCount"></span></label></span></span> <div x-show="attribute.count < 1"><span x-html="attribute.label"></span> <span class="count" x-text="attribute.count"></span></div></li></template></ol> <div class="no-results-message" x-model="result" x-show="getFulltextSearch() && !hasSearchResult()"><p x-html="getSearchResultMessage()"></p></div><div class="actions" x-show="enableExpansion()"><div class="secondary text-right"><span class="action show-more underline text-secondary cursor-pointer" x-on:click="onShowMore()" x-show="displayShowMore()"><span x-text="showMoreLabel + '+'"></span></span> <span class="action show-less underline text-secondary cursor-pointer" x-on:click="onShowLess()" x-show="displayShowLess()"><span x-text="showLessLabel + '-'"></span></span></div></div></div><script>
'use strict';
function initCustomSmileAttribute_69301f58e1a74() {
return {
selectFilter(param, action, value) {
window.dataLayer?.push({
'event': 'filtres',
'action': action,
'label': value
});
let attributeCode = param.split('=')[0];
let attributeValue = param.split('=')[1];
let checkbox = this.$el.querySelector('input[type="checkbox"]');
checkbox.checked = !checkbox.checked;
window.dispatchEvent(
new CustomEvent('layered-navigation-filter-selected', {
'detail': {
'attributeCode': attributeCode,
'attributeValue': attributeValue
}
})
);
},
}
}</script></div></div> <div class="filter-option border-b border-lavender-400 last:border-b-0" x-data="{ open: false }" ><div class="filter-options-title flex flex-row justify-between items-center py-4 md:py-6 cursor-pointer transition duration-300 group hover:text-pink" @click="open = !open" ><span class="font-medium text-anthracite-600"> Contenance </span> <span class="-rotate-180" :class="{ '-rotate-180': open }"><svg width="9" height="4.8536" version="1.1" viewbox="0 0 9 4.8536" xmlns="http://www.w3.org/2000/svg" class="text-pink-lighter group-hover:text-pink transition duration-300 w-3 h-auto"><g transform="translate(-.5 -.5)" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="bevel"><path d="m1 1 4 4 4-4" stroke="currentColor"></path></g></svg></span> </div> <div class="filter-options-content pb-8.5 hidden" :class="{ 'hidden': !open , 'block': 'open' }"> <script>
function initLayeredSwatch_contenance() {
return {
getSwatchType(typeNumber) {
switch (typeNumber) {
case "1":
return "color"
case "2":
return "image"
case "0":
default:
return "text"
}
},
getSwatchBackgroundStyle(type, value, image) {
if (this.getSwatchType(type) === "color") {
return 'background-color:' + value;
} else if (this.getSwatchType(type) === "image") {
return "background: #ffffff url('" + image + "') no-repeat center";
} else {
return '';
}
},
activeTooltipItem: false,
tooltipPositionElement: false,
isTooltipVisible() {
return this.activeTooltipItem
},
getTooltipImageStyle() {
const type = this.activeTooltipItem.type;
if (this.getSwatchType(type) === "color") {
return 'background-color:' + this.activeTooltipItem.value + '; width: 110px; height: 90px;';
} else if (this.getSwatchType(type) === "image") {
return "background: #ffffff url('" + this.activeTooltipItem.thumb +
"') center center no-repeat; width: 110px; height: 90px;";
} else {
return 'display:none';
}
},
getTooltipPosition() {
return this.tooltipPositionElement ?
(
`top: ${this.tooltipPositionElement.offsetTop}px;` +
`left: ${this.tooltipPositionElement.offsetLeft}px;`
) : ''
},
getTooltipLabel() {
return this.activeTooltipItem.label || ''
},
isVisualSwatch() {
return this.getSwatchType(this.activeTooltipItem.type) !== 'text'
},
selectFilter(param, action, value) {
window.dataLayer?.push({
'event': 'filtres',
'action': action,
'label': value
});
let attributeCode = param.split('=')[0];
let attributeValue = param.split('=')[1];
let checkbox = this.$el.querySelector('input[type="checkbox"]');
checkbox.checked = !checkbox.checked;
window.dispatchEvent(
new CustomEvent('layered-navigation-filter-selected', {
'detail': {
'attributeCode': attributeCode,
'attributeValue': attributeValue
}
})
);
},
}
}</script><div class="swatch-attribute ? swatch-layered contenance" x-data="initLayeredSwatch_contenance()" ><ol class="items grid grid-cols-2 gap-y-2 gap-x-3 xl:text-sm text-xxs"> <li class="item"><span @click.prevent="selectFilter('contenance=10 ml', '', 'attribute.label')" ><span class="form-input--checkbox"><label for="349" class="inline-block cursor-pointer" style="gap: 0.2rem"><input type="checkbox" class="sr-only" id="349" onclick="this.parentNode.click();" /><span class="form-input--checkbox__controller shrink-0"></span> <span class="ml-2 font-medium"> 10 ml </span> <span class="count">(3)</span> </label></span></span></li> <li class="item"><span @click.prevent="selectFilter('contenance=30 ml', '', 'attribute.label')" ><span class="form-input--checkbox"><label for="350" class="inline-block cursor-pointer" style="gap: 0.2rem"><input type="checkbox" class="sr-only" id="350" onclick="this.parentNode.click();" /><span class="form-input--checkbox__controller shrink-0"></span> <span class="ml-2 font-medium"> 30 ml </span> <span class="count">(197)</span> </label></span></span></li> <li class="item"><span @click.prevent="selectFilter('contenance=50 ml', '', 'attribute.label')" ><span class="form-input--checkbox"><label for="913" class="inline-block cursor-pointer" style="gap: 0.2rem"><input type="checkbox" class="sr-only" id="913" onclick="this.parentNode.click();" /><span class="form-input--checkbox__controller shrink-0"></span> <span class="ml-2 font-medium"> 50 ml </span> <span class="count">(13)</span> </label></span></span></li> <li class="item"><span @click.prevent="selectFilter('contenance=100 ml', '', 'attribute.label')" ><span class="form-input--checkbox"><label for="351" class="inline-block cursor-pointer" style="gap: 0.2rem"><input type="checkbox" class="sr-only" id="351" onclick="this.parentNode.click();" /><span class="form-input--checkbox__controller shrink-0"></span> <span class="ml-2 font-medium"> 100 ml </span> <span class="count">(84)</span> </label></span></span></li> <li class="item"><span @click.prevent="selectFilter('contenance=200 ml', '', 'attribute.label')" ><span class="form-input--checkbox"><label for="706" class="inline-block cursor-pointer" style="gap: 0.2rem"><input type="checkbox" class="sr-only" id="706" onclick="this.parentNode.click();" /><span class="form-input--checkbox__controller shrink-0"></span> <span class="ml-2 font-medium"> 200 ml </span> <span class="count">(12)</span> </label></span></span></li> </ol></div></div></div> <div class="filter-option border-b border-lavender-400 last:border-b-0" x-data="{ open: false }" ><div class="filter-options-title flex flex-row justify-between items-center py-4 md:py-6 cursor-pointer transition duration-300 group hover:text-pink" @click="open = !open" ><span class="font-medium text-anthracite-600"> Pour qui </span> <span class="-rotate-180" :class="{ '-rotate-180': open }"><svg width="9" height="4.8536" version="1.1" viewbox="0 0 9 4.8536" xmlns="http://www.w3.org/2000/svg" class="text-pink-lighter group-hover:text-pink transition duration-300 w-3 h-auto"><g transform="translate(-.5 -.5)" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="bevel"><path d="m1 1 4 4 4-4" stroke="currentColor"></path></g></svg></span> </div> <div class="filter-options-content pb-8.5 hidden" :class="{ 'hidden': !open , 'block': 'open' }"> <script>
function initSmileAttibute_69301f58e45f1() {
"use strict";
return {
options : {"component":"Smile_ElasticsuiteCatalog\/js\/attribute-filter","maxSize":10,"displayProductCount":true,"hasMoreItems":false,"displayRelNofollow":"","ajaxLoadUrl":"https:\/\/www.adopt.com\/fr\/catalog\/navigation_filter\/ajax\/id\/1472\/?cat=1472&filterName=genres","items":[{"label":"Femme","count":300,"url":"genres=Femme","is_selected":false,"isBooleanDefaultValue":false},{"label":"Homme","count":53,"url":"genres=Homme","is_selected":false,"isBooleanDefaultValue":false},{"label":"Mixte","count":9,"url":"genres=Mixte","is_selected":false,"isBooleanDefaultValue":false},{"label":"Enfant","count":2,"url":"genres=Enfant","is_selected":false,"isBooleanDefaultValue":false}]},
searchLabel : 'Rechercher (%s)',
showMoreLabel : 'Afficher plus',
showLessLabel : 'Voir moins',
noSearchResultLabel : 'Aucun résultat pour la recherche <b>%s</b>.',
expanded: false,
items: [],
lastSelectIndex: 0,
maxSize: 0,
displaySearch: false,
displayedItems: [],
fulltextSearch: null,
searchPlaceholder: '',
result: 0,
/**
* Component initialization
*/
initialize: function () {
this.items = this.options.items.map(this.addItemId.bind(this));
var lastSelectedIndex = Math.max.apply(null, (this.items.map(
function (v, k) {return v['is_selected'] ? k : 0;}))
);
this.maxSize = Math.max(this.options.maxSize, lastSelectedIndex + 1);
this.initSearchPlaceholder();
this.onShowLess();
this.displaySearch = this.displayShowMore();
this.displayedItems = this.getDisplayedItems();
},
/**
* Init the place holder
*/
initSearchPlaceholder: function () {
var examples = this.items.slice(0, 2).map(function (item) {return item.label});
if (this.items.length > 2) {
examples.push('...');
}
let placeholder = document.createElement('div');
placeholder.innerHTML = this.searchLabel.replace('%s', examples.join(', '));
this.searchPlaceholder = placeholder.textContent;
},
/**
* Triggered when typing on the search input
*/
onSearchChange: function (event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
this.onShowLess();
} else {
this.fulltextSearch = text;
this.onShowMore();
}
return true;
},
/**
* Triggered when leaving the search field.
*/
onSearchFocusOut: function(event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
}
},
/**
* Retrieve additional Results
*
* @param callback
*/
loadAdditionalItems: function (callback) {
fetch(this.options.ajaxLoadUrl, {
method: 'GET',
headers: {
'X-Requested-With': 'XMLHttpRequest',
},
})
.then((response) => response.json())
.then((data) => {
this.items = data.map(this.addItemId.bind(this));
this.options.hasMoreItems = false;
if (callback) {
return callback();
}
}
);
},
/**
* Retrieve items to display
*
* @returns {*}
*/
getDisplayedItems: function () {
var items = this.items;
if (this.expanded === false) {
items = this.items.slice(0, this.maxSize);
}
if (this.getFulltextSearch()) {
var searchTokens = this.slugify(this.getFulltextSearch()).split('-');
var lastSearchToken = searchTokens.splice(-1, 1)[0];
items = items.filter(function(item) {
var isValidItem = true;
var itemTokens = this.slugify(item.label).split('-');
searchTokens.forEach(function(currentToken) {
if (itemTokens.indexOf(currentToken) === -1) {
isValidItem = false;
}
})
if (isValidItem && lastSearchToken) {
var ngrams = itemTokens.map(function(token) {return token.substring(0, lastSearchToken.length)});
isValidItem = ngrams.indexOf(lastSearchToken) !== -1;
}
return isValidItem;
}.bind(this))
}
this.result = items.length;
return items;
},
/**
* Does the search have a result
*/
hasSearchResult: function () {
return this.getDisplayedItems().length > 0
},
/**
* Search result message
*/
getSearchResultMessage : function() {
return this.noSearchResultLabel.replace("%s", '"' + this.getFulltextSearch() + '"')
},
getFulltextSearch : function() {
return this.fulltextSearch;
},
/**
* Callback for the "Show more" button
*/
onShowMore: function () {
if (this.options.hasMoreItems) {
this.loadAdditionalItems(this.onShowMore.bind(this));
} else {
this.expanded = true;
}
this.displayedItems = this.getDisplayedItems();
},
/**
* Index the text to be searched.
*/
slugify: function(text) {
return text.toString().toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^\w\u0400-\u052F\u2DE0-\u2DFF\uA640-\uA69F'\-]+/g, '')
.replace(/\-\-+/g, '-')
.replace(/^-+/, '')
},
/**
* Callback for the "Show less" button
*/
onShowLess: function () {
this.expanded = false;
this.displayedItems = this.getDisplayedItems();
},
/**
* Check if the filter can be expanded
*
* @returns {boolean}
*/
enableExpansion : function () {
return this.options.hasMoreItems || this.items.length > this.maxSize;
},
/**
* Displays the "Show More" link
*
* @returns {*|boolean}
*/
displayShowMore: function () {
return this.enableExpansion() && this.expanded === false && !this.getFulltextSearch();
},
/**
* Displays the "Show Less" link
*
* @returns {*|boolean}
*/
displayShowLess: function () {
return this.enableExpansion() && this.expanded === true && !this.getFulltextSearch();
},
/**
* Add an id to items.
*/
addItemId: function (item) {
item.id = Math.floor(Math.random() * 1000000) + "_option_";
item.displayProductCount = this.options.displayProductCount && (item.count >= 1);
return item;
},
};
};</script> <div class="genresFilter" x-data="{...initSmileAttibute_69301f58e45f1(), ...initCustomSmileAttribute_69301f58e48bd()}" x-init="initialize();"> <ol class="items grid grid-cols-2 gap-y-2 gap-x-3 xl:text-sm text-xxs"><template x-for="attribute in displayedItems" hidden><li class="item"><span x-show="attribute.count >= 1" @click.prevent="selectFilter(attribute.url, 'genres', attribute.label)"><span class="form-input--checkbox"><label :for="attribute.id" class="inline-block cursor-pointer" style="gap: 0.2rem"><input type="checkbox" class="sr-only" :id="attribute.id" :checked="attribute.is_selected" onclick="this.parentNode.click();" /><span class="form-input--checkbox__controller shrink-0"></span> <span class="ml-2 font-medium" x-html="attribute.label"></span> <span class="count" x-text="'(' + attribute.count + ')'" x-show ="options.displayProductCount"></span></label></span></span> <div x-show="attribute.count < 1"><span x-html="attribute.label"></span> <span class="count" x-text="attribute.count"></span></div></li></template></ol> <div class="no-results-message" x-model="result" x-show="getFulltextSearch() && !hasSearchResult()"><p x-html="getSearchResultMessage()"></p></div><div class="actions" x-show="enableExpansion()"><div class="secondary text-right"><span class="action show-more underline text-secondary cursor-pointer" x-on:click="onShowMore()" x-show="displayShowMore()"><span x-text="showMoreLabel + '+'"></span></span> <span class="action show-less underline text-secondary cursor-pointer" x-on:click="onShowLess()" x-show="displayShowLess()"><span x-text="showLessLabel + '-'"></span></span></div></div></div><script>
'use strict';
function initCustomSmileAttribute_69301f58e48bd() {
return {
selectFilter(param, action, value) {
window.dataLayer?.push({
'event': 'filtres',
'action': action,
'label': value
});
let attributeCode = param.split('=')[0];
let attributeValue = param.split('=')[1];
let checkbox = this.$el.querySelector('input[type="checkbox"]');
checkbox.checked = !checkbox.checked;
window.dispatchEvent(
new CustomEvent('layered-navigation-filter-selected', {
'detail': {
'attributeCode': attributeCode,
'attributeValue': attributeValue
}
})
);
},
}
}</script></div></div> <div class="filter-option border-b border-lavender-400 last:border-b-0" x-data="{ open: false }" ><div class="filter-options-title flex flex-row justify-between items-center py-4 md:py-6 cursor-pointer transition duration-300 group hover:text-pink" @click="open = !open" ><span class="font-medium text-anthracite-600"> Intensité </span> <span class="-rotate-180" :class="{ '-rotate-180': open }"><svg width="9" height="4.8536" version="1.1" viewbox="0 0 9 4.8536" xmlns="http://www.w3.org/2000/svg" class="text-pink-lighter group-hover:text-pink transition duration-300 w-3 h-auto"><g transform="translate(-.5 -.5)" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="bevel"><path d="m1 1 4 4 4-4" stroke="currentColor"></path></g></svg></span> </div> <div class="filter-options-content pb-8.5 hidden" :class="{ 'hidden': !open , 'block': 'open' }"> <script>
function initSmileAttibute_69301f58e4f86() {
"use strict";
return {
options : {"component":"Smile_ElasticsuiteCatalog\/js\/attribute-filter","maxSize":10,"displayProductCount":true,"hasMoreItems":false,"displayRelNofollow":"","ajaxLoadUrl":"https:\/\/www.adopt.com\/fr\/catalog\/navigation_filter\/ajax\/id\/1472\/?cat=1472&filterName=intensity","items":[{"label":"1","count":8,"url":"intensity=1","is_selected":false,"isBooleanDefaultValue":false},{"label":"2","count":34,"url":"intensity=2","is_selected":false,"isBooleanDefaultValue":false},{"label":"3","count":118,"url":"intensity=3","is_selected":false,"isBooleanDefaultValue":false},{"label":"4","count":101,"url":"intensity=4","is_selected":false,"isBooleanDefaultValue":false},{"label":"5","count":20,"url":"intensity=5","is_selected":false,"isBooleanDefaultValue":false}]},
searchLabel : 'Rechercher (%s)',
showMoreLabel : 'Afficher plus',
showLessLabel : 'Voir moins',
noSearchResultLabel : 'Aucun résultat pour la recherche <b>%s</b>.',
expanded: false,
items: [],
lastSelectIndex: 0,
maxSize: 0,
displaySearch: false,
displayedItems: [],
fulltextSearch: null,
searchPlaceholder: '',
result: 0,
/**
* Component initialization
*/
initialize: function () {
this.items = this.options.items.map(this.addItemId.bind(this));
var lastSelectedIndex = Math.max.apply(null, (this.items.map(
function (v, k) {return v['is_selected'] ? k : 0;}))
);
this.maxSize = Math.max(this.options.maxSize, lastSelectedIndex + 1);
this.initSearchPlaceholder();
this.onShowLess();
this.displaySearch = this.displayShowMore();
this.displayedItems = this.getDisplayedItems();
},
/**
* Init the place holder
*/
initSearchPlaceholder: function () {
var examples = this.items.slice(0, 2).map(function (item) {return item.label});
if (this.items.length > 2) {
examples.push('...');
}
let placeholder = document.createElement('div');
placeholder.innerHTML = this.searchLabel.replace('%s', examples.join(', '));
this.searchPlaceholder = placeholder.textContent;
},
/**
* Triggered when typing on the search input
*/
onSearchChange: function (event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
this.onShowLess();
} else {
this.fulltextSearch = text;
this.onShowMore();
}
return true;
},
/**
* Triggered when leaving the search field.
*/
onSearchFocusOut: function(event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
}
},
/**
* Retrieve additional Results
*
* @param callback
*/
loadAdditionalItems: function (callback) {
fetch(this.options.ajaxLoadUrl, {
method: 'GET',
headers: {
'X-Requested-With': 'XMLHttpRequest',
},
})
.then((response) => response.json())
.then((data) => {
this.items = data.map(this.addItemId.bind(this));
this.options.hasMoreItems = false;
if (callback) {
return callback();
}
}
);
},
/**
* Retrieve items to display
*
* @returns {*}
*/
getDisplayedItems: function () {
var items = this.items;
if (this.expanded === false) {
items = this.items.slice(0, this.maxSize);
}
if (this.getFulltextSearch()) {
var searchTokens = this.slugify(this.getFulltextSearch()).split('-');
var lastSearchToken = searchTokens.splice(-1, 1)[0];
items = items.filter(function(item) {
var isValidItem = true;
var itemTokens = this.slugify(item.label).split('-');
searchTokens.forEach(function(currentToken) {
if (itemTokens.indexOf(currentToken) === -1) {
isValidItem = false;
}
})
if (isValidItem && lastSearchToken) {
var ngrams = itemTokens.map(function(token) {return token.substring(0, lastSearchToken.length)});
isValidItem = ngrams.indexOf(lastSearchToken) !== -1;
}
return isValidItem;
}.bind(this))
}
this.result = items.length;
return items;
},
/**
* Does the search have a result
*/
hasSearchResult: function () {
return this.getDisplayedItems().length > 0
},
/**
* Search result message
*/
getSearchResultMessage : function() {
return this.noSearchResultLabel.replace("%s", '"' + this.getFulltextSearch() + '"')
},
getFulltextSearch : function() {
return this.fulltextSearch;
},
/**
* Callback for the "Show more" button
*/
onShowMore: function () {
if (this.options.hasMoreItems) {
this.loadAdditionalItems(this.onShowMore.bind(this));
} else {
this.expanded = true;
}
this.displayedItems = this.getDisplayedItems();
},
/**
* Index the text to be searched.
*/
slugify: function(text) {
return text.toString().toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^\w\u0400-\u052F\u2DE0-\u2DFF\uA640-\uA69F'\-]+/g, '')
.replace(/\-\-+/g, '-')
.replace(/^-+/, '')
},
/**
* Callback for the "Show less" button
*/
onShowLess: function () {
this.expanded = false;
this.displayedItems = this.getDisplayedItems();
},
/**
* Check if the filter can be expanded
*
* @returns {boolean}
*/
enableExpansion : function () {
return this.options.hasMoreItems || this.items.length > this.maxSize;
},
/**
* Displays the "Show More" link
*
* @returns {*|boolean}
*/
displayShowMore: function () {
return this.enableExpansion() && this.expanded === false && !this.getFulltextSearch();
},
/**
* Displays the "Show Less" link
*
* @returns {*|boolean}
*/
displayShowLess: function () {
return this.enableExpansion() && this.expanded === true && !this.getFulltextSearch();
},
/**
* Add an id to items.
*/
addItemId: function (item) {
item.id = Math.floor(Math.random() * 1000000) + "_option_";
item.displayProductCount = this.options.displayProductCount && (item.count >= 1);
return item;
},
};
};</script> <div class="intensityFilter" x-data="{...initSmileAttibute_69301f58e4f86(), ...initCustomSmileAttribute_69301f58e51a2()}" x-init="initialize();"> <ol class="items grid grid-cols-2 gap-y-2 gap-x-3 xl:text-sm text-xxs"><template x-for="attribute in displayedItems" hidden><li class="item"><span x-show="attribute.count >= 1" @click.prevent="selectFilter(attribute.url, 'intensity', attribute.label)"><span class="form-input--checkbox"><label :for="attribute.id" class="inline-block cursor-pointer" style="gap: 0.2rem"><input type="checkbox" class="sr-only" :id="attribute.id" :checked="attribute.is_selected" onclick="this.parentNode.click();" /><span class="form-input--checkbox__controller shrink-0"></span> <span class="ml-2 font-medium" x-html="attribute.label"></span> <span class="count" x-text="'(' + attribute.count + ')'" x-show ="options.displayProductCount"></span></label></span></span> <div x-show="attribute.count < 1"><span x-html="attribute.label"></span> <span class="count" x-text="attribute.count"></span></div></li></template></ol> <div class="no-results-message" x-model="result" x-show="getFulltextSearch() && !hasSearchResult()"><p x-html="getSearchResultMessage()"></p></div><div class="actions" x-show="enableExpansion()"><div class="secondary text-right"><span class="action show-more underline text-secondary cursor-pointer" x-on:click="onShowMore()" x-show="displayShowMore()"><span x-text="showMoreLabel + '+'"></span></span> <span class="action show-less underline text-secondary cursor-pointer" x-on:click="onShowLess()" x-show="displayShowLess()"><span x-text="showLessLabel + '-'"></span></span></div></div></div><script>
'use strict';
function initCustomSmileAttribute_69301f58e51a2() {
return {
selectFilter(param, action, value) {
window.dataLayer?.push({
'event': 'filtres',
'action': action,
'label': value
});
let attributeCode = param.split('=')[0];
let attributeValue = param.split('=')[1];
let checkbox = this.$el.querySelector('input[type="checkbox"]');
checkbox.checked = !checkbox.checked;
window.dispatchEvent(
new CustomEvent('layered-navigation-filter-selected', {
'detail': {
'attributeCode': attributeCode,
'attributeValue': attributeValue
}
})
);
},
}
}</script></div></div> <div class="filter-option border-b border-lavender-400 last:border-b-0" "><div class="filter-options-title flex flex-row justify-between items-center py-4 md:py-6 cursor-pointer transition duration-300 group hover:text-pink" ><span class="font-medium text-anthracite-600"> <script>
function initSmileAttibute_69301f58e57fe() {
"use strict";
return {
options : {"component":"Smile_ElasticsuiteCatalog\/js\/attribute-filter","maxSize":10,"displayProductCount":true,"hasMoreItems":false,"displayRelNofollow":"","ajaxLoadUrl":"https:\/\/www.adopt.com\/fr\/catalog\/navigation_filter\/ajax\/id\/1472\/?cat=1472&filterName=paillete","items":[{"label":"Non","count":342,"url":"paillete=Non","is_selected":false,"isBooleanDefaultValue":false},{"label":"Oui","count":26,"url":"paillete=Oui","is_selected":false,"isBooleanDefaultValue":true,"attributeLabel":"Paillet\u00e9"}]},
searchLabel : 'Rechercher (%s)',
showMoreLabel : 'Afficher plus',
showLessLabel : 'Voir moins',
noSearchResultLabel : 'Aucun résultat pour la recherche <b>%s</b>.',
expanded: false,
items: [],
lastSelectIndex: 0,
maxSize: 0,
displaySearch: false,
displayedItems: [],
fulltextSearch: null,
searchPlaceholder: '',
result: 0,
/**
* Component initialization
*/
initialize: function () {
this.items = this.options.items.map(this.addItemId.bind(this));
var lastSelectedIndex = Math.max.apply(null, (this.items.map(
function (v, k) {return v['is_selected'] ? k : 0;}))
);
this.maxSize = Math.max(this.options.maxSize, lastSelectedIndex + 1);
this.initSearchPlaceholder();
this.onShowLess();
this.displaySearch = this.displayShowMore();
this.displayedItems = this.getDisplayedItems();
},
/**
* Init the place holder
*/
initSearchPlaceholder: function () {
var examples = this.items.slice(0, 2).map(function (item) {return item.label});
if (this.items.length > 2) {
examples.push('...');
}
let placeholder = document.createElement('div');
placeholder.innerHTML = this.searchLabel.replace('%s', examples.join(', '));
this.searchPlaceholder = placeholder.textContent;
},
/**
* Triggered when typing on the search input
*/
onSearchChange: function (event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
this.onShowLess();
} else {
this.fulltextSearch = text;
this.onShowMore();
}
return true;
},
/**
* Triggered when leaving the search field.
*/
onSearchFocusOut: function(event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
}
},
/**
* Retrieve additional Results
*
* @param callback
*/
loadAdditionalItems: function (callback) {
fetch(this.options.ajaxLoadUrl, {
method: 'GET',
headers: {
'X-Requested-With': 'XMLHttpRequest',
},
})
.then((response) => response.json())
.then((data) => {
this.items = data.map(this.addItemId.bind(this));
this.options.hasMoreItems = false;
if (callback) {
return callback();
}
}
);
},
/**
* Retrieve items to display
*
* @returns {*}
*/
getDisplayedItems: function () {
var items = this.items;
if (this.expanded === false) {
items = this.items.slice(0, this.maxSize);
}
if (this.getFulltextSearch()) {
var searchTokens = this.slugify(this.getFulltextSearch()).split('-');
var lastSearchToken = searchTokens.splice(-1, 1)[0];
items = items.filter(function(item) {
var isValidItem = true;
var itemTokens = this.slugify(item.label).split('-');
searchTokens.forEach(function(currentToken) {
if (itemTokens.indexOf(currentToken) === -1) {
isValidItem = false;
}
})
if (isValidItem && lastSearchToken) {
var ngrams = itemTokens.map(function(token) {return token.substring(0, lastSearchToken.length)});
isValidItem = ngrams.indexOf(lastSearchToken) !== -1;
}
return isValidItem;
}.bind(this))
}
this.result = items.length;
return items;
},
/**
* Does the search have a result
*/
hasSearchResult: function () {
return this.getDisplayedItems().length > 0
},
/**
* Search result message
*/
getSearchResultMessage : function() {
return this.noSearchResultLabel.replace("%s", '"' + this.getFulltextSearch() + '"')
},
getFulltextSearch : function() {
return this.fulltextSearch;
},
/**
* Callback for the "Show more" button
*/
onShowMore: function () {
if (this.options.hasMoreItems) {
this.loadAdditionalItems(this.onShowMore.bind(this));
} else {
this.expanded = true;
}
this.displayedItems = this.getDisplayedItems();
},
/**
* Index the text to be searched.
*/
slugify: function(text) {
return text.toString().toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^\w\u0400-\u052F\u2DE0-\u2DFF\uA640-\uA69F'\-]+/g, '')
.replace(/\-\-+/g, '-')
.replace(/^-+/, '')
},
/**
* Callback for the "Show less" button
*/
onShowLess: function () {
this.expanded = false;
this.displayedItems = this.getDisplayedItems();
},
/**
* Check if the filter can be expanded
*
* @returns {boolean}
*/
enableExpansion : function () {
return this.options.hasMoreItems || this.items.length > this.maxSize;
},
/**
* Displays the "Show More" link
*
* @returns {*|boolean}
*/
displayShowMore: function () {
return this.enableExpansion() && this.expanded === false && !this.getFulltextSearch();
},
/**
* Displays the "Show Less" link
*
* @returns {*|boolean}
*/
displayShowLess: function () {
return this.enableExpansion() && this.expanded === true && !this.getFulltextSearch();
},
/**
* Add an id to items.
*/
addItemId: function (item) {
item.id = Math.floor(Math.random() * 1000000) + "_option_";
item.displayProductCount = this.options.displayProductCount && (item.count >= 1);
return item;
},
};
};</script> <div class="pailleteFilter" x-data="{...initSmileAttibute_69301f58e57fe(), ...initCustomSmileAttribute_69301f58e59e1()}" x-init="initialize();"> <ol class="items grid grid-cols-2 gap-y-2 gap-x-3"><template x-for="attribute in displayedItems" hidden><template x-if="attribute.isBooleanDefaultValue"><li class="item"><span x-show="attribute.count >= 1" @click.prevent="selectFilter(attribute.url, 'paillete', attribute.label)"><span class="form-input--checkbox"><label :for="attribute.id" class="inline-block cursor-pointer" style="gap: 0.2rem"><input type="checkbox" class="sr-only" :id="attribute.id" :checked="attribute.is_selected" onclick="this.parentNode.click();" /><span class="form-input--checkbox__controller shrink-0"></span> <span class="ml-2 font-medium text-anthracite-600" x-html="attribute.attributeLabel"></span> <span class="count" x-text="'(' + attribute.count + ')'" x-show ="options.displayProductCount"></span></label></span></span> <div x-show="attribute.count < 1"><span x-html="attribute.label"></span> <span class="count" x-text="attribute.count"></span></div></li></template></template></ol> <div class="no-results-message" x-model="result" x-show="getFulltextSearch() && !hasSearchResult()"><p x-html="getSearchResultMessage()"></p></div><div class="actions" x-show="enableExpansion()"><div class="secondary text-right"><span class="action show-more underline text-secondary cursor-pointer" x-on:click="onShowMore()" x-show="displayShowMore()"><span x-text="showMoreLabel + '+'"></span></span> <span class="action show-less underline text-secondary cursor-pointer" x-on:click="onShowLess()" x-show="displayShowLess()"><span x-text="showLessLabel + '-'"></span></span></div></div></div><script>
'use strict';
function initCustomSmileAttribute_69301f58e59e1() {
return {
selectFilter(param, action, value) {
window.dataLayer?.push({
'event': 'filtres',
'action': action,
'label': value
});
let attributeCode = param.split('=')[0];
let attributeValue = param.split('=')[1];
let checkbox = this.$el.querySelector('input[type="checkbox"]');
checkbox.checked = !checkbox.checked;
window.dispatchEvent(
new CustomEvent('layered-navigation-filter-selected', {
'detail': {
'attributeCode': attributeCode,
'attributeValue': attributeValue
}
})
);
},
}
}</script> </span> </div></div> <div class="filter-option border-b border-lavender-400 last:border-b-0" x-data="{ open: false }" ><div class="filter-options-title flex flex-row justify-between items-center py-4 md:py-6 cursor-pointer transition duration-300 group hover:text-pink" @click="open = !open" ><span class="font-medium text-anthracite-600"> Notes </span> <span class="-rotate-180" :class="{ '-rotate-180': open }"><svg width="9" height="4.8536" version="1.1" viewbox="0 0 9 4.8536" xmlns="http://www.w3.org/2000/svg" class="text-pink-lighter group-hover:text-pink transition duration-300 w-3 h-auto"><g transform="translate(-.5 -.5)" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="bevel"><path d="m1 1 4 4 4-4" stroke="currentColor"></path></g></svg></span> </div> <div class="filter-options-content pb-8.5 hidden" :class="{ 'hidden': !open , 'block': 'open' }"> <script>
function initSmileAttibute_69301f58e5e91() {
"use strict";
return {
options : {"component":"Smile_ElasticsuiteCatalog\/js\/attribute-filter","hasMoreItems":false,"template":"Smile_ElasticsuiteRating\/rating-filter","maxSize":5,"items":[{"label":4,"count":355,"url":"ratings_summary=4","is_selected":false,"isBooleanDefaultValue":false},{"label":3,"count":355,"url":"ratings_summary=3","is_selected":false,"isBooleanDefaultValue":false},{"label":2,"count":355,"url":"ratings_summary=2","is_selected":false,"isBooleanDefaultValue":false},{"label":1,"count":355,"url":"ratings_summary=1","is_selected":false,"isBooleanDefaultValue":false},{"label":0,"count":392,"url":"ratings_summary=0","is_selected":false,"isBooleanDefaultValue":false}]},
searchLabel : 'Rechercher (%s)',
showMoreLabel : 'Afficher plus',
showLessLabel : 'Voir moins',
noSearchResultLabel : 'Aucun résultat pour la recherche <b>%s</b>.',
expanded: false,
items: [],
lastSelectIndex: 0,
maxSize: 0,
displaySearch: false,
displayedItems: [],
fulltextSearch: null,
searchPlaceholder: '',
result: 0,
/**
* Component initialization
*/
initialize: function () {
this.items = this.options.items.map(this.addItemId.bind(this));
var lastSelectedIndex = Math.max.apply(null, (this.items.map(
function (v, k) {return v['is_selected'] ? k : 0;}))
);
this.maxSize = Math.max(this.options.maxSize, lastSelectedIndex + 1);
this.initSearchPlaceholder();
this.onShowLess();
this.displaySearch = this.displayShowMore();
this.displayedItems = this.getDisplayedItems();
},
/**
* Init the place holder
*/
initSearchPlaceholder: function () {
var examples = this.items.slice(0, 2).map(function (item) {return item.label});
if (this.items.length > 2) {
examples.push('...');
}
let placeholder = document.createElement('div');
placeholder.innerHTML = this.searchLabel.replace('%s', examples.join(', '));
this.searchPlaceholder = placeholder.textContent;
},
/**
* Triggered when typing on the search input
*/
onSearchChange: function (event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
this.onShowLess();
} else {
this.fulltextSearch = text;
this.onShowMore();
}
return true;
},
/**
* Triggered when leaving the search field.
*/
onSearchFocusOut: function(event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
}
},
/**
* Retrieve additional Results
*
* @param callback
*/
loadAdditionalItems: function (callback) {
fetch(this.options.ajaxLoadUrl, {
method: 'GET',
headers: {
'X-Requested-With': 'XMLHttpRequest',
},
})
.then((response) => response.json())
.then((data) => {
this.items = data.map(this.addItemId.bind(this));
this.options.hasMoreItems = false;
if (callback) {
return callback();
}
}
);
},
/**
* Retrieve items to display
*
* @returns {*}
*/
getDisplayedItems: function () {
var items = this.items;
if (this.expanded === false) {
items = this.items.slice(0, this.maxSize);
}
if (this.getFulltextSearch()) {
var searchTokens = this.slugify(this.getFulltextSearch()).split('-');
var lastSearchToken = searchTokens.splice(-1, 1)[0];
items = items.filter(function(item) {
var isValidItem = true;
var itemTokens = this.slugify(item.label).split('-');
searchTokens.forEach(function(currentToken) {
if (itemTokens.indexOf(currentToken) === -1) {
isValidItem = false;
}
})
if (isValidItem && lastSearchToken) {
var ngrams = itemTokens.map(function(token) {return token.substring(0, lastSearchToken.length)});
isValidItem = ngrams.indexOf(lastSearchToken) !== -1;
}
return isValidItem;
}.bind(this))
}
this.result = items.length;
return items;
},
/**
* Does the search have a result
*/
hasSearchResult: function () {
return this.getDisplayedItems().length > 0
},
/**
* Search result message
*/
getSearchResultMessage : function() {
return this.noSearchResultLabel.replace("%s", '"' + this.getFulltextSearch() + '"')
},
getFulltextSearch : function() {
return this.fulltextSearch;
},
/**
* Callback for the "Show more" button
*/
onShowMore: function () {
if (this.options.hasMoreItems) {
this.loadAdditionalItems(this.onShowMore.bind(this));
} else {
this.expanded = true;
}
this.displayedItems = this.getDisplayedItems();
},
/**
* Index the text to be searched.
*/
slugify: function(text) {
return text.toString().toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^\w\u0400-\u052F\u2DE0-\u2DFF\uA640-\uA69F'\-]+/g, '')
.replace(/\-\-+/g, '-')
.replace(/^-+/, '')
},
/**
* Callback for the "Show less" button
*/
onShowLess: function () {
this.expanded = false;
this.displayedItems = this.getDisplayedItems();
},
/**
* Check if the filter can be expanded
*
* @returns {boolean}
*/
enableExpansion : function () {
return this.options.hasMoreItems || this.items.length > this.maxSize;
},
/**
* Displays the "Show More" link
*
* @returns {*|boolean}
*/
displayShowMore: function () {
return this.enableExpansion() && this.expanded === false && !this.getFulltextSearch();
},
/**
* Displays the "Show Less" link
*
* @returns {*|boolean}
*/
displayShowLess: function () {
return this.enableExpansion() && this.expanded === true && !this.getFulltextSearch();
},
/**
* Add an id to items.
*/
addItemId: function (item) {
item.id = Math.floor(Math.random() * 1000000) + "_option_";
item.displayProductCount = this.options.displayProductCount && (item.count >= 1);
return item;
},
};
};</script> <div class="ratings_summaryFilter" x-data="{...initSmileAttibute_69301f58e5e91(), ...initCustomSmileAttribute_69301f58e5eed()}" x-init="initialize();"><ol class="items flex flex-col gap-2 font-primary text-sm font-medium text-purple"><template x-for="attribute in displayedItems" hidden><template x-if="attribute.label != 0"><li class="item"><span @click.prevent="selectFilter(attribute.url, 'ratings_summary', attribute.label)"><div class="form-input--radio"><label :for="attribute.id" class="flex cursor-pointer items-center gap-0.5"><input class="sr-only" type="radio" name="ratingValue" :id="attribute.id" :checked="attribute.is_selected"><div class="form-input--radio__controller"></div><div class="flex cursor-pointer items-center gap-0.5" x-html="getRatingHtmlFromValue(attribute.label)"></div><div class="flex gap-1"><span x-show="attribute.label < 5" class="count font-normal">& plus</span> <span class="count font-normal" x-text="'(' + attribute.count + ')'"></span></div></label></div></span> <div x-show="attribute.count < 1"><span x-html="attribute.label"></span> <span class="count" x-text="attribute.count"></span></div></li></template></template></ol><div class="no-results-message" x-model="result" x-show="getFulltextSearch() && !hasSearchResult()"><p x-html="getSearchResultMessage()"></p></div><div class="actions" x-show="enableExpansion()"><div class="secondary text-right"><span class="action show-more underline text-secondary cursor-pointer" x-on:click="onShowMore()" x-show="displayShowMore()"><span x-text="showMoreLabel + '+'"></span></span> <span class="action show-less underline text-secondary cursor-pointer" x-on:click="onShowLess()" x-show="displayShowLess()"><span x-text="showLessLabel + '-'"></span></span></div></div></div><script>
'use strict';
function initCustomSmileAttribute_69301f58e5eed() {
return {
starEmptySvg: `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink-300 w-4 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
`,
starHalfSvg: `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
`,
starFullSvg: `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
`,
getRatingHtmlFromValue(value) {
let html = '';
for (let i = 1; i <= 5; i++) {
if (value >= i) {
html += this.starFullSvg;
} else if (i - 0.5 <= value) {
html += this.starHalfSvg;
} else {
html += this.starEmptySvg;
}
}
return html;
},
selectFilter(param, action, value) {
window.dataLayer?.push({
'event': 'filtres',
'action': action,
'label': value
});
let attributeCode = param.split('=')[0];
let attributeValue = param.split('=')[1];
let radio = this.$el.querySelector('input[type="radio"]');
radio.checked = !radio.checked;
window.dispatchEvent(
new CustomEvent('layered-navigation-radio-filter-selected', {
'detail': {
'attributeCode': attributeCode,
'attributeValue': attributeValue,
'added': radio.checked
}
})
);
},
}
}</script></div></div> <div class="filter-option border-b border-lavender-400 last:border-b-0" x-data="{ open: false }" ><div class="filter-options-title flex flex-row justify-between items-center py-4 md:py-6 cursor-pointer transition duration-300 group hover:text-pink" @click="open = !open" ><span class="font-medium text-anthracite-600"> Type de coffret </span> <span class="-rotate-180" :class="{ '-rotate-180': open }"><svg width="9" height="4.8536" version="1.1" viewbox="0 0 9 4.8536" xmlns="http://www.w3.org/2000/svg" class="text-pink-lighter group-hover:text-pink transition duration-300 w-3 h-auto"><g transform="translate(-.5 -.5)" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="bevel"><path d="m1 1 4 4 4-4" stroke="currentColor"></path></g></svg></span> </div> <div class="filter-options-content pb-8.5 hidden" :class="{ 'hidden': !open , 'block': 'open' }"> <script>
function initSmileAttibute_69301f58e6b01() {
"use strict";
return {
options : {"component":"Smile_ElasticsuiteCatalog\/js\/attribute-filter","maxSize":0,"displayProductCount":true,"hasMoreItems":false,"displayRelNofollow":"","ajaxLoadUrl":"https:\/\/www.adopt.com\/fr\/catalog\/navigation_filter\/ajax\/id\/1472\/?cat=1472&filterName=box_type","items":[{"label":"30ml et Gel douche","count":26,"url":"box_type=30ml et Gel douche","is_selected":false,"isBooleanDefaultValue":false},{"label":"Coffret parfum","count":18,"url":"box_type=Coffret parfum","is_selected":false,"isBooleanDefaultValue":false},{"label":"30ml et 100ml","count":15,"url":"box_type=30ml et 100ml","is_selected":false,"isBooleanDefaultValue":false},{"label":"30ml et Gel douche et Lait corps","count":12,"url":"box_type=30ml et Gel douche et Lait corps","is_selected":false,"isBooleanDefaultValue":false},{"label":"30ml et Cr\u00e8me main","count":8,"url":"box_type=30ml et Cr\u00e8me main","is_selected":false,"isBooleanDefaultValue":false},{"label":"Calendrier","count":4,"url":"box_type=Calendrier","is_selected":false,"isBooleanDefaultValue":false},{"label":"Coffret routine","count":4,"url":"box_type=Coffret routine","is_selected":false,"isBooleanDefaultValue":false},{"label":"100ml et Gel douche","count":3,"url":"box_type=100ml et Gel douche","is_selected":false,"isBooleanDefaultValue":false},{"label":"3 et 4 parfums","count":3,"url":"box_type=3 et 4 parfums","is_selected":false,"isBooleanDefaultValue":false},{"label":"30ml et make-up","count":3,"url":"box_type=30ml et make-up","is_selected":false,"isBooleanDefaultValue":false},{"label":"30ml et 50ml","count":2,"url":"box_type=30ml et 50ml","is_selected":false,"isBooleanDefaultValue":false}]},
searchLabel : 'Rechercher (%s)',
showMoreLabel : 'Afficher plus',
showLessLabel : 'Voir moins',
noSearchResultLabel : 'Aucun résultat pour la recherche <b>%s</b>.',
expanded: false,
items: [],
lastSelectIndex: 0,
maxSize: 0,
displaySearch: false,
displayedItems: [],
fulltextSearch: null,
searchPlaceholder: '',
result: 0,
/**
* Component initialization
*/
initialize: function () {
this.items = this.options.items.map(this.addItemId.bind(this));
var lastSelectedIndex = Math.max.apply(null, (this.items.map(
function (v, k) {return v['is_selected'] ? k : 0;}))
);
this.maxSize = Math.max(this.options.maxSize, lastSelectedIndex + 1);
this.initSearchPlaceholder();
this.onShowLess();
this.displaySearch = this.displayShowMore();
this.displayedItems = this.getDisplayedItems();
},
/**
* Init the place holder
*/
initSearchPlaceholder: function () {
var examples = this.items.slice(0, 2).map(function (item) {return item.label});
if (this.items.length > 2) {
examples.push('...');
}
let placeholder = document.createElement('div');
placeholder.innerHTML = this.searchLabel.replace('%s', examples.join(', '));
this.searchPlaceholder = placeholder.textContent;
},
/**
* Triggered when typing on the search input
*/
onSearchChange: function (event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
this.onShowLess();
} else {
this.fulltextSearch = text;
this.onShowMore();
}
return true;
},
/**
* Triggered when leaving the search field.
*/
onSearchFocusOut: function(event) {
var text = event.target.value;
if (text.trim() === "") {
this.fulltextSearch = null;
}
},
/**
* Retrieve additional Results
*
* @param callback
*/
loadAdditionalItems: function (callback) {
fetch(this.options.ajaxLoadUrl, {
method: 'GET',
headers: {
'X-Requested-With': 'XMLHttpRequest',
},
})
.then((response) => response.json())
.then((data) => {
this.items = data.map(this.addItemId.bind(this));
this.options.hasMoreItems = false;
if (callback) {
return callback();
}
}
);
},
/**
* Retrieve items to display
*
* @returns {*}
*/
getDisplayedItems: function () {
var items = this.items;
if (this.expanded === false) {
items = this.items.slice(0, this.maxSize);
}
if (this.getFulltextSearch()) {
var searchTokens = this.slugify(this.getFulltextSearch()).split('-');
var lastSearchToken = searchTokens.splice(-1, 1)[0];
items = items.filter(function(item) {
var isValidItem = true;
var itemTokens = this.slugify(item.label).split('-');
searchTokens.forEach(function(currentToken) {
if (itemTokens.indexOf(currentToken) === -1) {
isValidItem = false;
}
})
if (isValidItem && lastSearchToken) {
var ngrams = itemTokens.map(function(token) {return token.substring(0, lastSearchToken.length)});
isValidItem = ngrams.indexOf(lastSearchToken) !== -1;
}
return isValidItem;
}.bind(this))
}
this.result = items.length;
return items;
},
/**
* Does the search have a result
*/
hasSearchResult: function () {
return this.getDisplayedItems().length > 0
},
/**
* Search result message
*/
getSearchResultMessage : function() {
return this.noSearchResultLabel.replace("%s", '"' + this.getFulltextSearch() + '"')
},
getFulltextSearch : function() {
return this.fulltextSearch;
},
/**
* Callback for the "Show more" button
*/
onShowMore: function () {
if (this.options.hasMoreItems) {
this.loadAdditionalItems(this.onShowMore.bind(this));
} else {
this.expanded = true;
}
this.displayedItems = this.getDisplayedItems();
},
/**
* Index the text to be searched.
*/
slugify: function(text) {
return text.toString().toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^\w\u0400-\u052F\u2DE0-\u2DFF\uA640-\uA69F'\-]+/g, '')
.replace(/\-\-+/g, '-')
.replace(/^-+/, '')
},
/**
* Callback for the "Show less" button
*/
onShowLess: function () {
this.expanded = false;
this.displayedItems = this.getDisplayedItems();
},
/**
* Check if the filter can be expanded
*
* @returns {boolean}
*/
enableExpansion : function () {
return this.options.hasMoreItems || this.items.length > this.maxSize;
},
/**
* Displays the "Show More" link
*
* @returns {*|boolean}
*/
displayShowMore: function () {
return this.enableExpansion() && this.expanded === false && !this.getFulltextSearch();
},
/**
* Displays the "Show Less" link
*
* @returns {*|boolean}
*/
displayShowLess: function () {
return this.enableExpansion() && this.expanded === true && !this.getFulltextSearch();
},
/**
* Add an id to items.
*/
addItemId: function (item) {
item.id = Math.floor(Math.random() * 1000000) + "_option_";
item.displayProductCount = this.options.displayProductCount && (item.count >= 1);
return item;
},
};
};</script> <div class="box_typeFilter" x-data="{...initSmileAttibute_69301f58e6b01(), ...initCustomSmileAttribute_69301f58e6e00()}" x-init="initialize();"> <ol class="items grid grid-cols-2 gap-y-2 gap-x-3 xl:text-sm text-xxs"><template x-for="attribute in displayedItems" hidden><li class="item"><span x-show="attribute.count >= 1" @click.prevent="selectFilter(attribute.url, 'box_type', attribute.label)"><span class="form-input--checkbox"><label :for="attribute.id" class="inline-block cursor-pointer" style="gap: 0.2rem"><input type="checkbox" class="sr-only" :id="attribute.id" :checked="attribute.is_selected" onclick="this.parentNode.click();" /><span class="form-input--checkbox__controller shrink-0"></span> <span class="ml-2 font-medium" x-html="attribute.label"></span> <span class="count" x-text="'(' + attribute.count + ')'" x-show ="options.displayProductCount"></span></label></span></span> <div x-show="attribute.count < 1"><span x-html="attribute.label"></span> <span class="count" x-text="attribute.count"></span></div></li></template></ol> <div class="no-results-message" x-model="result" x-show="getFulltextSearch() && !hasSearchResult()"><p x-html="getSearchResultMessage()"></p></div><div class="actions" x-show="enableExpansion()"><div class="secondary text-right"><span class="action show-more underline text-secondary cursor-pointer" x-on:click="onShowMore()" x-show="displayShowMore()"><span x-text="showMoreLabel + '+'"></span></span> <span class="action show-less underline text-secondary cursor-pointer" x-on:click="onShowLess()" x-show="displayShowLess()"><span x-text="showLessLabel + '-'"></span></span></div></div></div><script>
'use strict';
function initCustomSmileAttribute_69301f58e6e00() {
return {
selectFilter(param, action, value) {
window.dataLayer?.push({
'event': 'filtres',
'action': action,
'label': value
});
let attributeCode = param.split('=')[0];
let attributeValue = param.split('=')[1];
let checkbox = this.$el.querySelector('input[type="checkbox"]');
checkbox.checked = !checkbox.checked;
window.dispatchEvent(
new CustomEvent('layered-navigation-filter-selected', {
'detail': {
'attributeCode': attributeCode,
'attributeValue': attributeValue
}
})
);
},
}
}</script></div></div> </div></div><div class="block-actions filter-actions border-t-[4px] border-pink-lighter px-5 pt-4 pb-5 mt-0 md:border-t-0"><button type="button" @click.prevent="applyFilters()" class="btn btn-primary text-tiny leading-normal btn-full-width py-2 mb-2 px-5 md:text-xs"><span>Appliquer</span></button> <a href="https://www.adopt.com/fr/parfum.html" class="btn btn-secondary text-tiny leading-normal btn-full-width py-2 px-5 md:text-xs"><span>Tout supprimer</span></a></div></div></div></div><script>
function initLayeredNavigation() {
return {
appliedFilters: [],
blockOpen: false,
baseUrl: new URL('https://www.adopt.com/fr'),
currentUrl: new URL(window.location.href),
init() {
this.currentUrl.searchParams.forEach((value, attributeCode) => {
attributeCode = attributeCode.split('[')[0];
this.appliedFilters.push({
attributeCode: attributeCode,
value: value
});
});
},
openFilters: function () {
this.blockOpen = !this.blockOpen;
if(this.blockOpen) {
document.body.classList.add('overflow-hidden');
} else {
document.body.classList.remove('overflow-hidden');
}
},
applyFilters() {
let url = new URL(this.currentUrl.origin + this.currentUrl.pathname);
let i = 0;
let lastAttribute = '';
let countArray = [];
this.appliedFilters.sort((a, b) => (a.attributeCode > b.attributeCode) ? 1 : -1);
this.appliedFilters.forEach((filter) => {
if (filter.attributeCode !== lastAttribute) {
lastAttribute = filter.attributeCode;
i = 0;
}
if (filter.attributeCode === lastAttribute) {
countArray[filter.attributeCode] = i;
i++;
}
});
lastAttribute = '';
this.appliedFilters.forEach((filter) => {
if (filter.attributeCode !== lastAttribute) {
lastAttribute = filter.attributeCode;
i = 0;
}
if (filter.attributeCode === lastAttribute) {
if (countArray[filter.attributeCode] > 0) {
url.searchParams.append(filter.attributeCode + '[' + i + ']', filter.value);
} else {
url.searchParams.append(filter.attributeCode, filter.value);
}
i++;
}
});
window.location.href = url.href;
},
updatePriceFilter(data) {
this.appliedFilters.forEach((filter, index) => {
if((filter.attributeCode === 'price')) {
this.appliedFilters.splice(index, 1);
}
});
if (!data.resetFilter) {
this.appliedFilters.push({
attributeCode: data.attributeCode,
value: data.attributeValue
});
}
},
updateFilters(data) {
let removed = false;
this.appliedFilters.forEach((filter, index) => {
if((filter.attributeCode === data.attributeCode) && (filter.value === data.attributeValue)) {
this.appliedFilters.splice(index, 1);
removed = true;
}
});
if (!removed) {
this.appliedFilters.push({
attributeCode: data.attributeCode,
value: data.attributeValue
});
}
},
updateRadioFilters(data) {
let removed = false;
this.appliedFilters.forEach((filter, index) => {
if((filter.attributeCode === data.attributeCode)) {
this.appliedFilters.splice(index, 1);
removed = true;
}
});
if (data.added) {
this.appliedFilters.push({
attributeCode: data.attributeCode,
value: data.attributeValue
});
}
}
}
}</script></aside><div class="column main"> <div id="nosto_cart_tagging" class="hidden" x-data="nostoCartTagging()" @private-content-loaded.window="initTags($event.detail.data['cart-tagging'])" @nosto-init.window.debounce.1500="sendTagging()"></div><script>
function nostoCartTagging() {
return {
taggingItems: null,
itemCount: 0,
restoreCartUrl: '',
hcid: '',
initTags (tagging) {
this.taggingItems = tagging.items;
this.restoreCartUrl = tagging.restore_cart_url;
this.itemCount = tagging.itemCount;
this.hcid = tagging.hcid;
},
sendTagging () {
if (typeof nostojs === 'function') {
nostojs(api => {
if((this.itemCount > 0) && !api.visit.isDoNotTrack()) {
let cartContent = {};
if (this.taggingItems) {
let items = [];
this.taggingItems.forEach(function (item) {
items.push({
index: item.index,
name: item.name,
price_currency_code: item.price_currency_code,
product_id: item.product_id,
quantity: item.quantity,
sku_id: item.sku_id ? item.sku_id : item.product_id,
total_count: item.total_count,
unit_price: item.unit_price
});
});
cartContent = {
items: items,
hcid: this.hcid,
restore_link: this.restoreCartUrl
}
}
api.defaultSession()
.setCart(cartContent)
.viewCart()
.update({ trackEvents: false });
} else {
api.defaultSession()
.setCart({});
}
});
}
}
}
}</script> <div id="nosto_customer_tagging" class="hidden" x-data="nostoCustomerTagging()" @private-content-loaded.window="initTags($event.detail.data['customer-tagging'])" @nosto-init.window.debounce.1500="sendTagging()"></div><script>
function nostoCustomerTagging() {
return {
taggingData: {},
initTags (tagging) {
this.taggingData = tagging;
},
sendTagging () {
if (typeof nostojs === 'function') {
nostojs(api => {
if((typeof this.taggingData.first_name !== 'undefined') && !api.visit.isDoNotTrack()) {
api.defaultSession()
.setCustomer({
first_name: this.taggingData.first_name,
last_name: this.taggingData.last_name,
email: this.taggingData.email,
hcid: this.taggingData.hcid,
customer_reference: this.taggingData.customer_reference,
newsletter: this.taggingData.marketing_permission
});
} else {
api.defaultSession()
.setCustomer({});
}
});
}
}
}
}</script> <script>
'use strict';
function initAwRbslider(config) {
return {
options: Object.assign({
autoplay: true,
pauseTimeBetweenTransitions: 3000,
slideTransitionSpeed: 500,
isStopAnimationMouseOnBanner: true,
animation: 'fade',
isRandomOrderImage: false,
sliderListSelector: '.uk-slideshow',
sliderItemSelector: '.aw-rbslider-item',
$refs: null
}, config),
slideshow: {options: {}},
init() {
this.options.$refs = this.$refs;
},
initSlider($refs) {
this.slideshow = window.awRbslider(this.$el, {
autoplay: this.options.autoplay,
autoplayInterval: this.options.pauseTimeBetweenTransitions,
duration: this.options.slideTransitionSpeed,
pauseOnHover: this.options.isStopAnimationMouseOnBanner,
animation: this.options.animation,
$refs: this.options.$refs,
});
this.loadSlides($refs);
this.slideshow.resize = () => this.resizeBanner(this.slideshow);
if (this.options.bannerSchedule.length > 0) {
if (!this.timeValidator([this.options.bannerSchedule[0]])) {
this.delayedUpdate(this.options.bannerSchedule[0]);
}
if (this.timeValidator(this.options.bannerSchedule)) {
this.sendRequest(this.options.bannerId);
}
}
},
loadSlider($refs) {
if (!window.awRbslider) {
let callbacks = [];
window.awRbslider = {'-isLoading': (callback) => callbacks.push(callback)};
}
if (window.awRbslider['-isLoading']) {
window.awRbslider['-isLoading'](() => this.loadSlider($refs))
}
if (!window.awRbslider['-isLoading']) {
this.initSlider($refs);
}
},
pauseOnEnter() {
if (this.slideshow.options.pauseOnHover) {
this.slideshow.hovering = true;
}
},
resumeOnLeave() {
this.slideshow.hovering = false;
},
/**
* Recalculate the width and height of the banner
*/
resizeBanner(slideshow) {
if (slideshow.slides.length) {
let firstChild = slideshow.slides[slideshow.current];
if (firstChild.querySelector('.rbslider__video')) {
const video = firstChild.querySelector('video');
if (slideshow.options.height === 'auto' && slideshow.slides.length) {
slideshow.slides[slideshow.current].style.height = '';
const height = video.getBoundingClientRect().height;
slideshow.container.style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)';
document.querySelector('.wrapperVideo').style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)';
}
} else {
if (slideshow.options.height === 'auto' && slideshow.slides.length) {
let maxHeight = 0;
slideshow.slides.forEach((slide) => {
slide.style.height = '';
const height = slide.getBoundingClientRect().height;
if (height > maxHeight) {
maxHeight = height;
}
});
slideshow.container.style.height = maxHeight + 'px';
slideshow.slides.forEach((slide) => {
slide.style.height = maxHeight + 'px';
});
}
}
}
},
/**
* Lazy load slides
*/
loadSlides($refs) {
this.slideshow.slides.forEach((slideElem, index) => {
if (index) {
const slideImg = slideElem.querySelector('img.aw-rbslider__img');
if (slideImg && slideImg.dataset.src) {
slideImg.addEventListener('load', () => {
slideImg.classList.add('is-loaded');
});
slideImg.src = slideImg.dataset.src;
slideImg.removeAttribute('data-src');
}
}
});
},
clickSliderEvent(url, label) {
window.dataLayer?.push({
'event': 'clicSliderHP',
'text': label
});
window.location.href = url
},
/**
* Compare current time with schedule
*/
timeValidator(schedule) {
const currentDateMinute = Math.floor(Date.now() / 1000 / 60);
let isValid = false;
schedule.forEach(item => {
if (currentDateMinute === Math.floor(new Date(item).getTime() / 1000 / 60)) {
isValid = true;
}
});
return isValid;
},
/**
* Send request for clean banner cache
*/
sendRequest(bannerId) {
const formKey = hyva.getFormKey();
fetch(this.options.cacheCleanUrl, {
method: 'post',
headers: {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
body: "form_key=" + formKey + "&bannerId=" + bannerId,
mode: "cors",
credentials: "include"
});
},
/**
* Schedule call to sendRequest for future schedule item
*/
delayedUpdate(futureTime) {
const currentDateMinute = Math.floor(Date.now() / 1000 / 60);
const interval = Math.floor(new Date(futureTime).getTime() / 1000 / 60) - currentDateMinute;
if (interval > 0) {
setTimeout(() => this.sendRequest(this.options.bannerId), interval);
}
},
/**
* @private
*/
_randomSort() {
const sliderListSelector = this.options.sliderListSelector,
sliderItemSelector = this.options.sliderItemSelector;
this.$el.querySelector(sliderListSelector)
.innerHTML = Array.from(this.$el.querySelectorAll(sliderListSelector + ' ' + sliderItemSelector))
.sort(() => Math.random() - 0.5)
.map(item => item.outerHTML)
.join('');
},
}
}</script> <section class="py-4 md:py-6"> <div class="pb-6" :class="{'hidden': !hasContent}" @open-mini-cart.window="$refs.container.style.zIndex = '20'" @close-mini-cart.window.debounce="$refs.container.style.zIndex = '29'" @open-menu-subnav.window="$refs.container.style.zIndex = '20'" @close-menu-subnav.window="$refs.container.style.zIndex = '29'" x-data="{ hasContent: true, isSticky: false, header: null, headerHeight: 0, scrollPos: 0, isMobile: window.innerWidth < 768, ticking: false, wasHidden: false, effectiveHeaderHeight: 0, init() { this.header = document.querySelector('.header-wrapper'); this.headerHeight = this.header ? this.header.offsetHeight : 0; this.effectiveHeaderHeight = this.headerHeight; this.$nextTick(() => { window.dispatchEvent( new CustomEvent('update-pager-items', { detail: { currentPage: 1, pageSize: 32, totalCount: 392 } }) ); }); }, scroll() { const isHeaderHidden = this.header && this.header.classList.contains('-translate-y-full'); if (!isHeaderHidden && this.wasHidden) { setTimeout(() => { this.wasHidden = false; this.scroll(); }, 300); return; } if (isHeaderHidden) { this.wasHidden = true; } if(this.$refs.filters.getBoundingClientRect().top <= (this.header ? this.header.offsetHeight : 0)) { if (!this.isSticky) { this.effectiveHeaderHeight = this.header ? this.header.offsetHeight : 0; } this.isSticky = true; } else { this.isSticky = false; } } }" x-init="init()" @scroll.window="scroll()" @header-height-changed.window="effectiveHeaderHeight = $event.detail.height;" @resize.window="isMobile = window.innerWidth < 768" x-ref="filters"><div :class="{'fixed left-0 right-0 py-3 border-t border-b border-anthracite-200 z-20': isSticky}" :style="isSticky ? 'top: ' + effectiveHeaderHeight + 'px; z-index: 29;' : ''" class="bg-white filter-sticky transition-[top] duration-200 ease-in-out" x-ref="container"><div class="container" x-init="hasContent = $el.innerHTML.length > 10;"> <script>
function initToolbar_69301f5914943() {
return {
options: {"productListToolbarForm":{"mode":"product_list_mode","direction":"product_list_dir","order":"product_list_order","limit":"product_list_limit","modeDefault":"grid","directionDefault":"asc","orderDefault":"position","limitDefault":32,"url":"https:\/\/www.adopt.com\/fr\/parfum.html","formKey":"D0IPC8luD2ezrchz","post":false,"page":"p"}}.productListToolbarForm || {},
getUrlParams: function () {
let decode = window.decodeURIComponent,
urlPaths = this.options.url.split('?'),
urlParams = urlPaths[1] ? urlPaths[1].split('&') : [],
params = {},
parameters, i;
for (i = 0; i < urlParams.length; i++) {
parameters = urlParams[i].split('=');
params[decode(parameters[0])] = parameters[1] !== undefined ?
decode(parameters[1].replace(/\+/g, '%20')) :
'';
}
return params;
},
getCurrentLimit: function () {
return this.getUrlParams()[this.options.limit] || this.options.limitDefault;
},
getCurrentPage: function () {
return this.getUrlParams()[this.options.page] || 1;
},
changeUrl(paramName, paramValue, defaultValue) {
let urlPaths = this.options.url.split('?'),
baseUrl = urlPaths[0],
paramData = this.getUrlParams(),
currentPage = this.getCurrentPage(),
newPage;
/**
* calculates the page on which the first item of the current page will
* be with the new limit and sets that number as the new page
*/
if (currentPage > 1 && paramName === this.options.limit) {
newPage = Math.floor(this.getCurrentLimit() * (currentPage - 1) / paramValue) + 1;
if (newPage > 1) {
paramData[this.options.page] = newPage;
} else {
delete paramData[this.options.page];
}
}
paramData[paramName] = paramValue;
if ((paramName === 'product_list_order')) {
window.dataLayer?.push({
'event': 'trierPar',
'text': paramValue
});
}
if (this.options.post) {
hyva.postForm({action: baseUrl, data: paramData});
} else {
if (paramValue === defaultValue.toString()) {
delete paramData[paramName];
}
paramData = Object.keys(paramData).length === 0
? ''
: '?' + (new URLSearchParams(paramData));
location.href = baseUrl + paramData + '#toolbar-amount'
}
}
}
}</script> <div x-data="initToolbar_69301f5914943()" class="toolbar toolbar-products flex gap-2 md:gap-7 items-center"><div class="flex-1 md:flex-initial"> <div class="flex gap-2 md:gap-4" x-data="initStateLayeredNavigation()"><button class="flex items-center gap-2.5 px-4 py-3.5 border border-lavender-400 rounded-full font-medium text-sm md:text-base leading-none md:leading-none" @click="openFilters()"><span><svg xmlns="http://www.w3.org/2000/svg" data-icon="filter" width="24" height="24" viewbox="0 0 17 17" fill="none" class="w-3.75" role="img">
<g>
<path d="M15.999 3.90015H11.1324" stroke="currentColor" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M15.999 8.5H6.13236" stroke="currentColor" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M15.999 13.0999H0.999023" stroke="currentColor" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<title/></svg>
</span> Filtrer </button> </div><script>
function initStateLayeredNavigation() {
return {
openFilters: function () {
document.getElementById('triggerFilter').click()
}
}
}</script></div><div class="text-right md:text-center flex-1"> <p class="toolbar-amount text-xs leading-5 font-medium text-center" id="toolbar-amount"></p></div> <div class="toolbar-sorter sorter flex items-center relative" x-data="{ currentOrder: 'position', isDefaultOrder: true, hasUserSelection: false, defaultLabel: 'Trier\u0020par', orders: {'position': 'Pertinence','price': 'Prix\u0020croissant','price_desc': 'Prix\u0020d\u00E9croissant','ratings_summary': 'Par\u0020meilleures\u0020notes','publication_at': 'Par\u0020nouveaut\u00E9s','bestseller_order': 'Par\u0020meilleures\u0020ventes'}, orderKeys: ['position','price','price_desc','ratings_summary','publication_at','bestseller_order'], init() { if (this.isDefaultOrder && !this.hasUserSelection) { this.$refs.select.value = ''; } }, handleChange(event) { const value = event.target.value; if (value === '') return; this.currentOrder = value; this.hasUserSelection = true; this.$refs['sorter-label'].innerHTML = this.getDisplayLabel(); changeUrl( 'product_list_order', value, options.orderDefault ); }, getDisplayLabel() { if (this.$refs.select && this.$refs.select.value === '') { return this.defaultLabel; } return this.orders[this.currentOrder] || this.defaultLabel; } }"><div class="relative group"><div class="form-select pr-8 sorter-options text-anthracite border-lavender-400 py-2.5 text-sm md:text-base min-w-[120px] md:pr-10 md:pl-5 md:max-w-full flex items-center justify-between pointer-events-none bg-white group-hover:border-candy"><span x-ref="sorter-label" x-text="getDisplayLabel()">Trier par</span></div><select data-role="sorter" x-ref="select" class="absolute text-anthracite inset-0 w-full h-full opacity-0 cursor-pointer focus:ring-2 focus:ring-candy" aria-label="Trier par" @change="handleChange($event)"> <option value="price" class="text-anthracite" >Prix croissant</option> <option value="price_desc" class="text-anthracite" >Prix décroissant</option> <option value="ratings_summary" class="text-anthracite" >Par meilleures notes</option> <option value="publication_at" class="text-anthracite" >Par nouveautés</option> <option value="bestseller_order" class="text-anthracite" >Par meilleures ventes</option></select></div><span class="sr-only sorter-label">Trier par</span></div> </div></div></div></div><div class="container"></div> <div class="product-list-container products gap-y-6 wrapper mode-grid products-grid"><div class="mx-auto grid gap-x-1 gap-y-6 md:gap-x-6 grid-cols-2 sm:grid-cols-3 xl:grid-cols-4"> <a @click="clickProductLink('https://www.adopt.com/fr/calendrier-chapitre-i-calendrier-de-l-avent-3701429845315-fr.html')" href="https://www.adopt.com/fr/calendrier-chapitre-i-calendrier-de-l-avent-3701429845315-fr.html" class="product-item category-add-to-cart-form-product-_69301364f1620 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301364f1620()" x-defer="intersect" x-init="load()" @product-addtocart-success-39846.window="openAddCartPanel()" @update-prices-39846="updatePrice($event.detail, 39846);" @update-short-description-listing-39846="updateShortDescription($event.detail);" @update-configurable-url-39846="updateUrl($event.detail);" @configurable-selection-changed-39846="updateFlagsData($event.detail);" @update-gallery-39846="updateGallery($event.detail);" @update-gallery-hover-39846="updateGalleryHover($event.detail)" @stock-alert-modal-open-39846="showAlertButton($event)" @stock-alert-modal-close-39846="hideAlertButton($event)" data-sku="3701429845315"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNtLnJvdWdlYXVkJTQwb3JhbmdlLmZyJmZpcnN0bmFtZT1NYXJ0aW5lJnN1cm5hbWU9Uk9VR0VBVUQ~/product/39846/" name="category-add-to-cart-form-product-_69301364f1620" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301364f1620"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="39846" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="is_limited_quantity bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Quantité Limitée</div> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">85,80 €</span></div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 39846, {"product_ean":"3701429845315","product_name":"la-grande-roue-des-merveilles","product_id":"39846","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":74.95,"product_unitprice_tf":"62.46","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="39846"><template x-if="!isInWishlist(39846)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(39846)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_calendar_starter_3701429845315_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_calendar_starter_3701429845315_1.png" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="La Grande Roue des Merveilles" title="La Grande Roue des Merveilles"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_calendar_starter_3701429845315_2.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_calendar_starter_3701429845315_2.png" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_CALENDAR_STARTER_3701429845315_2.png" title="STILL_CALENDAR_STARTER_3701429845315_2.png" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">La Grande Roue des Merveilles <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Calendrier de l'avent</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Calendrier de l'avent</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39846' }); window.location.href = 'https://www.adopt.com/fr/calendrier-chapitre-i-calendrier-de-l-avent-3701429845315-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (936)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39846' }); window.location.href = 'https://www.adopt.com/fr/calendrier-chapitre-i-calendrier-de-l-avent-3701429845315-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (936)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">160,75 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39846" data-price-box="product-id-39846"> <span class="price-container price-final_price tax weee"> <span id="product-price-39846" data-price-amount="74.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">74,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">160,75 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39846" data-price-box="product-id-39846"> <span class="price-container price-final_price tax weee"> <span id="product-price-39846" data-price-amount="74.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">74,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301364f1620() {
return {
currentProductData: {
'sku': '3701429845315',
'name': 'La\u0020Grande\u0020Roue\u0020des\u0020Merveilles',
'short_description': "Calendrier\u0020de\u0020l\u0027avent",
'id': '39846',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_calendar_starter_3701429845315_2.png?twic=v1',
'old_price': '74.950000',
'final_price': '74.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"is_limited_quantity":"Quantit\u00e9 Limit\u00e9e","bundle_real_value":"Economisez <span class=\"price\">85,80\u00a0\u20ac<\/span>"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429845315',
'product_name': 'la-grande-roue-des-merveilles',
'product_id': '39846',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '74.95',
'product_unitprice_tf': '62.46',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429845315',
'product_name': 'la-grande-roue-des-merveilles',
'product_quantity': '1',
'product_id': '39846',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '74.95',
'product_unitprice_tf': '62.46',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/calendrier-chapitre-ii-calendrier-de-l-avent-3701429849603-fr.html')" href="https://www.adopt.com/fr/calendrier-chapitre-ii-calendrier-de-l-avent-3701429849603-fr.html" class="product-item category-add-to-cart-form-product-_6930136527156 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_6930136527156()" x-defer="intersect" x-init="load()" @product-addtocart-success-40221.window="openAddCartPanel()" @update-prices-40221="updatePrice($event.detail, 40221);" @update-short-description-listing-40221="updateShortDescription($event.detail);" @update-configurable-url-40221="updateUrl($event.detail);" @configurable-selection-changed-40221="updateFlagsData($event.detail);" @update-gallery-40221="updateGallery($event.detail);" @update-gallery-hover-40221="updateGalleryHover($event.detail)" @stock-alert-modal-open-40221="showAlertButton($event)" @stock-alert-modal-close-40221="hideAlertButton($event)" data-sku="3701429849603"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNtLnJvdWdlYXVkJTQwb3JhbmdlLmZyJmZpcnN0bmFtZT1NYXJ0aW5lJnN1cm5hbWU9Uk9VR0VBVUQ~/product/40221/" name="category-add-to-cart-form-product-_6930136527156" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_6930136527156"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40221" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="is_limited_quantity bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Quantité Limitée</div> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">119,80 €</span></div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40221, {"product_ean":"3701429849603","product_name":"le-carrousel-enchant\u00e9","product_id":"40221","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":94.95,"product_unitprice_tf":"79.13","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40221"><template x-if="!isInWishlist(40221)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40221)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_calendar_privilege_3701429849603_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_calendar_privilege_3701429849603_1.png" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Le carrousel enchanté" title="Le carrousel enchanté"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_calendar_privilege_3701429849603_3.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_calendar_privilege_3701429849603_3.png" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_CALENDAR_PRIVILEGE_3701429849603_3.png" title="STILL_CALENDAR_PRIVILEGE_3701429849603_3.png" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Le carrousel enchanté <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Calendrier de l'avent</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Calendrier de l'avent</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40221' }); window.location.href = 'https://www.adopt.com/fr/calendrier-chapitre-ii-calendrier-de-l-avent-3701429849603-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (327)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40221' }); window.location.href = 'https://www.adopt.com/fr/calendrier-chapitre-ii-calendrier-de-l-avent-3701429849603-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (327)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">214,75 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40221" data-price-box="product-id-40221"> <span class="price-container price-final_price tax weee"> <span id="product-price-40221" data-price-amount="94.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">94,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">214,75 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40221" data-price-box="product-id-40221"> <span class="price-container price-final_price tax weee"> <span id="product-price-40221" data-price-amount="94.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">94,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_6930136527156() {
return {
currentProductData: {
'sku': '3701429849603',
'name': 'Le\u0020carrousel\u0020enchant\u00E9',
'short_description': "Calendrier\u0020de\u0020l\u0027avent",
'id': '40221',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_calendar_privilege_3701429849603_3.png?twic=v1',
'old_price': '94.950000',
'final_price': '94.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"is_limited_quantity":"Quantit\u00e9 Limit\u00e9e","bundle_real_value":"Economisez <span class=\"price\">119,80\u00a0\u20ac<\/span>"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429849603',
'product_name': 'le-carrousel-enchanté',
'product_id': '40221',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '94.95',
'product_unitprice_tf': '79.13',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429849603',
'product_name': 'le-carrousel-enchanté',
'product_quantity': '1',
'product_id': '40221',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '94.95',
'product_unitprice_tf': '79.13',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/calendrier-de-l-avent-le-collector-calendrier-de-l-avent-3701429845759-fr.html')" href="https://www.adopt.com/fr/calendrier-de-l-avent-le-collector-calendrier-de-l-avent-3701429845759-fr.html" class="product-item category-add-to-cart-form-product-_69301365467f3 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301365467f3()" x-defer="intersect" x-init="load()" @product-addtocart-success-39848.window="openAddCartPanel()" @update-prices-39848="updatePrice($event.detail, 39848);" @update-short-description-listing-39848="updateShortDescription($event.detail);" @update-configurable-url-39848="updateUrl($event.detail);" @configurable-selection-changed-39848="updateFlagsData($event.detail);" @update-gallery-39848="updateGallery($event.detail);" @update-gallery-hover-39848="updateGalleryHover($event.detail)" @stock-alert-modal-open-39848="showAlertButton($event)" @stock-alert-modal-close-39848="hideAlertButton($event)" data-sku="3701429845759"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNtLnJvdWdlYXVkJTQwb3JhbmdlLmZyJmZpcnN0bmFtZT1NYXJ0aW5lJnN1cm5hbWU9Uk9VR0VBVUQ~/product/39848/" name="category-add-to-cart-form-product-_69301365467f3" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301365467f3"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="39848" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="is_limited_quantity bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Quantité Limitée</div> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">90,40 €</span></div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 39848, {"product_ean":"3701429845759","product_name":"coffret-collector-homme","product_id":"39848","product_family":"parfum","product_rayon":"parfum-homme","product_size":"","product_color":"","product_unitprice_ati":64.95,"product_unitprice_tf":"54.13","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="39848"><template x-if="!isInWishlist(39848)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(39848)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_calendrierdelavent_homme_3701429845759_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_calendrierdelavent_homme_3701429845759_1.png" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Coffret Collector Homme" title="Coffret Collector Homme"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_calendrierdelavent_homme_3701429845759_2.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_calendrierdelavent_homme_3701429845759_2.png" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_CALENDRIERDELAVENT_HOMME_3701429845759_2.png" title="STILL_MULTI_CALENDRIERDELAVENT_HOMME_3701429845759_2.png" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Coffret Collector Homme <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Calendrier de l'avent</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Calendrier de l'avent</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39848' }); window.location.href = 'https://www.adopt.com/fr/calendrier-de-l-avent-le-collector-calendrier-de-l-avent-3701429845759-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (361)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39848' }); window.location.href = 'https://www.adopt.com/fr/calendrier-de-l-avent-le-collector-calendrier-de-l-avent-3701429845759-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (361)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">155,35 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39848" data-price-box="product-id-39848"> <span class="price-container price-final_price tax weee"> <span id="product-price-39848" data-price-amount="64.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">64,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">155,35 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39848" data-price-box="product-id-39848"> <span class="price-container price-final_price tax weee"> <span id="product-price-39848" data-price-amount="64.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">64,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301365467f3() {
return {
currentProductData: {
'sku': '3701429845759',
'name': 'Coffret\u0020Collector\u0020Homme',
'short_description': "Calendrier\u0020de\u0020l\u0027avent",
'id': '39848',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_calendrierdelavent_homme_3701429845759_2.png?twic=v1',
'old_price': '64.950000',
'final_price': '64.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"is_limited_quantity":"Quantit\u00e9 Limit\u00e9e","bundle_real_value":"Economisez <span class=\"price\">90,40\u00a0\u20ac<\/span>"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429845759',
'product_name': 'coffret-collector-homme',
'product_id': '39848',
'product_family': 'parfum',
'product_rayon': 'parfum-homme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '64.95',
'product_unitprice_tf': '54.13',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429845759',
'product_name': 'coffret-collector-homme',
'product_quantity': '1',
'product_id': '39848',
'product_family': 'parfum',
'product_rayon': 'parfum-homme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '64.95',
'product_unitprice_tf': '54.13',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/calendrier-de-l-apres-calendrier-de-l-apres-2-x-eaux-de-parfum-30-ml-2-x-eaux-de-parfum-10-ml-boule-de-bain-32-g-creme-main-30ml-3701429847142-fr.html')" href="https://www.adopt.com/fr/calendrier-de-l-apres-calendrier-de-l-apres-2-x-eaux-de-parfum-30-ml-2-x-eaux-de-parfum-10-ml-boule-de-bain-32-g-creme-main-30ml-3701429847142-fr.html" class="product-item category-add-to-cart-form-product-_6930136565673 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_6930136565673()" x-defer="intersect" x-init="load()" @product-addtocart-success-39849.window="openAddCartPanel()" @update-prices-39849="updatePrice($event.detail, 39849);" @update-short-description-listing-39849="updateShortDescription($event.detail);" @update-configurable-url-39849="updateUrl($event.detail);" @configurable-selection-changed-39849="updateFlagsData($event.detail);" @update-gallery-39849="updateGallery($event.detail);" @update-gallery-hover-39849="updateGalleryHover($event.detail)" @stock-alert-modal-open-39849="showAlertButton($event)" @stock-alert-modal-close-39849="hideAlertButton($event)" data-sku="3701429847142"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNtLnJvdWdlYXVkJTQwb3JhbmdlLmZyJmZpcnN0bmFtZT1NYXJ0aW5lJnN1cm5hbWU9Uk9VR0VBVUQ~/product/39849/" name="category-add-to-cart-form-product-_6930136565673" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_6930136565673"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="39849" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">21,75 €</span></div> <div class="is_vegan bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Vegan</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 39849, {"product_ean":"3701429847142","product_name":"calendrier-de-l-apr\u00e8s","product_id":"39849","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":32.95,"product_unitprice_tf":"27.46","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="39849"><template x-if="!isInWishlist(39849)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(39849)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_calendrierdelapres_3701429847142_2_1_.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_calendrierdelapres_3701429847142_2_1_.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Calendrier de l'après" title="Calendrier de l'après"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_calendrierdelapres_3701429847142_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_calendrierdelapres_3701429847142_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="Calendrier de l'après" title="Calendrier de l'après" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Calendrier de l'après <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Calendrier de l'après : 2 x eaux de parfum 30 ml + 2 x eaux de parfum 10 ml + boule de bain 32 g + crème main 30ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Calendrier de l'après : 2 x eaux de parfum 30 ml +</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39849' }); window.location.href = 'https://www.adopt.com/fr/calendrier-de-l-apres-calendrier-de-l-apres-2-x-eaux-de-parfum-30-ml-2-x-eaux-de-parfum-10-ml-boule-de-bain-32-g-creme-main-30ml-3701429847142-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (22)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39849' }); window.location.href = 'https://www.adopt.com/fr/calendrier-de-l-apres-calendrier-de-l-apres-2-x-eaux-de-parfum-30-ml-2-x-eaux-de-parfum-10-ml-boule-de-bain-32-g-creme-main-30ml-3701429847142-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (22)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">54,70 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39849" data-price-box="product-id-39849"> <span class="price-container price-final_price tax weee"> <span id="product-price-39849" data-price-amount="32.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">32,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">54,70 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39849" data-price-box="product-id-39849"> <span class="price-container price-final_price tax weee"> <span id="product-price-39849" data-price-amount="32.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">32,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_6930136565673() {
return {
currentProductData: {
'sku': '3701429847142',
'name': 'Calendrier\u0020de\u0020l\u0027apr\u00E8s',
'short_description': "Calendrier\u0020de\u0020l\u0027apr\u00E8s\u0020\u003A\u00202\u0020x\u0020eaux\u0020de\u0020parfum\u002030\u0020ml\u0020\u002B\u00202\u0020x\u0020eaux\u0020de\u0020parfum\u002010\u0020ml\u0020\u002B\u0020boule\u0020de\u0020bain\u002032\u0020g\u0020\u002B\u0020cr\u00E8me\u0020main\u002030ml",
'id': '39849',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_calendrierdelapres_3701429847142_1.jpg?twic=v1',
'old_price': '32.950000',
'final_price': '32.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">21,75\u00a0\u20ac<\/span>","is_vegan":"Vegan"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429847142',
'product_name': 'calendrier-de-l-après',
'product_id': '39849',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '32.95',
'product_unitprice_tf': '27.46',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429847142',
'product_name': 'calendrier-de-l-après',
'product_quantity': '1',
'product_id': '39849',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '32.95',
'product_unitprice_tf': '27.46',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/carrousel-caractere-caroussel-5-x-eaux-de-parfums-30-ml-3701429847975-fr.html')" href="https://www.adopt.com/fr/carrousel-caractere-caroussel-5-x-eaux-de-parfums-30-ml-3701429847975-fr.html" class="product-item category-add-to-cart-form-product-_69301f4d90de0 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301f4d90de0()" x-defer="intersect" x-init="load()" @product-addtocart-success-40241.window="openAddCartPanel()" @update-prices-40241="updatePrice($event.detail, 40241);" @update-short-description-listing-40241="updateShortDescription($event.detail);" @update-configurable-url-40241="updateUrl($event.detail);" @configurable-selection-changed-40241="updateFlagsData($event.detail);" @update-gallery-40241="updateGallery($event.detail);" @update-gallery-hover-40241="updateGalleryHover($event.detail)" @stock-alert-modal-open-40241="showAlertButton($event)" @stock-alert-modal-close-40241="hideAlertButton($event)" data-sku="3701429847975"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS9wYXJmdW0tZmVtbWUvY29mZnJldC1wYXJmdW0tZmVtbWUuaHRtbA~~/product/40241/" name="category-add-to-cart-form-product-_69301f4d90de0" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301f4d90de0"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40241" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">18,75 €</span></div> <div class="publication_at bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Nouveau</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40241, {"product_ean":"3701429847975","product_name":"carrousel-caract\u00e8re","product_id":"40241","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":53.95,"product_unitprice_tf":"44.96","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40241"><template x-if="!isInWishlist(40241)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40241)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_manege_caractere_3701429847975_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_manege_caractere_3701429847975_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Carrousel Caractère" title="Carrousel Caractère"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_manege_caractere_3701429847975_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_manege_caractere_3701429847975_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_MANEGE_CARACTERE_3701429847975_1.jpg" title="STILL_MULTI_MANEGE_CARACTERE_3701429847975_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Carrousel Caractère <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Carroussel 5 x eaux de parfums 30 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Carroussel 5 x eaux de parfums 30 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40241' }); window.location.href = 'https://www.adopt.com/fr/carrousel-caractere-caroussel-5-x-eaux-de-parfums-30-ml-3701429847975-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (7)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40241' }); window.location.href = 'https://www.adopt.com/fr/carrousel-caractere-caroussel-5-x-eaux-de-parfums-30-ml-3701429847975-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (7)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">72,70 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40241" data-price-box="product-id-40241"> <span class="price-container price-final_price tax weee"> <span id="product-price-40241" data-price-amount="53.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">53,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">72,70 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40241" data-price-box="product-id-40241"> <span class="price-container price-final_price tax weee"> <span id="product-price-40241" data-price-amount="53.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">53,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301f4d90de0() {
return {
currentProductData: {
'sku': '3701429847975',
'name': 'Carrousel\u0020Caract\u00E8re',
'short_description': "Carroussel\u00205\u0020x\u0020eaux\u0020de\u0020parfums\u002030\u0020ml",
'id': '40241',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_manege_caractere_3701429847975_1.jpg?twic=v1',
'old_price': '53.950000',
'final_price': '53.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">18,75\u00a0\u20ac<\/span>","publication_at":"Nouveau"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429847975',
'product_name': 'carrousel-caractère',
'product_id': '40241',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '53.95',
'product_unitprice_tf': '44.96',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429847975',
'product_name': 'carrousel-caractère',
'product_quantity': '1',
'product_id': '40241',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '53.95',
'product_unitprice_tf': '44.96',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/le-carrousel-a-parfums-caroussel-15-x-eaux-de-parfums-30-ml-3701429847951-fr.html')" href="https://www.adopt.com/fr/le-carrousel-a-parfums-caroussel-15-x-eaux-de-parfums-30-ml-3701429847951-fr.html" class="product-item category-add-to-cart-form-product-_693018f8189c4 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_693018f8189c4()" x-defer="intersect" x-init="load()" @product-addtocart-success-40240.window="openAddCartPanel()" @update-prices-40240="updatePrice($event.detail, 40240);" @update-short-description-listing-40240="updateShortDescription($event.detail);" @update-configurable-url-40240="updateUrl($event.detail);" @configurable-selection-changed-40240="updateFlagsData($event.detail);" @update-gallery-40240="updateGallery($event.detail);" @update-gallery-hover-40240="updateGalleryHover($event.detail)" @stock-alert-modal-open-40240="showAlertButton($event)" @stock-alert-modal-close-40240="hideAlertButton($event)" data-sku="3701429847951"> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">79,25 €</span></div> <div class="publication_at bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Nouveau</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40240, {"product_ean":"3701429847951","product_name":"le-carrousel-\u00e0-parfums","product_id":"40240","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":119.95,"product_unitprice_tf":"99.96","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40240"><template x-if="!isInWishlist(40240)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40240)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_manege_15x30ml_3701429847951_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_manege_15x30ml_3701429847951_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Le carrousel à parfums" title="Le carrousel à parfums"> <div class="out-of-stock absolute w-full h-full z-10 flex justify-center items-center bg-white bg-opacity-80 px-3.5 md:px-0"><div class="w-fit py-2.5 px-6 bg-white text-xs md:text-base font-medium leading-tightened md:leading-tightened text-center">Victime de son succès</div></div> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_manege_15x30ml_3701429847951_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_manege_15x30ml_3701429847951_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_MANEGE_15X30ML_3701429847951_1.jpg" title="STILL_MULTI_MANEGE_15X30ML_3701429847951_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Le carrousel à parfums <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Carrousel 15 x eaux de parfums 30 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Carrousel 15 x eaux de parfums 30 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40240' }); window.location.href = 'https://www.adopt.com/fr/le-carrousel-a-parfums-caroussel-15-x-eaux-de-parfums-30-ml-3701429847951-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (6)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40240' }); window.location.href = 'https://www.adopt.com/fr/le-carrousel-a-parfums-caroussel-15-x-eaux-de-parfums-30-ml-3701429847951-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (6)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center alert"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">199,20 €</span></div></div> <div class="product-item-alertstock w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group"><span class="leading-none text-xs">M'alerter</span> <div class="block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40240" data-price-box="product-id-40240"> <span class="price-container price-final_price tax weee"> <span id="product-price-40240" data-price-amount="119.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">119,95 €</span></span> </span> </div></div></div> </div></div></div> <script>
function initItemProduct_693018f8189c4() {
return {
currentProductData: {
'sku': '3701429847951',
'name': 'Le\u0020carrousel\u0020\u00E0\u0020parfums',
'short_description': "Carrousel\u002015\u0020x\u0020eaux\u0020de\u0020parfums\u002030\u0020ml",
'id': '40240',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_manege_15x30ml_3701429847951_1.jpg?twic=v1',
'old_price': '119.950000',
'final_price': '119.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">79,25\u00a0\u20ac<\/span>","publication_at":"Nouveau"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429847951',
'product_name': 'le-carrousel-à-parfums',
'product_id': '40240',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '119.95',
'product_unitprice_tf': '99.96',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429847951',
'product_name': 'le-carrousel-à-parfums',
'product_quantity': '1',
'product_id': '40240',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '119.95',
'product_unitprice_tf': '99.96',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/joalia-eau-de-parfum-pailletee-8883701429850777-fr.html')" href="https://www.adopt.com/fr/joalia-eau-de-parfum-pailletee-8883701429850777-fr.html" class="product-item category-add-to-cart-form-product-_69301365d6eb0 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301365d6eb0()" x-defer="intersect" x-init="load()" @product-addtocart-success-40714.window="openAddCartPanel()" @update-prices-40714="updatePrice($event.detail, 40714);" @update-short-description-listing-40714="updateShortDescription($event.detail);" @update-configurable-url-40714="updateUrl($event.detail);" @configurable-selection-changed-40714="updateFlagsData($event.detail);" @update-gallery-40714="updateGallery($event.detail);" @update-gallery-hover-40714="updateGalleryHover($event.detail)" @stock-alert-modal-open-40714="showAlertButton($event)" @stock-alert-modal-close-40714="hideAlertButton($event)" data-sku="8883701429850777"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNtLnJvdWdlYXVkJTQwb3JhbmdlLmZyJmZpcnN0bmFtZT1NYXJ0aW5lJnN1cm5hbWU9Uk9VR0VBVUQ~/product/40714/" name="category-add-to-cart-form-product-_69301365d6eb0" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301365d6eb0"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40714" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 p-2 z-10 flex flex-col gap-1.25"><template x-if="flagsData"><template x-for="flag in Object.keys(flagsData)"><div x-html="flagsData[flag].icon + ' ' + flagsData[flag].label" :class="{ [flag]: true, ' bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest': true, ' text-xs-tiny md:text-smaller text-pink px-2 py-1.5 leading-none': flag === 'percent_promo', ' text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none': flag !== 'percent_promo' }"></div></template></template></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40714, {"product_ean":"8883701429850777","product_name":"joalia","product_id":"40714","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":"9.96","product_discount_ati":-11.95,"product_discount_tf":-11.95} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40714"><template x-if="!isInWishlist(40714)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40714)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_perf_joalia_30ml_3701429850777_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_perf_joalia_30ml_3701429850777_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Joalia" title="Joalia"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_perf_joalia_30ml_3701429850777_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_perf_joalia_30ml_3701429850777_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="Joalia" title="Joalia" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Joalia <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Eau de parfum pailletée 30 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Eau de parfum pailletée 30 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40714' }); window.location.href = 'https://www.adopt.com/fr/joalia-eau-de-parfum-pailletee-8883701429850777-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (1756)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Poire confite, Nectar de fleurs blanches, Bois de santal, Vanille</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40714' }); window.location.href = 'https://www.adopt.com/fr/joalia-eau-de-parfum-pailletee-8883701429850777-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (1756)</span> </div></div> <div class="product-item-details pt-2.5"> <div x-data='{ ...initConfigurableOptions(40714, {"attributes":{"153":{"id":"153","code":"contenance","label":"Contenance","options":[{"id":"350","label":"30 ml","products":["40336"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["40337"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"40336":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"40337":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":"\u202f","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"40714","chooseText":"Choisissez une option...","images":[],"index":{"40336":{"153":"350"},"40337":{"153":"351"}},"salable":{"153":{"350":["40336"],"351":["40337"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"base","sku":{"40336":"3701429850777","40337":"3701429850784"},"short_description":{"40336":"Eau de parfum paillet\u00e9e 30 ml","40337":"Eau de parfum paillet\u00e9e 100 ml"},"flags_data":{"40336":{"paillete":{"label":"Paillet\u00e9","icon":""},"publication_at":{"label":"Nouveau","icon":""}},"40337":{"paillete":{"label":"Paillet\u00e9","icon":""},"publication_at":{"label":"Nouveau","icon":""}}}}), ...initSwatchOptions({"153":{"350":{"type":"0","value":null,"label":"30 ml"},"351":{"type":"0","value":null,"label":"100 ml"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}}), ...{ optionConfig: {"attributes":{"153":{"id":"153","code":"contenance","label":"Contenance","options":[{"id":"350","label":"30 ml","products":["40336"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["40337"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"40336":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"40337":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":"\u202f","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"40714","chooseText":"Choisissez une option...","images":[],"index":{"40336":{"153":"350"},"40337":{"153":"351"}},"salable":{"153":{"350":["40336"],"351":["40337"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"base","sku":{"40336":"3701429850777","40337":"3701429850784"},"short_description":{"40336":"Eau de parfum paillet\u00e9e 30 ml","40337":"Eau de parfum paillet\u00e9e 100 ml"},"flags_data":{"40336":{"paillete":{"label":"Paillet\u00e9","icon":""},"publication_at":{"label":"Nouveau","icon":""}},"40337":{"paillete":{"label":"Paillet\u00e9","icon":""},"publication_at":{"label":"Nouveau","icon":""}}}}, mediaCallback: "https\u003A\u002F\u002Fwww.adopt.com\u002Ffr\u002Fswatches\u002Fajax\u002Fmedia", changeDisabledOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0, productId) { if (value === "") { this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { if (opt !== optionId) { newSelection[opt] = val; } return newSelection; }, []); } else { this.selectedValues[optionId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-open-" + parentId, { detail: {productId: this.productIndex }})); }, changeOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) { this.selectedValues[optionId] = value; this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } updateUrl && attributeCode && optionLabel && this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "configurable-selection-changed-" + this.productId, { detail: { productId: this.productIndex, flagsData: this.optionConfig.flags_data ? this.optionConfig.flags_data[this.productIndex] : false, } } ) ); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-close-" + parentId, { productId: this.productIndex })); }, updateUrl(attributeCode, optionLabel) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-configurable-url-" + this.productId, { detail: { attribute_code: attributeCode, option_label: optionLabel.trim().replace(/ /g,"+") } } ) ); }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updatePrice(priceData) { const finalPriceElement = this.$el.querySelectorAll(".product-item-price"); finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(priceData.finalPrice.amount); }) }, updateShortDescription() { let shortDescValue = this.optionConfig.short_description ? this.optionConfig.short_description[this.productIndex] : false; if (shortDescValue) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-short-description-listing-" + this.productId, { detail: Object.assign( shortDescValue ) } ) ) } }, updateGallery() { if (!this.productIndex) { return; } fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, { method: "GET", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }).then(response => { return response.json() }).then(data => { if (data.errors) { console.warn(data.errors); } else { const image = data && data.medium; if (image) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-40714", {detail: image} ) ); } const hoverImage = data && data.hover_image; if (hoverImage) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-hover-40714", {detail: hoverImage} ) ); } } }).catch(error => { console.warn(error) }); }, preselectDefaultContenance(orderedOptionsIds, skipUpdateGallery = false) { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); let contenanceParam = urlQueryParams.get("contenance"); if (contenanceParam !== null) { return; } Object.values(this.optionConfig.attributes).map(attribute => { let found = false; let hasSpecialPriceFound = false; let optionId; let optionLabel; let isOptionFoundDisabled = false; Object.values(orderedOptionsIds).map(orderedOptionId => { Object.values(attribute.options).map(option => { if ((option.disabled === true) || (typeof this.optionConfig.optionPrices[option.products[0]] === "undefined")) { return; } let hasSpecialPrice = this.optionConfig.optionPrices[option.products[0]]?.finalPrice.amount !== this.optionConfig.optionPrices[option.products[0]]?.oldPrice.amount; if (!hasSpecialPriceFound && hasSpecialPrice && option.label === orderedOptionId) { found = true; hasSpecialPriceFound = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } if ((found === false) && option.label === orderedOptionId) { found = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); }); if (attribute.code === "contenance") { if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } else { this.changeOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } } else { this.changeOption(attribute.id, optionId); } }); }, preselectQuerystringItems() { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); Object.values(this.optionConfig.attributes).map(attribute => { let isOptionFoundDisabled = false; if (urlQueryParams.get(attribute.code) !== null) { let optionId = urlQueryParams.get(attribute.code); let found = false; Object.values(attribute.options).map(option => { if (found === false && option.label === optionId) { optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, false, attribute.code, optionLabel, true, 40714, this.productIndex); } else { this.changeOption(attribute.id, optionId); } } }); }, mouseDown: false, startX: 0, maxScroll: 0, scrollLeft: null, slider: null, show: false, scrollEvents: { ["@mousedown"](e) { this.slider = e.target.closest(".snap"); if (!this.slider) { return; } this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth; this.startX = e.pageX - this.slider.offsetLeft; this.scrollLeft = this.slider.scrollLeft; this.mouseDown = true; }, ["@mouseout.self"]() { this.mouseDown = false; }, ["@mouseup"]() { this.mouseDown = false; }, ["@mousemove"](e) { e.preventDefault(); if (!this.mouseDown) { return; } const x = e.pageX - this.slider.offsetLeft; const scroll = x - this.startX; const scrollLeft = this.scrollLeft - scroll; if (scrollLeft > this.maxScroll) { this.slider.scrollLeft = this.maxScroll; return } this.slider.scrollLeft = this.scrollLeft - scroll; }, ["@onselectstart"]() { return false; } }, resizeEvent() { Array.from(this.$el.querySelectorAll(".snap")).forEach(slider => { slider.scrollLeft = 0; }) }, openSwitch() { this.show = !this.show; }, isLoaded: false, moreSwatch: false, isMobile: window.innerWidth < 768, heightSwatch: 0, openSwatch($refs) { const wrapper = this.$el.parentElement.querySelector(".swatch-attribute-wrapper"); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(this.show) { wrapper.style.height = height + "px"; this.show = false; } else { wrapper.style.height = "auto"; this.show = true; } }, initIfMoreSwatch($refs) { let thisParent = this; let timer; timer = setInterval(() => { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { clearInterval(timer); wrapper.dataset.baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(thisParent.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(Math.floor(wrapper.getBoundingClientRect().height) > height) { thisParent.moreSwatch = true; wrapper.style.height = height + "px"; } } }, 500); }, checkIfMoreSwatch() { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { wrapper.style.height = ""; const baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(baseHeight > height) { this.moreSwatch = true; wrapper.style.height = height + "px"; } else { this.moreSwatch = false; } } } } }' x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect(); initIfMoreSwatch($refs); isLoaded = true" @select-default-contenance="preselectDefaultContenance($event.detail.contenance, $event.detail.skipUpdateGallery);" @resize.window="resizeEvent(); isMobile = window.outerWidth < 768; checkIfMoreSwatch()" class="grow-[1] relative swatches-container" > <div class="swatch-attribute contenance"><div class="w-full flex !flex-nowrap overflow-hidden swatch-attribute-options -ml-1 w-full justify-between gap-1.25 items-center"><div class="swatch-attribute-wrapper w-full flex flex-wrap gap-y-1 m-0 overflow-y-hidden transition-all items-center contenance" :class="{ 'gap-x-0.5': ('contenance' != 'contenance'), 'gap-x-1': (isProductPage && !isProductUpSell), 'gap-x-0 md:gap-x-1': ('contenance' == 'contenance') && (isCategoryPage || isProductRelated || isProductItemWidget || isProductRitual), '!p-0': isProductUpSell }" role="radiogroup" x-bind="scrollEvents" x-ref="swatchWrapper40714" data-swatch-mobile="30" data-swatch-desktop="38" data-swatch-code="contenance" ><label class="sr-only" for="attributecontenance"><span> Contenance</span></label> <template x-for="(item, index) in optionConfig.attributes[153]?.options" :key="item.id"> <div class="pill-radio-container" :style="isMobile ? `width: calc(100% / ${attribueOptionsLength});` : ``" :class="{'hidden': (typeof item.disabled === 'undefined') && item.products.length === 0 , 'w-full': isProductPage && !isProductUpSell, 'p-1': optionConfig.attributes[153].code === 'adopt_swatch_color' || optionConfig.attributes[153].code === 'adopt_color', 'flex-1': optionConfig.attributes[153].code === 'contenance' && isProductPage}"> <template x-if="(typeof item.disabled === 'undefined') && item.products.length > 0"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--40714-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(153, $event.target.value, false, 'contenance', item.label, true, 40714);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--40714-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity flex flex-row-reverse gap-4 bg-lavender-300 text-anthracite-400" ><div class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9 font-semibold': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs"><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></div><div x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewbox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img">
<mask id="path-1-inside-1_4535_16993" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/>
<path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993)"/>
<rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewbox="0 0 16 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17007" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/>
<path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007)"/>
<rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewbox="0 0 17 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17021" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/>
<path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021)"/>
<rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template></div></label></div></template><template x-if="(typeof item.disabled !== 'undefined') && item.disabled === true"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--40714-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeDisabledOption(153, $event.target.value, false, 'contenance', item.label, true, 40714);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--40714-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity out-of-stock flex flex-row-reverse gap-4 !text-[#9691A1] !bg-[#EEECF1]" ><span class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span class="line-through" :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9 font-semibold': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs" ><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></span> <span x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewbox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img">
<mask id="path-1-inside-1_4535_16993_2" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/>
<path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_2)"/>
<rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewbox="0 0 16 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17007_2" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/>
<path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_2)"/>
<rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewbox="0 0 17 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17021_2" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/>
<path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_2)"/>
<rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template></span></label></div></template></div></template></div><button @click.prevent="openSwatch($refs)" x-ref="swatchButton" :class="{ 'hidden': !moreSwatch }" class="hidden relative top-px border rounded-full xl:w-6.5 xl:h-6.5 w-5.5 h-5.5 flex items-center justify-center bg-white transition duration-300 shrink-0 border-lavender-400 hover:border-anthracite-400"><span :class="{'rotate-180': show}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="xl:w-2.5 xl:h-auto w-2 h-2" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button></div></div> <template x-if="isTooltipVisible()"><div class="absolute" :style="getTooltipPosition()" ><div class="shadow-lg"><div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-tiny md:text-xxs leading-tight text-black transform -translate-x-1/2 -translate-y-full bg-white rounded-xl border-[2px] border-lavender-400 text-center" ><template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)"><div class="inline-block border shadow-sm border-container rounded-tl-xl rounded-tr-xl" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)" ></div></template><span class="text-xxs md:text-smaller font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()" ></span></div><svg class="absolute z-10 w-10 h-10 text-white transform -translate-x-1/5 -translate-y-11 fill-current stroke-current filter drop-shadow-[0_3px_0_rgb(217,218,255)] -mt-0.5 -ml-2" viewbox="0 0 320 512"><path d="m302.7 226.1-128.6 128.7c-7.8 7.8-20.5 7.8-28.3 0l-128.6-128.7z"/></svg></div></div></template> </div></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40714" data-price-box="product-id-40714"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></span> </div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40714" data-price-box="product-id-40714"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></span></button> <div class="hidden product-item-alertstock link w-full btn btn-add-to-cart group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group min-h-[3.125rem] py-0 px-4.25" aria-label="M'alerter"><span class="leading-none text-xs">M'alerter</span> <div class="block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40714" data-price-box="product-id-40714"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></div></div></div> </div></div></div></form> <script>
function initItemProduct_69301365d6eb0() {
return {
currentProductData: {
'sku': '8883701429850777',
'name': 'Joalia',
'short_description': "Eau\u0020de\u0020parfum\u0020paillet\u00E9e\u002030\u0020ml",
'id': '40714',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_perf_joalia_30ml_3701429850777_1.jpg?twic=v1',
'old_price': '0',
'final_price': '11.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: [],
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '8883701429850777',
'product_name': 'joalia',
'product_id': '40714',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '11.95',
'product_unitprice_tf': '9.96',
'product_discount_ati': '-11.95',
'product_discount_tf': '-11.95',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '8883701429850777',
'product_name': 'joalia',
'product_quantity': '1',
'product_id': '40714',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'eau-de-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '11.95',
'product_unitprice_tf': '9.96',
'product_discount_ati': '-11.95',
'product_discount_tf': '-11.95'
}]
})
}
}
}</script></a> <div class="pb-5 product-item relative" x-data="initMerchBreakProduct_6930136419d57()"><a class="h-full w-full product-merch-group" href="https://www.adopt.com/fr/jeu-de-noel"> <video class="hidden md:block h-full w-full object-cover max-h-[550px]" data-twic-src="media:video/media/catalog/product/e/c/ecomm_jeu_noel_2025_rupture_merch_desk_fr-min.gif" data-twic-transform="quality=95" data-twic-poster="media:video/media/catalog/product/e/c/ecomm_jeu_noel_2025_rupture_merch_desk_fr-min.gif" data-twic-poster-transform="cover-max=550x1100"></video><video class="block md:hidden h-full w-full object-cover" data-twic-src="media:video/media/catalog/product/e/c/ecomm_jeu_noel_2025_rupture_merch_mob_fr-min.gif" data-twic-transform="quality=95" data-twic-poster="media:video/media/catalog/product/e/c/ecomm_jeu_noel_2025_rupture_merch_mob_fr-min.gif" data-twic-poster-transform="cover-max=500x1000"></video> <div class="absolute bottom-4 inset-0 flex items-end justify-center p-4 md:p-6"><span class="btn btn-primary-white text-center px-5 md:px-7.5">Je joue</span></div></a></div> <script>
'use strict';
function initMerchBreakProduct_6930136419d57() {
return {
isMobile() {
return window.innerWidth < 768;
}
}
}</script> <a @click="clickProductLink('https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-creme-main-30-ml-3701429847791-fr.html')" href="https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-creme-main-30-ml-3701429847791-fr.html" class="product-item category-add-to-cart-form-product-_693013660e542 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_693013660e542()" x-defer="intersect" x-init="load()" @product-addtocart-success-40232.window="openAddCartPanel()" @update-prices-40232="updatePrice($event.detail, 40232);" @update-short-description-listing-40232="updateShortDescription($event.detail);" @update-configurable-url-40232="updateUrl($event.detail);" @configurable-selection-changed-40232="updateFlagsData($event.detail);" @update-gallery-40232="updateGallery($event.detail);" @update-gallery-hover-40232="updateGalleryHover($event.detail)" @stock-alert-modal-open-40232="showAlertButton($event)" @stock-alert-modal-close-40232="hideAlertButton($event)" data-sku="3701429847791"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL25vZWwtY29mZnJldC1wYXJmdW0vY2FkZWF1eC1wYXJmdW1zLmh0bWw_cD0zJmlzX3Njcm9sbD0x/product/40232/" name="category-add-to-cart-form-product-_693013660e542" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_693013660e542"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40232" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">2,95 €</span></div> <div class="publication_at bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Nouveau</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40232, {"product_ean":"3701429847791","product_name":"joalia","product_id":"40232","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":13.95,"product_unitprice_tf":"11.63","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40232"><template x-if="!isInWishlist(40232)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40232)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_30ml_handcream_3701429847791.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_joalia_30ml_handcream_3701429847791.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Joalia" title="Joalia"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_30ml_handcream_3701429847791.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_joalia_30ml_handcream_3701429847791.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_JOALIA_30ML_HANDCREAM_3701429847791.jpg" title="STILL_MULTI_JOALIA_30ML_HANDCREAM_3701429847791.jpg" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Joalia <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret eau de parfum 30 ml + crème mains 30 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret eau de parfum 30 ml + crème mains 30 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40232' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-creme-main-30-ml-3701429847791-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (256)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Poire confite, Nectar de fleurs blanches, Bois de santal, Vanille</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40232' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-creme-main-30-ml-3701429847791-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (256)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">16,90 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40232" data-price-box="product-id-40232"> <span class="price-container price-final_price tax weee"> <span id="product-price-40232" data-price-amount="13.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">13,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">16,90 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40232" data-price-box="product-id-40232"> <span class="price-container price-final_price tax weee"> <span id="product-price-40232" data-price-amount="13.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">13,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_693013660e542() {
return {
currentProductData: {
'sku': '3701429847791',
'name': 'Joalia',
'short_description': "Coffret\u0020eau\u0020de\u0020parfum\u002030\u0020ml\u0020\u002B\u0020cr\u00E8me\u0020mains\u002030\u0020ml",
'id': '40232',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_30ml_handcream_3701429847791.jpg?twic=v1',
'old_price': '13.950000',
'final_price': '13.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">2,95\u00a0\u20ac<\/span>","publication_at":"Nouveau"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429847791',
'product_name': 'joalia',
'product_id': '40232',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '13.95',
'product_unitprice_tf': '11.63',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429847791',
'product_name': 'joalia',
'product_quantity': '1',
'product_id': '40232',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '13.95',
'product_unitprice_tf': '11.63',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-gel-douche-250-ml-3701429845797-fr.html')" href="https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-gel-douche-250-ml-3701429845797-fr.html" class="product-item category-add-to-cart-form-product-_69301364af91e flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301364af91e()" x-defer="intersect" x-init="load()" @product-addtocart-success-39855.window="openAddCartPanel()" @update-prices-39855="updatePrice($event.detail, 39855);" @update-short-description-listing-39855="updateShortDescription($event.detail);" @update-configurable-url-39855="updateUrl($event.detail);" @configurable-selection-changed-39855="updateFlagsData($event.detail);" @update-gallery-39855="updateGallery($event.detail);" @update-gallery-hover-39855="updateGalleryHover($event.detail)" @stock-alert-modal-open-39855="showAlertButton($event)" @stock-alert-modal-close-39855="hideAlertButton($event)" data-sku="3701429845797"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3NvaW4tY29ycHMvcml0dWVsLXNvaW4tcGFyZnVtZS9qb2FsaWEuaHRtbD9icmlkPVBQamlKMUtkTUFBeGx5dTZ2RjU5UGc~/product/39855/" name="category-add-to-cart-form-product-_69301364af91e" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301364af91e"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="39855" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">1,95 €</span></div> <div class="publication_at bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Nouveau</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 39855, {"product_ean":"3701429845797","product_name":"joalia","product_id":"39855","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":15.95,"product_unitprice_tf":"13.29","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="39855"><template x-if="!isInWishlist(39855)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(39855)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_mutli_joalia_coffret_30ml_gd_3701429845797_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_mutli_joalia_coffret_30ml_gd_3701429845797_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Joalia" title="Joalia"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_mutli_joalia_coffret_30ml_gd_3701429845797_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_mutli_joalia_coffret_30ml_gd_3701429845797_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MUTLI_JOALIA_COFFRET_30ML_GD_3701429845797_1.jpg" title="STILL_MUTLI_JOALIA_COFFRET_30ML_GD_3701429845797_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Joalia <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret eau de parfum 30 ml + gel douche 250 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret eau de parfum 30 ml + gel douche 250 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39855' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-gel-douche-250-ml-3701429845797-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (266)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Poire confite, Nectar de fleurs blanches, Bois de santal, Vanille</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39855' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-gel-douche-250-ml-3701429845797-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (266)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">17,90 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39855" data-price-box="product-id-39855"> <span class="price-container price-final_price tax weee"> <span id="product-price-39855" data-price-amount="15.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">15,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">17,90 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39855" data-price-box="product-id-39855"> <span class="price-container price-final_price tax weee"> <span id="product-price-39855" data-price-amount="15.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">15,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301364af91e() {
return {
currentProductData: {
'sku': '3701429845797',
'name': 'Joalia',
'short_description': "Coffret\u0020eau\u0020de\u0020parfum\u002030\u0020ml\u0020\u002B\u0020gel\u0020douche\u0020250\u0020ml",
'id': '39855',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_mutli_joalia_coffret_30ml_gd_3701429845797_1.jpg?twic=v1',
'old_price': '15.950000',
'final_price': '15.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">1,95\u00a0\u20ac<\/span>","publication_at":"Nouveau"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429845797',
'product_name': 'joalia',
'product_id': '39855',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '15.95',
'product_unitprice_tf': '13.29',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429845797',
'product_name': 'joalia',
'product_quantity': '1',
'product_id': '39855',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '15.95',
'product_unitprice_tf': '13.29',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <div class="pb-5 product-item relative" x-data="initMerchBreakProduct_69301366307cc()"><a class="h-full w-full product-merch-group" href="https://www.adopt.com/fr/soin-corps/rituel-soin-parfume/joalia.html"> <video class="hidden md:block h-full w-full object-cover max-h-[550px]" data-twic-src="media:video/media/catalog/product/e/c/ecomm_anim_web_noel_1_joalia_motion_rupture_merch_vproduits_desk_fr-min.gif" data-twic-transform="quality=95" data-twic-poster="media:video/media/catalog/product/e/c/ecomm_anim_web_noel_1_joalia_motion_rupture_merch_vproduits_desk_fr-min.gif" data-twic-poster-transform="cover-max=550x1100"></video><video class="block md:hidden h-full w-full object-cover" data-twic-src="media:video/media/catalog/product/e/c/ecomm_anim_web_noel_1_joalia_motion_rupture_merch_vproduits_desk_fr-min.gif" data-twic-transform="quality=95" data-twic-poster="media:video/media/catalog/product/e/c/ecomm_anim_web_noel_1_joalia_motion_rupture_merch_vproduits_desk_fr-min.gif" data-twic-poster-transform="cover-max=500x1000"></video> <div class="absolute bottom-4 inset-0 flex items-end justify-center p-4 md:p-6"><span class="btn btn-primary-white text-center px-5 md:px-7.5">Je découvre</span></div></a></div> <script>
'use strict';
function initMerchBreakProduct_69301366307cc() {
return {
isMobile() {
return window.innerWidth < 768;
}
}
}</script> <a @click="clickProductLink('https://www.adopt.com/fr/joalia-coffret-chalet-eau-de-parfum-30-ml-gel-douche-250-ml-lait-corps-200-ml-3701429849269-fr.html')" href="https://www.adopt.com/fr/joalia-coffret-chalet-eau-de-parfum-30-ml-gel-douche-250-ml-lait-corps-200-ml-3701429849269-fr.html" class="product-item category-add-to-cart-form-product-_69301364c919a flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301364c919a()" x-defer="intersect" x-init="load()" @product-addtocart-success-39868.window="openAddCartPanel()" @update-prices-39868="updatePrice($event.detail, 39868);" @update-short-description-listing-39868="updateShortDescription($event.detail);" @update-configurable-url-39868="updateUrl($event.detail);" @configurable-selection-changed-39868="updateFlagsData($event.detail);" @update-gallery-39868="updateGallery($event.detail);" @update-gallery-hover-39868="updateGalleryHover($event.detail)" @stock-alert-modal-open-39868="showAlertButton($event)" @stock-alert-modal-close-39868="hideAlertButton($event)" data-sku="3701429849269"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3NvaW4tY29ycHMvcml0dWVsLXNvaW4tcGFyZnVtZS9qb2FsaWEuaHRtbD9icmlkPVBQamlKMUtkTUFBeGx5dTZ2RjU5UGc~/product/39868/" name="category-add-to-cart-form-product-_69301364c919a" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301364c919a"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="39868" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">3,90 €</span></div> <div class="publication_at bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Nouveau</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 39868, {"product_ean":"3701429849269","product_name":"joalia","product_id":"39868","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":21.95,"product_unitprice_tf":"18.29","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="39868"><template x-if="!isInWishlist(39868)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(39868)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_chalet_3701429849269_2_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_joalia_chalet_3701429849269_2_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Joalia" title="Joalia"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_chalet_3701429849269_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_joalia_chalet_3701429849269_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_JOALIA_CHALET_3701429849269_1.jpg" title="STILL_MULTI_JOALIA_CHALET_3701429849269_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Joalia <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret Chalet eau de parfum 30 ml + gel douche 250 ml + lait corps 200 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret Chalet eau de parfum 30 ml + gel douche 25</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39868' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-chalet-eau-de-parfum-30-ml-gel-douche-250-ml-lait-corps-200-ml-3701429849269-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (215)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39868' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-chalet-eau-de-parfum-30-ml-gel-douche-250-ml-lait-corps-200-ml-3701429849269-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (215)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">25,85 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39868" data-price-box="product-id-39868"> <span class="price-container price-final_price tax weee"> <span id="product-price-39868" data-price-amount="21.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">21,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">25,85 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39868" data-price-box="product-id-39868"> <span class="price-container price-final_price tax weee"> <span id="product-price-39868" data-price-amount="21.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">21,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301364c919a() {
return {
currentProductData: {
'sku': '3701429849269',
'name': 'Joalia',
'short_description': "Coffret\u0020Chalet\u0020eau\u0020de\u0020parfum\u002030\u0020ml\u0020\u002B\u0020gel\u0020douche\u0020250\u0020ml\u0020\u002B\u0020lait\u0020corps\u0020200\u0020ml",
'id': '39868',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_chalet_3701429849269_1.jpg?twic=v1',
'old_price': '21.950000',
'final_price': '21.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">3,90\u00a0\u20ac<\/span>","publication_at":"Nouveau"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429849269',
'product_name': 'joalia',
'product_id': '39868',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '21.95',
'product_unitprice_tf': '18.29',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429849269',
'product_name': 'joalia',
'product_quantity': '1',
'product_id': '39868',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '21.95',
'product_unitprice_tf': '18.29',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-100-ml-gel-douche-250-ml-3701429845490-fr.html')" href="https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-100-ml-gel-douche-250-ml-3701429845490-fr.html" class="product-item category-add-to-cart-form-product-_69301364e4d11 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301364e4d11()" x-defer="intersect" x-init="load()" @product-addtocart-success-39835.window="openAddCartPanel()" @update-prices-39835="updatePrice($event.detail, 39835);" @update-short-description-listing-39835="updateShortDescription($event.detail);" @update-configurable-url-39835="updateUrl($event.detail);" @configurable-selection-changed-39835="updateFlagsData($event.detail);" @update-gallery-39835="updateGallery($event.detail);" @update-gallery-hover-39835="updateGalleryHover($event.detail)" @stock-alert-modal-open-39835="showAlertButton($event)" @stock-alert-modal-close-39835="hideAlertButton($event)" data-sku="3701429845490"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3NvaW4tY29ycHMvcml0dWVsLXNvaW4tcGFyZnVtZS9qb2FsaWEuaHRtbD9icmlkPVBQamlKMUtkTUFBeGx5dTZ2RjU5UGc~/product/39835/" name="category-add-to-cart-form-product-_69301364e4d11" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301364e4d11"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="39835" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">3,95 €</span></div> <div class="publication_at bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Nouveau</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 39835, {"product_ean":"3701429845490","product_name":"joalia","product_id":"39835","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":28.95,"product_unitprice_tf":"24.13","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="39835"><template x-if="!isInWishlist(39835)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(39835)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_coffret_100ml-gd_3701429845490_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_joalia_coffret_100ml-gd_3701429845490_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Joalia" title="Joalia"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_coffret_100ml-gd_3701429845490_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_joalia_coffret_100ml-gd_3701429845490_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_JOALIA_COFFRET_100ML-GD_3701429845490_1.jpg" title="STILL_MULTI_JOALIA_COFFRET_100ML-GD_3701429845490_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Joalia <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret eau de parfum 100 ml + gel douche 250 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret eau de parfum 100 ml + gel douche 250 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39835' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-100-ml-gel-douche-250-ml-3701429845490-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (68)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Poire confite, Nectar de fleurs blanches, Bois de santal, Vanille</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39835' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-100-ml-gel-douche-250-ml-3701429845490-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (68)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">32,90 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39835" data-price-box="product-id-39835"> <span class="price-container price-final_price tax weee"> <span id="product-price-39835" data-price-amount="28.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">28,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">32,90 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39835" data-price-box="product-id-39835"> <span class="price-container price-final_price tax weee"> <span id="product-price-39835" data-price-amount="28.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">28,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301364e4d11() {
return {
currentProductData: {
'sku': '3701429845490',
'name': 'Joalia',
'short_description': "Coffret\u0020eau\u0020de\u0020parfum\u0020100\u0020ml\u0020\u002B\u0020gel\u0020douche\u0020250\u0020ml",
'id': '39835',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_coffret_100ml-gd_3701429845490_1.jpg?twic=v1',
'old_price': '28.950000',
'final_price': '28.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">3,95\u00a0\u20ac<\/span>","publication_at":"Nouveau"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429845490',
'product_name': 'joalia',
'product_id': '39835',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '28.95',
'product_unitprice_tf': '24.13',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429845490',
'product_name': 'joalia',
'product_quantity': '1',
'product_id': '39835',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '28.95',
'product_unitprice_tf': '24.13',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/joalia-coffret-eaux-de-parfum-30-ml-100-ml-3701429847494-fr.html')" href="https://www.adopt.com/fr/joalia-coffret-eaux-de-parfum-30-ml-100-ml-3701429847494-fr.html" class="product-item category-add-to-cart-form-product-_69301366395e7 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301366395e7()" x-defer="intersect" x-init="load()" @product-addtocart-success-40209.window="openAddCartPanel()" @update-prices-40209="updatePrice($event.detail, 40209);" @update-short-description-listing-40209="updateShortDescription($event.detail);" @update-configurable-url-40209="updateUrl($event.detail);" @configurable-selection-changed-40209="updateFlagsData($event.detail);" @update-gallery-40209="updateGallery($event.detail);" @update-gallery-hover-40209="updateGalleryHover($event.detail)" @stock-alert-modal-open-40209="showAlertButton($event)" @stock-alert-modal-close-40209="hideAlertButton($event)" data-sku="3701429847494"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL25vZWwtY29mZnJldC1wYXJmdW0vY2FkZWF1eC1wYXJmdW1zLmh0bWw_cD0zJmlzX3Njcm9sbD0x/product/40209/" name="category-add-to-cart-form-product-_69301366395e7" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301366395e7"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40209" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">3,95 €</span></div> <div class="publication_at bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Nouveau</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40209, {"product_ean":"3701429847494","product_name":"joalia","product_id":"40209","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":34.95,"product_unitprice_tf":"29.13","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40209"><template x-if="!isInWishlist(40209)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40209)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_30-100_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_joalia_30-100_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Joalia" title="Joalia"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_coffret_30_100_3701429847494_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_joalia_coffret_30_100_3701429847494_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_JOALIA_COFFRET_30_100_3701429847494_1.jpg" title="STILL_MULTI_JOALIA_COFFRET_30_100_3701429847494_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Joalia <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret eaux de parfum 30 ml + 100 ml </span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret eaux de parfum 30 ml + 100 ml </div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40209' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-eaux-de-parfum-30-ml-100-ml-3701429847494-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (65)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Poire confite, Nectar de fleurs blanches, Bois de santal, Vanille</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40209' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-eaux-de-parfum-30-ml-100-ml-3701429847494-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (65)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">38,90 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40209" data-price-box="product-id-40209"> <span class="price-container price-final_price tax weee"> <span id="product-price-40209" data-price-amount="34.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">34,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">38,90 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40209" data-price-box="product-id-40209"> <span class="price-container price-final_price tax weee"> <span id="product-price-40209" data-price-amount="34.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">34,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301366395e7() {
return {
currentProductData: {
'sku': '3701429847494',
'name': 'Joalia',
'short_description': "Coffret\u0020eaux\u0020de\u0020parfum\u002030\u0020ml\u0020\u002B\u0020100\u0020ml\u0020",
'id': '40209',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_coffret_30_100_3701429847494_1.jpg?twic=v1',
'old_price': '34.950000',
'final_price': '34.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">3,95\u00a0\u20ac<\/span>","publication_at":"Nouveau"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429847494',
'product_name': 'joalia',
'product_id': '40209',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '34.95',
'product_unitprice_tf': '29.13',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429847494',
'product_name': 'joalia',
'product_quantity': '1',
'product_id': '40209',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '34.95',
'product_unitprice_tf': '29.13',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-gel-douche-250-ml-gommage-250-ml-lait-corps-200-ml-creme-main-30-ml-fleur-de-bain-3701429847050-fr.html')" href="https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-gel-douche-250-ml-gommage-250-ml-lait-corps-200-ml-creme-main-30-ml-fleur-de-bain-3701429847050-fr.html" class="product-item category-add-to-cart-form-product-_693013651164c flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_693013651164c()" x-defer="intersect" x-init="load()" @product-addtocart-success-39895.window="openAddCartPanel()" @update-prices-39895="updatePrice($event.detail, 39895);" @update-short-description-listing-39895="updateShortDescription($event.detail);" @update-configurable-url-39895="updateUrl($event.detail);" @configurable-selection-changed-39895="updateFlagsData($event.detail);" @update-gallery-39895="updateGallery($event.detail);" @stock-alert-modal-open-39895="showAlertButton($event)" @stock-alert-modal-close-39895="hideAlertButton($event)" data-sku="3701429847050"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3NvaW4tY29ycHMvcml0dWVsLXNvaW4tcGFyZnVtZS9qb2FsaWEuaHRtbD9icmlkPVBQamlKMUtkTUFBeGx5dTZ2RjU5UGc~/product/39895/" name="category-add-to-cart-form-product-_693013651164c" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_693013651164c"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="39895" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">2,80 €</span></div> <div class="publication_at bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Nouveau</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 39895, {"product_ean":"3701429847050","product_name":"joalia","product_id":"39895","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":39.95,"product_unitprice_tf":"33.29","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="39895"><template x-if="!isInWishlist(39895)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(39895)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_coffret_maxi_3701429847050.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_joalia_coffret_maxi_3701429847050.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_JOALIA_COFFRET_MAXI_3701429847050.jpg" title="STILL_MULTI_JOALIA_COFFRET_MAXI_3701429847050.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Joalia <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret eau de parfum 30 ml + gel douche 250 ml + gommage 250 ml + lait corps 200 ml + crème mains 30 ml + fleur de bain</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret eau de parfum 30 ml + gel douche 250 ml + </div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39895' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-gel-douche-250-ml-gommage-250-ml-lait-corps-200-ml-creme-main-30-ml-fleur-de-bain-3701429847050-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (90)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39895' }); window.location.href = 'https://www.adopt.com/fr/joalia-coffret-eau-de-parfum-30-ml-gel-douche-250-ml-gommage-250-ml-lait-corps-200-ml-creme-main-30-ml-fleur-de-bain-3701429847050-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (90)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">42,75 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39895" data-price-box="product-id-39895"> <span class="price-container price-final_price tax weee"> <span id="product-price-39895" data-price-amount="39.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">39,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">42,75 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39895" data-price-box="product-id-39895"> <span class="price-container price-final_price tax weee"> <span id="product-price-39895" data-price-amount="39.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">39,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_693013651164c() {
return {
currentProductData: {
'sku': '3701429847050',
'name': 'Joalia',
'short_description': "Coffret\u0020eau\u0020de\u0020parfum\u002030\u0020ml\u0020\u002B\u0020gel\u0020douche\u0020250\u0020ml\u0020\u002B\u0020gommage\u0020250\u0020ml\u0020\u002B\u0020lait\u0020corps\u0020200\u0020ml\u0020\u002B\u0020cr\u00E8me\u0020mains\u002030\u0020ml\u0020\u002B\u0020fleur\u0020de\u0020bain",
'id': '39895',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_joalia_coffret_maxi_3701429847050.jpg?twic=v1',
'old_price': '39.950000',
'final_price': '39.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">2,80\u00a0\u20ac<\/span>","publication_at":"Nouveau"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429847050',
'product_name': 'joalia',
'product_id': '39895',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '39.95',
'product_unitprice_tf': '33.29',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429847050',
'product_name': 'joalia',
'product_quantity': '1',
'product_id': '39895',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '39.95',
'product_unitprice_tf': '33.29',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/wonderful-eau-de-parfum-30ml-8883701429849542-fr.html')" href="https://www.adopt.com/fr/wonderful-eau-de-parfum-30ml-8883701429849542-fr.html" class="product-item category-add-to-cart-form-product-_69301366641bd flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301366641bd()" x-defer="intersect" x-init="load()" @product-addtocart-success-40762.window="openAddCartPanel()" @update-prices-40762="updatePrice($event.detail, 40762);" @update-short-description-listing-40762="updateShortDescription($event.detail);" @update-configurable-url-40762="updateUrl($event.detail);" @configurable-selection-changed-40762="updateFlagsData($event.detail);" @update-gallery-40762="updateGallery($event.detail);" @update-gallery-hover-40762="updateGalleryHover($event.detail)" @stock-alert-modal-open-40762="showAlertButton($event)" @stock-alert-modal-close-40762="hideAlertButton($event)" data-sku="8883701429849542"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNtLnJvdWdlYXVkJTQwb3JhbmdlLmZyJmZpcnN0bmFtZT1NYXJ0aW5lJnN1cm5hbWU9Uk9VR0VBVUQ~/product/40762/" name="category-add-to-cart-form-product-_69301366641bd" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301366641bd"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40762" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 p-2 z-10 flex flex-col gap-1.25"><template x-if="flagsData"><template x-for="flag in Object.keys(flagsData)"><div x-html="flagsData[flag].icon + ' ' + flagsData[flag].label" :class="{ [flag]: true, ' bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest': true, ' text-xs-tiny md:text-smaller text-pink px-2 py-1.5 leading-none': flag === 'percent_promo', ' text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none': flag !== 'percent_promo' }"></div></template></template></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40762, {"product_ean":"8883701429849542","product_name":"wonderful","product_id":"40762","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":"9.96","product_discount_ati":-11.95,"product_discount_tf":-11.95} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40762"><template x-if="!isInWishlist(40762)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40762)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_perf_wonderful_np_30ml_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_perf_wonderful_np_30ml_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Wonderful" title="Wonderful"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_perf_wonderful_np_30ml_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_perf_wonderful_np_30ml_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="Wonderful" title="Wonderful" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Wonderful <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Eau de parfum</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Eau de parfum</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40762' }); window.location.href = 'https://www.adopt.com/fr/wonderful-eau-de-parfum-30ml-8883701429849542-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (465)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Pêche blanche, Jasmin, Bois de santal, Noix de coco</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40762' }); window.location.href = 'https://www.adopt.com/fr/wonderful-eau-de-parfum-30ml-8883701429849542-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (465)</span> </div></div> <div class="product-item-details pt-2.5"> <div x-data='{ ...initConfigurableOptions(40762, {"attributes":{"153":{"id":"153","code":"contenance","label":"Contenance","options":[{"id":"350","label":"30 ml","products":["40186"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["40178"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"40186":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"40178":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":"\u202f","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"40762","chooseText":"Choisissez une option...","images":[],"index":{"40186":{"153":"350"},"40178":{"153":"351"}},"salable":{"153":{"350":["40186"],"351":["40178"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"base","sku":{"40186":"3701429849542","40178":"3701429846091"},"short_description":{"40186":"Eau de parfum 30 ml","40178":"Eau de parfum 100 ml"},"flags_data":{"40186":{"is_vegan":{"label":"Vegan","icon":""}},"40178":{"is_vegan":{"label":"Vegan","icon":""}}}}), ...initSwatchOptions({"153":{"350":{"type":"0","value":null,"label":"30 ml"},"351":{"type":"0","value":null,"label":"100 ml"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}}), ...{ optionConfig: {"attributes":{"153":{"id":"153","code":"contenance","label":"Contenance","options":[{"id":"350","label":"30 ml","products":["40186"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["40178"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"40186":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"40178":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":"\u202f","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"40762","chooseText":"Choisissez une option...","images":[],"index":{"40186":{"153":"350"},"40178":{"153":"351"}},"salable":{"153":{"350":["40186"],"351":["40178"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"base","sku":{"40186":"3701429849542","40178":"3701429846091"},"short_description":{"40186":"Eau de parfum 30 ml","40178":"Eau de parfum 100 ml"},"flags_data":{"40186":{"is_vegan":{"label":"Vegan","icon":""}},"40178":{"is_vegan":{"label":"Vegan","icon":""}}}}, mediaCallback: "https\u003A\u002F\u002Fwww.adopt.com\u002Ffr\u002Fswatches\u002Fajax\u002Fmedia", changeDisabledOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0, productId) { if (value === "") { this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { if (opt !== optionId) { newSelection[opt] = val; } return newSelection; }, []); } else { this.selectedValues[optionId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-open-" + parentId, { detail: {productId: this.productIndex }})); }, changeOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) { this.selectedValues[optionId] = value; this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } updateUrl && attributeCode && optionLabel && this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "configurable-selection-changed-" + this.productId, { detail: { productId: this.productIndex, flagsData: this.optionConfig.flags_data ? this.optionConfig.flags_data[this.productIndex] : false, } } ) ); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-close-" + parentId, { productId: this.productIndex })); }, updateUrl(attributeCode, optionLabel) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-configurable-url-" + this.productId, { detail: { attribute_code: attributeCode, option_label: optionLabel.trim().replace(/ /g,"+") } } ) ); }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updatePrice(priceData) { const finalPriceElement = this.$el.querySelectorAll(".product-item-price"); finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(priceData.finalPrice.amount); }) }, updateShortDescription() { let shortDescValue = this.optionConfig.short_description ? this.optionConfig.short_description[this.productIndex] : false; if (shortDescValue) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-short-description-listing-" + this.productId, { detail: Object.assign( shortDescValue ) } ) ) } }, updateGallery() { if (!this.productIndex) { return; } fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, { method: "GET", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }).then(response => { return response.json() }).then(data => { if (data.errors) { console.warn(data.errors); } else { const image = data && data.medium; if (image) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-40762", {detail: image} ) ); } const hoverImage = data && data.hover_image; if (hoverImage) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-hover-40762", {detail: hoverImage} ) ); } } }).catch(error => { console.warn(error) }); }, preselectDefaultContenance(orderedOptionsIds, skipUpdateGallery = false) { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); let contenanceParam = urlQueryParams.get("contenance"); if (contenanceParam !== null) { return; } Object.values(this.optionConfig.attributes).map(attribute => { let found = false; let hasSpecialPriceFound = false; let optionId; let optionLabel; let isOptionFoundDisabled = false; Object.values(orderedOptionsIds).map(orderedOptionId => { Object.values(attribute.options).map(option => { if ((option.disabled === true) || (typeof this.optionConfig.optionPrices[option.products[0]] === "undefined")) { return; } let hasSpecialPrice = this.optionConfig.optionPrices[option.products[0]]?.finalPrice.amount !== this.optionConfig.optionPrices[option.products[0]]?.oldPrice.amount; if (!hasSpecialPriceFound && hasSpecialPrice && option.label === orderedOptionId) { found = true; hasSpecialPriceFound = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } if ((found === false) && option.label === orderedOptionId) { found = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); }); if (attribute.code === "contenance") { if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } else { this.changeOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } } else { this.changeOption(attribute.id, optionId); } }); }, preselectQuerystringItems() { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); Object.values(this.optionConfig.attributes).map(attribute => { let isOptionFoundDisabled = false; if (urlQueryParams.get(attribute.code) !== null) { let optionId = urlQueryParams.get(attribute.code); let found = false; Object.values(attribute.options).map(option => { if (found === false && option.label === optionId) { optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, false, attribute.code, optionLabel, true, 40762, this.productIndex); } else { this.changeOption(attribute.id, optionId); } } }); }, mouseDown: false, startX: 0, maxScroll: 0, scrollLeft: null, slider: null, show: false, scrollEvents: { ["@mousedown"](e) { this.slider = e.target.closest(".snap"); if (!this.slider) { return; } this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth; this.startX = e.pageX - this.slider.offsetLeft; this.scrollLeft = this.slider.scrollLeft; this.mouseDown = true; }, ["@mouseout.self"]() { this.mouseDown = false; }, ["@mouseup"]() { this.mouseDown = false; }, ["@mousemove"](e) { e.preventDefault(); if (!this.mouseDown) { return; } const x = e.pageX - this.slider.offsetLeft; const scroll = x - this.startX; const scrollLeft = this.scrollLeft - scroll; if (scrollLeft > this.maxScroll) { this.slider.scrollLeft = this.maxScroll; return } this.slider.scrollLeft = this.scrollLeft - scroll; }, ["@onselectstart"]() { return false; } }, resizeEvent() { Array.from(this.$el.querySelectorAll(".snap")).forEach(slider => { slider.scrollLeft = 0; }) }, openSwitch() { this.show = !this.show; }, isLoaded: false, moreSwatch: false, isMobile: window.innerWidth < 768, heightSwatch: 0, openSwatch($refs) { const wrapper = this.$el.parentElement.querySelector(".swatch-attribute-wrapper"); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(this.show) { wrapper.style.height = height + "px"; this.show = false; } else { wrapper.style.height = "auto"; this.show = true; } }, initIfMoreSwatch($refs) { let thisParent = this; let timer; timer = setInterval(() => { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { clearInterval(timer); wrapper.dataset.baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(thisParent.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(Math.floor(wrapper.getBoundingClientRect().height) > height) { thisParent.moreSwatch = true; wrapper.style.height = height + "px"; } } }, 500); }, checkIfMoreSwatch() { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { wrapper.style.height = ""; const baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(baseHeight > height) { this.moreSwatch = true; wrapper.style.height = height + "px"; } else { this.moreSwatch = false; } } } } }' x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect(); initIfMoreSwatch($refs); isLoaded = true" @select-default-contenance="preselectDefaultContenance($event.detail.contenance, $event.detail.skipUpdateGallery);" @resize.window="resizeEvent(); isMobile = window.outerWidth < 768; checkIfMoreSwatch()" class="grow-[1] relative swatches-container" > <div class="swatch-attribute contenance"><div class="w-full flex !flex-nowrap overflow-hidden swatch-attribute-options -ml-1 w-full justify-between gap-1.25 items-center"><div class="swatch-attribute-wrapper w-full flex flex-wrap gap-y-1 m-0 overflow-y-hidden transition-all items-center contenance" :class="{ 'gap-x-0.5': ('contenance' != 'contenance'), 'gap-x-1': (isProductPage && !isProductUpSell), 'gap-x-0 md:gap-x-1': ('contenance' == 'contenance') && (isCategoryPage || isProductRelated || isProductItemWidget || isProductRitual), '!p-0': isProductUpSell }" role="radiogroup" x-bind="scrollEvents" x-ref="swatchWrapper40762" data-swatch-mobile="30" data-swatch-desktop="38" data-swatch-code="contenance" ><label class="sr-only" for="attributecontenance"><span> Contenance</span></label> <template x-for="(item, index) in optionConfig.attributes[153]?.options" :key="item.id"> <div class="pill-radio-container" :style="isMobile ? `width: calc(100% / ${attribueOptionsLength});` : ``" :class="{'hidden': (typeof item.disabled === 'undefined') && item.products.length === 0 , 'w-full': isProductPage && !isProductUpSell, 'p-1': optionConfig.attributes[153].code === 'adopt_swatch_color' || optionConfig.attributes[153].code === 'adopt_color', 'flex-1': optionConfig.attributes[153].code === 'contenance' && isProductPage}"> <template x-if="(typeof item.disabled === 'undefined') && item.products.length > 0"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--40762-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(153, $event.target.value, false, 'contenance', item.label, true, 40762);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--40762-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity flex flex-row-reverse gap-4 bg-lavender-300 text-anthracite-400" ><div class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9 font-semibold': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs"><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></div><div x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewbox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img">
<mask id="path-1-inside-1_4535_16993_3" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/>
<path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_3)"/>
<rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewbox="0 0 16 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17007_3" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/>
<path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_3)"/>
<rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewbox="0 0 17 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17021_3" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/>
<path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_3)"/>
<rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template></div></label></div></template><template x-if="(typeof item.disabled !== 'undefined') && item.disabled === true"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--40762-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeDisabledOption(153, $event.target.value, false, 'contenance', item.label, true, 40762);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--40762-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity out-of-stock flex flex-row-reverse gap-4 !text-[#9691A1] !bg-[#EEECF1]" ><span class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span class="line-through" :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9 font-semibold': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs" ><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></span> <span x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewbox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img">
<mask id="path-1-inside-1_4535_16993_4" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/>
<path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_4)"/>
<rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewbox="0 0 16 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17007_4" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/>
<path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_4)"/>
<rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewbox="0 0 17 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17021_4" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/>
<path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_4)"/>
<rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template></span></label></div></template></div></template></div><button @click.prevent="openSwatch($refs)" x-ref="swatchButton" :class="{ 'hidden': !moreSwatch }" class="hidden relative top-px border rounded-full xl:w-6.5 xl:h-6.5 w-5.5 h-5.5 flex items-center justify-center bg-white transition duration-300 shrink-0 border-lavender-400 hover:border-anthracite-400"><span :class="{'rotate-180': show}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="xl:w-2.5 xl:h-auto w-2 h-2" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button></div></div> <template x-if="isTooltipVisible()"><div class="absolute" :style="getTooltipPosition()" ><div class="shadow-lg"><div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-tiny md:text-xxs leading-tight text-black transform -translate-x-1/2 -translate-y-full bg-white rounded-xl border-[2px] border-lavender-400 text-center" ><template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)"><div class="inline-block border shadow-sm border-container rounded-tl-xl rounded-tr-xl" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)" ></div></template><span class="text-xxs md:text-smaller font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()" ></span></div><svg class="absolute z-10 w-10 h-10 text-white transform -translate-x-1/5 -translate-y-11 fill-current stroke-current filter drop-shadow-[0_3px_0_rgb(217,218,255)] -mt-0.5 -ml-2" viewbox="0 0 320 512"><path d="m302.7 226.1-128.6 128.7c-7.8 7.8-20.5 7.8-28.3 0l-128.6-128.7z"/></svg></div></div></template> </div></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40762" data-price-box="product-id-40762"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></span> </div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40762" data-price-box="product-id-40762"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></span></button> <div class="hidden product-item-alertstock link w-full btn btn-add-to-cart group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group min-h-[3.125rem] py-0 px-4.25" aria-label="M'alerter"><span class="leading-none text-xs">M'alerter</span> <div class="block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40762" data-price-box="product-id-40762"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></div></div></div> </div></div></div></form> <script>
function initItemProduct_69301366641bd() {
return {
currentProductData: {
'sku': '8883701429849542',
'name': 'Wonderful',
'short_description': "Eau\u0020de\u0020parfum",
'id': '40762',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_perf_wonderful_np_30ml_1.jpg?twic=v1',
'old_price': '0',
'final_price': '11.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: [],
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '8883701429849542',
'product_name': 'wonderful',
'product_id': '40762',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '11.95',
'product_unitprice_tf': '9.96',
'product_discount_ati': '-11.95',
'product_discount_tf': '-11.95',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '8883701429849542',
'product_name': 'wonderful',
'product_quantity': '1',
'product_id': '40762',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'eau-de-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '11.95',
'product_unitprice_tf': '9.96',
'product_discount_ati': '-11.95',
'product_discount_tf': '-11.95'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/wonderful-eau-de-parfum-pailletee-8883701429831608-fr.html')" href="https://www.adopt.com/fr/wonderful-eau-de-parfum-pailletee-8883701429831608-fr.html" class="product-item category-add-to-cart-form-product-_693013644993e flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_693013644993e()" x-defer="intersect" x-init="load()" @product-addtocart-success-39085.window="openAddCartPanel()" @update-prices-39085="updatePrice($event.detail, 39085);" @update-short-description-listing-39085="updateShortDescription($event.detail);" @update-configurable-url-39085="updateUrl($event.detail);" @configurable-selection-changed-39085="updateFlagsData($event.detail);" @update-gallery-39085="updateGallery($event.detail);" @update-gallery-hover-39085="updateGalleryHover($event.detail)" @stock-alert-modal-open-39085="showAlertButton($event)" @stock-alert-modal-close-39085="hideAlertButton($event)" data-sku="8883701429831608"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNsYWlyZS53aWNoZXIlNDBnbWFpbC5jb20mZmlyc3RuYW1lPUNsYWlyZSZzdXJuYW1lPVdpY2hlcg~~/product/39085/" name="category-add-to-cart-form-product-_693013644993e" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_693013644993e"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="39085" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 p-2 z-10 flex flex-col gap-1.25"><template x-if="flagsData"><template x-for="flag in Object.keys(flagsData)"><div x-html="flagsData[flag].icon + ' ' + flagsData[flag].label" :class="{ [flag]: true, ' bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest': true, ' text-xs-tiny md:text-smaller text-pink px-2 py-1.5 leading-none': flag === 'percent_promo', ' text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none': flag !== 'percent_promo' }"></div></template></template></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 39085, {"product_ean":"8883701429831608","product_name":"wonderful","product_id":"39085","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":"9.96","product_discount_ati":-11.95,"product_discount_tf":-11.95} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="39085"><template x-if="!isInWishlist(39085)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(39085)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/w/o/wonderful_30_ml_macro_ecom_copie_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/w/o/wonderful_30_ml_macro_ecom_copie_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Wonderful" title="Wonderful"> <img src="https://adopt.twic.pics/media/catalog/product/w/o/wonderful_30ml_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/w/o/wonderful_30ml_1_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="Wonderful" title="Wonderful" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Wonderful <span class="w-0 absolute h-0 overflow-hidden inline-block"> - EAU DE PARFUM PAILLETÉE 30 ML</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">EAU DE PARFUM PAILLETÉE 30 ML</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39085' }); window.location.href = 'https://www.adopt.com/fr/wonderful-eau-de-parfum-pailletee-8883701429831608-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (7774)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Pêche blanche, Jasmin, Bois de santal, Noix de coco</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39085' }); window.location.href = 'https://www.adopt.com/fr/wonderful-eau-de-parfum-pailletee-8883701429831608-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (7774)</span> </div></div> <div class="product-item-details pt-2.5"> <div x-data='{ ...initConfigurableOptions(39085, {"attributes":{"153":{"id":"153","code":"contenance","label":"Contenance","options":[{"id":"350","label":"30 ml","products":["39286"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["38187"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"39286":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"38187":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":"\u202f","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"39085","chooseText":"Choisissez une option...","images":[],"index":{"39286":{"153":"350"},"38187":{"153":"351"}},"salable":{"153":{"350":["39286"],"351":["38187"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"base","sku":{"39286":"3701429838829","38187":"3701429831615"},"short_description":{"39286":"EAU DE PARFUM PAILLET\u00c9E 30 ML","38187":"EAU DE PARFUM PAILLET\u00c9E 100 ML"},"flags_data":{"39286":{"paillete":{"label":"Paillet\u00e9","icon":""},"is_bestseller":{"label":"BEST-SELLER","icon":""}},"38187":{"paillete":{"label":"Paillet\u00e9","icon":""},"is_bestseller":{"label":"BEST-SELLER","icon":""}}}}), ...initSwatchOptions({"153":{"350":{"type":"0","value":null,"label":"30 ml"},"351":{"type":"0","value":null,"label":"100 ml"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}}), ...{ optionConfig: {"attributes":{"153":{"id":"153","code":"contenance","label":"Contenance","options":[{"id":"350","label":"30 ml","products":["39286"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["38187"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"39286":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"38187":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":"\u202f","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"39085","chooseText":"Choisissez une option...","images":[],"index":{"39286":{"153":"350"},"38187":{"153":"351"}},"salable":{"153":{"350":["39286"],"351":["38187"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"base","sku":{"39286":"3701429838829","38187":"3701429831615"},"short_description":{"39286":"EAU DE PARFUM PAILLET\u00c9E 30 ML","38187":"EAU DE PARFUM PAILLET\u00c9E 100 ML"},"flags_data":{"39286":{"paillete":{"label":"Paillet\u00e9","icon":""},"is_bestseller":{"label":"BEST-SELLER","icon":""}},"38187":{"paillete":{"label":"Paillet\u00e9","icon":""},"is_bestseller":{"label":"BEST-SELLER","icon":""}}}}, mediaCallback: "https\u003A\u002F\u002Fwww.adopt.com\u002Ffr\u002Fswatches\u002Fajax\u002Fmedia", changeDisabledOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0, productId) { if (value === "") { this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { if (opt !== optionId) { newSelection[opt] = val; } return newSelection; }, []); } else { this.selectedValues[optionId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-open-" + parentId, { detail: {productId: this.productIndex }})); }, changeOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) { this.selectedValues[optionId] = value; this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } updateUrl && attributeCode && optionLabel && this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "configurable-selection-changed-" + this.productId, { detail: { productId: this.productIndex, flagsData: this.optionConfig.flags_data ? this.optionConfig.flags_data[this.productIndex] : false, } } ) ); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-close-" + parentId, { productId: this.productIndex })); }, updateUrl(attributeCode, optionLabel) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-configurable-url-" + this.productId, { detail: { attribute_code: attributeCode, option_label: optionLabel.trim().replace(/ /g,"+") } } ) ); }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updatePrice(priceData) { const finalPriceElement = this.$el.querySelectorAll(".product-item-price"); finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(priceData.finalPrice.amount); }) }, updateShortDescription() { let shortDescValue = this.optionConfig.short_description ? this.optionConfig.short_description[this.productIndex] : false; if (shortDescValue) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-short-description-listing-" + this.productId, { detail: Object.assign( shortDescValue ) } ) ) } }, updateGallery() { if (!this.productIndex) { return; } fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, { method: "GET", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }).then(response => { return response.json() }).then(data => { if (data.errors) { console.warn(data.errors); } else { const image = data && data.medium; if (image) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-39085", {detail: image} ) ); } const hoverImage = data && data.hover_image; if (hoverImage) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-hover-39085", {detail: hoverImage} ) ); } } }).catch(error => { console.warn(error) }); }, preselectDefaultContenance(orderedOptionsIds, skipUpdateGallery = false) { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); let contenanceParam = urlQueryParams.get("contenance"); if (contenanceParam !== null) { return; } Object.values(this.optionConfig.attributes).map(attribute => { let found = false; let hasSpecialPriceFound = false; let optionId; let optionLabel; let isOptionFoundDisabled = false; Object.values(orderedOptionsIds).map(orderedOptionId => { Object.values(attribute.options).map(option => { if ((option.disabled === true) || (typeof this.optionConfig.optionPrices[option.products[0]] === "undefined")) { return; } let hasSpecialPrice = this.optionConfig.optionPrices[option.products[0]]?.finalPrice.amount !== this.optionConfig.optionPrices[option.products[0]]?.oldPrice.amount; if (!hasSpecialPriceFound && hasSpecialPrice && option.label === orderedOptionId) { found = true; hasSpecialPriceFound = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } if ((found === false) && option.label === orderedOptionId) { found = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); }); if (attribute.code === "contenance") { if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } else { this.changeOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } } else { this.changeOption(attribute.id, optionId); } }); }, preselectQuerystringItems() { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); Object.values(this.optionConfig.attributes).map(attribute => { let isOptionFoundDisabled = false; if (urlQueryParams.get(attribute.code) !== null) { let optionId = urlQueryParams.get(attribute.code); let found = false; Object.values(attribute.options).map(option => { if (found === false && option.label === optionId) { optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, false, attribute.code, optionLabel, true, 39085, this.productIndex); } else { this.changeOption(attribute.id, optionId); } } }); }, mouseDown: false, startX: 0, maxScroll: 0, scrollLeft: null, slider: null, show: false, scrollEvents: { ["@mousedown"](e) { this.slider = e.target.closest(".snap"); if (!this.slider) { return; } this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth; this.startX = e.pageX - this.slider.offsetLeft; this.scrollLeft = this.slider.scrollLeft; this.mouseDown = true; }, ["@mouseout.self"]() { this.mouseDown = false; }, ["@mouseup"]() { this.mouseDown = false; }, ["@mousemove"](e) { e.preventDefault(); if (!this.mouseDown) { return; } const x = e.pageX - this.slider.offsetLeft; const scroll = x - this.startX; const scrollLeft = this.scrollLeft - scroll; if (scrollLeft > this.maxScroll) { this.slider.scrollLeft = this.maxScroll; return } this.slider.scrollLeft = this.scrollLeft - scroll; }, ["@onselectstart"]() { return false; } }, resizeEvent() { Array.from(this.$el.querySelectorAll(".snap")).forEach(slider => { slider.scrollLeft = 0; }) }, openSwitch() { this.show = !this.show; }, isLoaded: false, moreSwatch: false, isMobile: window.innerWidth < 768, heightSwatch: 0, openSwatch($refs) { const wrapper = this.$el.parentElement.querySelector(".swatch-attribute-wrapper"); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(this.show) { wrapper.style.height = height + "px"; this.show = false; } else { wrapper.style.height = "auto"; this.show = true; } }, initIfMoreSwatch($refs) { let thisParent = this; let timer; timer = setInterval(() => { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { clearInterval(timer); wrapper.dataset.baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(thisParent.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(Math.floor(wrapper.getBoundingClientRect().height) > height) { thisParent.moreSwatch = true; wrapper.style.height = height + "px"; } } }, 500); }, checkIfMoreSwatch() { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { wrapper.style.height = ""; const baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(baseHeight > height) { this.moreSwatch = true; wrapper.style.height = height + "px"; } else { this.moreSwatch = false; } } } } }' x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect(); initIfMoreSwatch($refs); isLoaded = true" @select-default-contenance="preselectDefaultContenance($event.detail.contenance, $event.detail.skipUpdateGallery);" @resize.window="resizeEvent(); isMobile = window.outerWidth < 768; checkIfMoreSwatch()" class="grow-[1] relative swatches-container" > <div class="swatch-attribute contenance"><div class="w-full flex !flex-nowrap overflow-hidden swatch-attribute-options -ml-1 w-full justify-between gap-1.25 items-center"><div class="swatch-attribute-wrapper w-full flex flex-wrap gap-y-1 m-0 overflow-y-hidden transition-all items-center contenance" :class="{ 'gap-x-0.5': ('contenance' != 'contenance'), 'gap-x-1': (isProductPage && !isProductUpSell), 'gap-x-0 md:gap-x-1': ('contenance' == 'contenance') && (isCategoryPage || isProductRelated || isProductItemWidget || isProductRitual), '!p-0': isProductUpSell }" role="radiogroup" x-bind="scrollEvents" x-ref="swatchWrapper39085" data-swatch-mobile="30" data-swatch-desktop="38" data-swatch-code="contenance" ><label class="sr-only" for="attributecontenance"><span> Contenance</span></label> <template x-for="(item, index) in optionConfig.attributes[153]?.options" :key="item.id"> <div class="pill-radio-container" :style="isMobile ? `width: calc(100% / ${attribueOptionsLength});` : ``" :class="{'hidden': (typeof item.disabled === 'undefined') && item.products.length === 0 , 'w-full': isProductPage && !isProductUpSell, 'p-1': optionConfig.attributes[153].code === 'adopt_swatch_color' || optionConfig.attributes[153].code === 'adopt_color', 'flex-1': optionConfig.attributes[153].code === 'contenance' && isProductPage}"> <template x-if="(typeof item.disabled === 'undefined') && item.products.length > 0"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--39085-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(153, $event.target.value, false, 'contenance', item.label, true, 39085);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--39085-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity flex flex-row-reverse gap-4 bg-lavender-300 text-anthracite-400" ><div class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9 font-semibold': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs"><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></div><div x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewbox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img">
<mask id="path-1-inside-1_4535_16993" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/>
<path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993)"/>
<rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewbox="0 0 16 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17007" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/>
<path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007)"/>
<rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewbox="0 0 17 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17021" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/>
<path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021)"/>
<rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template></div></label></div></template><template x-if="(typeof item.disabled !== 'undefined') && item.disabled === true"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--39085-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeDisabledOption(153, $event.target.value, false, 'contenance', item.label, true, 39085);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--39085-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity out-of-stock flex flex-row-reverse gap-4 !text-[#9691A1] !bg-[#EEECF1]" ><span class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span class="line-through" :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9 font-semibold': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs" ><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></span> <span x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewbox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img">
<mask id="path-1-inside-1_4535_16993_2" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/>
<path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_2)"/>
<rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewbox="0 0 16 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17007_2" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/>
<path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_2)"/>
<rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewbox="0 0 17 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17021_2" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/>
<path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_2)"/>
<rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template></span></label></div></template></div></template></div><button @click.prevent="openSwatch($refs)" x-ref="swatchButton" :class="{ 'hidden': !moreSwatch }" class="hidden relative top-px border rounded-full xl:w-6.5 xl:h-6.5 w-5.5 h-5.5 flex items-center justify-center bg-white transition duration-300 shrink-0 border-lavender-400 hover:border-anthracite-400"><span :class="{'rotate-180': show}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="xl:w-2.5 xl:h-auto w-2 h-2" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button></div></div> <template x-if="isTooltipVisible()"><div class="absolute" :style="getTooltipPosition()" ><div class="shadow-lg"><div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-tiny md:text-xxs leading-tight text-black transform -translate-x-1/2 -translate-y-full bg-white rounded-xl border-[2px] border-lavender-400 text-center" ><template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)"><div class="inline-block border shadow-sm border-container rounded-tl-xl rounded-tr-xl" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)" ></div></template><span class="text-xxs md:text-smaller font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()" ></span></div><svg class="absolute z-10 w-10 h-10 text-white transform -translate-x-1/5 -translate-y-11 fill-current stroke-current filter drop-shadow-[0_3px_0_rgb(217,218,255)] -mt-0.5 -ml-2" viewbox="0 0 320 512"><path d="m302.7 226.1-128.6 128.7c-7.8 7.8-20.5 7.8-28.3 0l-128.6-128.7z"/></svg></div></div></template> </div></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39085" data-price-box="product-id-39085"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></span> </div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39085" data-price-box="product-id-39085"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></span></button> <div class="hidden product-item-alertstock link w-full btn btn-add-to-cart group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group min-h-[3.125rem] py-0 px-4.25" aria-label="M'alerter"><span class="leading-none text-xs">M'alerter</span> <div class="block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39085" data-price-box="product-id-39085"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></div></div></div> </div></div></div></form> <script>
function initItemProduct_693013644993e() {
return {
currentProductData: {
'sku': '8883701429831608',
'name': 'Wonderful',
'short_description': "EAU\u0020DE\u0020PARFUM\u0020PAILLET\u00C9E\u002030\u0020ML",
'id': '39085',
'image': 'https://adopt.twic.pics/media/catalog/product/w/o/wonderful_30ml_1_1.jpg?twic=v1',
'old_price': '0',
'final_price': '11.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: [],
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '8883701429831608',
'product_name': 'wonderful',
'product_id': '39085',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '11.95',
'product_unitprice_tf': '9.96',
'product_discount_ati': '-11.95',
'product_discount_tf': '-11.95',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '8883701429831608',
'product_name': 'wonderful',
'product_quantity': '1',
'product_id': '39085',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'eau-de-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '11.95',
'product_unitprice_tf': '9.96',
'product_discount_ati': '-11.95',
'product_discount_tf': '-11.95'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-10-ml-3701429849993-fr.html')" href="https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-10-ml-3701429849993-fr.html" class="product-item category-add-to-cart-form-product-_69301365a828c flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301365a828c()" x-defer="intersect" x-init="load()" @product-addtocart-success-40272.window="openAddCartPanel()" @update-prices-40272="updatePrice($event.detail, 40272);" @update-short-description-listing-40272="updateShortDescription($event.detail);" @update-configurable-url-40272="updateUrl($event.detail);" @configurable-selection-changed-40272="updateFlagsData($event.detail);" @update-gallery-40272="updateGallery($event.detail);" @update-gallery-hover-40272="updateGalleryHover($event.detail)" @stock-alert-modal-open-40272="showAlertButton($event)" @stock-alert-modal-close-40272="hideAlertButton($event)" data-sku="3701429849993"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL25vZWwtY29mZnJldC1wYXJmdW0vY2FkZWF1eC1wYXJmdW1zLmh0bWw_cD0xJmlzX3Njcm9sbD0x/product/40272/" name="category-add-to-cart-form-product-_69301365a828c" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301365a828c"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40272" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="is_vegan bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Vegan</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40272, {"product_ean":"3701429849993","product_name":"wonderful","product_id":"40272","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":5.95,"product_unitprice_tf":"4.96","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40272"><template x-if="!isInWishlist(40272)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40272)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_secretsanta_3701429849993_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_secretsanta_3701429849993_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Wonderful" title="Wonderful"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_secretsanta_3701429849993_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_secretsanta_3701429849993_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="Wonderful" title="Wonderful" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Wonderful <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret eau de parfum 10 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret eau de parfum 10 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40272' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-10-ml-3701429849993-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (58)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Pêche blanche, Jasmin, Bois de santal, Noix de coco</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40272' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-10-ml-3701429849993-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (58)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40272" data-price-box="product-id-40272"> <span class="price-container price-final_price tax weee"> <span id="product-price-40272" data-price-amount="5.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">5,95 €</span></span> </span> </div></span> </div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40272" data-price-box="product-id-40272"> <span class="price-container price-final_price tax weee"> <span id="product-price-40272" data-price-amount="5.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">5,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301365a828c() {
return {
currentProductData: {
'sku': '3701429849993',
'name': 'Wonderful',
'short_description': "Coffret\u0020eau\u0020de\u0020parfum\u002010\u0020ml",
'id': '40272',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_secretsanta_3701429849993_1.jpg?twic=v1',
'old_price': '5.950000',
'final_price': '5.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"is_vegan":"Vegan"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429849993',
'product_name': 'wonderful',
'product_id': '40272',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '5.95',
'product_unitprice_tf': '4.96',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429849993',
'product_name': 'wonderful',
'product_quantity': '1',
'product_id': '40272',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '5.95',
'product_unitprice_tf': '4.96',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-10-ml-galet-de-bain-32g-3701429846213-fr.html')" href="https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-10-ml-galet-de-bain-32g-3701429846213-fr.html" class="product-item category-add-to-cart-form-product-_69301364925d4 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301364925d4()" x-defer="intersect" x-init="load()" @product-addtocart-success-39892.window="openAddCartPanel()" @update-prices-39892="updatePrice($event.detail, 39892);" @update-short-description-listing-39892="updateShortDescription($event.detail);" @update-configurable-url-39892="updateUrl($event.detail);" @configurable-selection-changed-39892="updateFlagsData($event.detail);" @update-gallery-39892="updateGallery($event.detail);" @update-gallery-hover-39892="updateGalleryHover($event.detail)" @stock-alert-modal-open-39892="showAlertButton($event)" @stock-alert-modal-close-39892="hideAlertButton($event)" data-sku="3701429846213"> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="is_vegan bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Vegan</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 39892, {"product_ean":"3701429846213","product_name":"wonderful","product_id":"39892","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":7.95,"product_unitprice_tf":"6.63","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="39892"><template x-if="!isInWishlist(39892)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(39892)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_sapin_3701429846213_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_sapin_3701429846213_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Wonderful" title="Wonderful"> <div class="out-of-stock absolute w-full h-full z-10 flex justify-center items-center bg-white bg-opacity-80 px-3.5 md:px-0"><div class="w-fit py-2.5 px-6 bg-white text-xs md:text-base font-medium leading-tightened md:leading-tightened text-center">Victime de son succès</div></div> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_sapin_3701429846213_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_sapin_3701429846213_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_WONDERFUL_SAPIN_3701429846213_1.jpg" title="STILL_MULTI_WONDERFUL_SAPIN_3701429846213_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Wonderful <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret eau de parfum 10 ml + galet de bain 32g</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret eau de parfum 10 ml + galet de bain 32g</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39892' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-10-ml-galet-de-bain-32g-3701429846213-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (79)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Pêche blanche, Jasmin, Bois de santal, Noix de coco</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39892' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-10-ml-galet-de-bain-32g-3701429846213-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (79)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center alert"> <div class="product-item-alertstock w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group"><span class="leading-none text-xs">M'alerter</span> <div class="block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39892" data-price-box="product-id-39892"> <span class="price-container price-final_price tax weee"> <span id="product-price-39892" data-price-amount="7.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">7,95 €</span></span> </span> </div></div></div> </div></div></div> <script>
function initItemProduct_69301364925d4() {
return {
currentProductData: {
'sku': '3701429846213',
'name': 'Wonderful',
'short_description': "Coffret\u0020eau\u0020de\u0020parfum\u002010\u0020ml\u0020\u002B\u0020galet\u0020de\u0020bain\u002032g",
'id': '39892',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_sapin_3701429846213_1.jpg?twic=v1',
'old_price': '7.950000',
'final_price': '7.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"is_vegan":"Vegan"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429846213',
'product_name': 'wonderful',
'product_id': '39892',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '7.95',
'product_unitprice_tf': '6.63',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429846213',
'product_name': 'wonderful',
'product_quantity': '1',
'product_id': '39892',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '7.95',
'product_unitprice_tf': '6.63',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-30-ml-creme-main-30ml-3701429847753-fr.html')" href="https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-30-ml-creme-main-30ml-3701429847753-fr.html" class="product-item category-add-to-cart-form-product-_6930136619c38 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_6930136619c38()" x-defer="intersect" x-init="load()" @product-addtocart-success-40230.window="openAddCartPanel()" @update-prices-40230="updatePrice($event.detail, 40230);" @update-short-description-listing-40230="updateShortDescription($event.detail);" @update-configurable-url-40230="updateUrl($event.detail);" @configurable-selection-changed-40230="updateFlagsData($event.detail);" @update-gallery-40230="updateGallery($event.detail);" @update-gallery-hover-40230="updateGalleryHover($event.detail)" @stock-alert-modal-open-40230="showAlertButton($event)" @stock-alert-modal-close-40230="hideAlertButton($event)" data-sku="3701429847753"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL25vZWwtY29mZnJldC1wYXJmdW0vY2FkZWF1eC1wYXJmdW1zLmh0bWw_cD0xJmlzX3Njcm9sbD0x/product/40230/" name="category-add-to-cart-form-product-_6930136619c38" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_6930136619c38"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40230" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">2,95 €</span></div> <div class="is_vegan bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Vegan</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40230, {"product_ean":"3701429847753","product_name":"wonderful","product_id":"40230","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":13.95,"product_unitprice_tf":"11.63","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40230"><template x-if="!isInWishlist(40230)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40230)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_cm_3701429847753_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_30ml_cm_3701429847753_1.png" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Wonderful" title="Wonderful"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_cm_3701429847753_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_30ml_cm_3701429847753_1.png" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_WONDERFUL_30ML_CM_3701429847753_1.png" title="STILL_MULTI_WONDERFUL_30ML_CM_3701429847753_1.png" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Wonderful <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret eau de parfum 30 ml + crème main 30ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret eau de parfum 30 ml + crème main 30ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40230' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-30-ml-creme-main-30ml-3701429847753-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (156)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Pêche blanche, Jasmin, Bois de santal, Noix de coco</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40230' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-30-ml-creme-main-30ml-3701429847753-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (156)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">16,90 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40230" data-price-box="product-id-40230"> <span class="price-container price-final_price tax weee"> <span id="product-price-40230" data-price-amount="13.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">13,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">16,90 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40230" data-price-box="product-id-40230"> <span class="price-container price-final_price tax weee"> <span id="product-price-40230" data-price-amount="13.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">13,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_6930136619c38() {
return {
currentProductData: {
'sku': '3701429847753',
'name': 'Wonderful',
'short_description': "Coffret\u0020eau\u0020de\u0020parfum\u002030\u0020ml\u0020\u002B\u0020cr\u00E8me\u0020main\u002030ml",
'id': '40230',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_cm_3701429847753_1.png?twic=v1',
'old_price': '13.950000',
'final_price': '13.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">2,95\u00a0\u20ac<\/span>","is_vegan":"Vegan"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429847753',
'product_name': 'wonderful',
'product_id': '40230',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '13.95',
'product_unitprice_tf': '11.63',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429847753',
'product_name': 'wonderful',
'product_quantity': '1',
'product_id': '40230',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '13.95',
'product_unitprice_tf': '11.63',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/wonderful-coffret-30-ml-gel-douche-250-ml-3701429834210-fr.html')" href="https://www.adopt.com/fr/wonderful-coffret-30-ml-gel-douche-250-ml-3701429834210-fr.html" class="product-item category-add-to-cart-form-product-_69301364b63de flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301364b63de()" x-defer="intersect" x-init="load()" @product-addtocart-success-38895.window="openAddCartPanel()" @update-prices-38895="updatePrice($event.detail, 38895);" @update-short-description-listing-38895="updateShortDescription($event.detail);" @update-configurable-url-38895="updateUrl($event.detail);" @configurable-selection-changed-38895="updateFlagsData($event.detail);" @update-gallery-38895="updateGallery($event.detail);" @update-gallery-hover-38895="updateGalleryHover($event.detail)" @stock-alert-modal-open-38895="showAlertButton($event)" @stock-alert-modal-close-38895="hideAlertButton($event)" data-sku="3701429834210"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNsYWlyZS53aWNoZXIlNDBnbWFpbC5jb20mZmlyc3RuYW1lPUNsYWlyZSZzdXJuYW1lPVdpY2hlcg~~/product/38895/" name="category-add-to-cart-form-product-_69301364b63de" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301364b63de"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="38895" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">1,95 €</span></div> <div class="is_bestseller bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">BEST-SELLER</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 38895, {"product_ean":"3701429834210","product_name":"wonderful","product_id":"38895","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":15.95,"product_unitprice_tf":"13.29","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="38895"><template x-if="!isInWishlist(38895)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(38895)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_gd_3701429834210_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_30ml_gd_3701429834210_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Wonderful" title="Wonderful"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_gd_3701429834210_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_30ml_gd_3701429834210_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_WONDERFUL_30ML_GD_3701429834210_1.jpg" title="STILL_MULTI_WONDERFUL_30ML_GD_3701429834210_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Wonderful <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret 30ml + gel douche 250ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret 30ml + gel douche 250ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '38895' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-30-ml-gel-douche-250-ml-3701429834210-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (613)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Pêche blanche, Jasmin, Bois de santal, Noix de coco</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '38895' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-30-ml-gel-douche-250-ml-3701429834210-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (613)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">17,90 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38895" data-price-box="product-id-38895"> <span class="price-container price-final_price tax weee"> <span id="product-price-38895" data-price-amount="15.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">15,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">17,90 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38895" data-price-box="product-id-38895"> <span class="price-container price-final_price tax weee"> <span id="product-price-38895" data-price-amount="15.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">15,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301364b63de() {
return {
currentProductData: {
'sku': '3701429834210',
'name': 'Wonderful',
'short_description': "Coffret\u002030ml\u0020\u002B\u0020gel\u0020douche\u0020250ml",
'id': '38895',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_gd_3701429834210_1.jpg?twic=v1',
'old_price': '15.950000',
'final_price': '15.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">1,95\u00a0\u20ac<\/span>","is_bestseller":"BEST-SELLER"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429834210',
'product_name': 'wonderful',
'product_id': '38895',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '15.95',
'product_unitprice_tf': '13.29',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429834210',
'product_name': 'wonderful',
'product_quantity': '1',
'product_id': '38895',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '15.95',
'product_unitprice_tf': '13.29',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <div class="pb-5 product-item relative" x-data="initMerchBreakProduct_69301366c9e98()"><a class="h-full w-full product-merch-group" href="https://www.adopt.com/fr/parfum/parfum-homme.html"> <video class="hidden md:block h-full w-full object-cover max-h-[550px]" data-twic-src="media:video/media/catalog/product/e/c/ecomm_anim_web_noel_1_onyx_rupture_merch_desk_fr-min_1.gif" data-twic-transform="quality=95" data-twic-poster="media:video/media/catalog/product/e/c/ecomm_anim_web_noel_1_onyx_rupture_merch_desk_fr-min_1.gif" data-twic-poster-transform="cover-max=550x1100"></video><video class="block md:hidden h-full w-full object-cover" data-twic-src="media:video/media/catalog/product/e/c/ecomm_anim_web_noel_1_onyx_rupture_merch_mob_fr-min_1.gif" data-twic-transform="quality=95" data-twic-poster="media:video/media/catalog/product/e/c/ecomm_anim_web_noel_1_onyx_rupture_merch_mob_fr-min_1.gif" data-twic-poster-transform="cover-max=500x1000"></video> <div class="absolute bottom-4 inset-0 flex items-end justify-center p-4 md:p-6"><span class="btn btn-primary-white text-center px-5 md:px-7.5">Je découvre</span></div></a></div> <script>
'use strict';
function initMerchBreakProduct_69301366c9e98() {
return {
isMobile() {
return window.innerWidth < 768;
}
}
}</script> <a @click="clickProductLink('https://www.adopt.com/fr/wonderful-trousse-eau-de-parfum-30-ml-creme-main-30-ml-galet-de-bain-32g-3701429848118-fr.html')" href="https://www.adopt.com/fr/wonderful-trousse-eau-de-parfum-30-ml-creme-main-30-ml-galet-de-bain-32g-3701429848118-fr.html" class="product-item category-add-to-cart-form-product-_6930136670356 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_6930136670356()" x-defer="intersect" x-init="load()" @product-addtocart-success-40252.window="openAddCartPanel()" @update-prices-40252="updatePrice($event.detail, 40252);" @update-short-description-listing-40252="updateShortDescription($event.detail);" @update-configurable-url-40252="updateUrl($event.detail);" @configurable-selection-changed-40252="updateFlagsData($event.detail);" @update-gallery-40252="updateGallery($event.detail);" @update-gallery-hover-40252="updateGalleryHover($event.detail)" @stock-alert-modal-open-40252="showAlertButton($event)" @stock-alert-modal-close-40252="hideAlertButton($event)" data-sku="3701429848118"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS9wYXJmdW0tZmVtbWUvY29mZnJldC1wYXJmdW0tZmVtbWUuaHRtbA~~/product/40252/" name="category-add-to-cart-form-product-_6930136670356" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_6930136670356"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40252" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="is_vegan bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Vegan</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40252, {"product_ean":"3701429848118","product_name":"wonderful","product_id":"40252","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":18.95,"product_unitprice_tf":"15.79","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40252"><template x-if="!isInWishlist(40252)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40252)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_cm_gdb_3701429848118_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_30ml_cm_gdb_3701429848118_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Wonderful" title="Wonderful"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_cm_gdb_3701429848118_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_30ml_cm_gdb_3701429848118_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_WONDERFUL_30ML_CM_GDB_3701429848118_1.jpg" title="STILL_MULTI_WONDERFUL_30ML_CM_GDB_3701429848118_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Wonderful <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Trousse eau de parfum 30 ml + crème main 30 ml + galet de bain 32g</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Trousse eau de parfum 30 ml + crème main 30 ml + g</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40252' }); window.location.href = 'https://www.adopt.com/fr/wonderful-trousse-eau-de-parfum-30-ml-creme-main-30-ml-galet-de-bain-32g-3701429848118-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (32)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Pêche blanche, Jasmin, Bois de santal, Noix de coco</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40252' }); window.location.href = 'https://www.adopt.com/fr/wonderful-trousse-eau-de-parfum-30-ml-creme-main-30-ml-galet-de-bain-32g-3701429848118-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (32)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40252" data-price-box="product-id-40252"> <span class="price-container price-final_price tax weee"> <span id="product-price-40252" data-price-amount="18.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">18,95 €</span></span> </span> </div></span> </div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40252" data-price-box="product-id-40252"> <span class="price-container price-final_price tax weee"> <span id="product-price-40252" data-price-amount="18.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">18,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_6930136670356() {
return {
currentProductData: {
'sku': '3701429848118',
'name': 'Wonderful',
'short_description': "Trousse\u0020eau\u0020de\u0020parfum\u002030\u0020ml\u0020\u002B\u0020cr\u00E8me\u0020main\u002030\u0020ml\u0020\u002B\u0020galet\u0020de\u0020bain\u002032g",
'id': '40252',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_cm_gdb_3701429848118_1.jpg?twic=v1',
'old_price': '18.950000',
'final_price': '18.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"is_vegan":"Vegan"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429848118',
'product_name': 'wonderful',
'product_id': '40252',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '18.95',
'product_unitprice_tf': '15.79',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429848118',
'product_name': 'wonderful',
'product_quantity': '1',
'product_id': '40252',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '18.95',
'product_unitprice_tf': '15.79',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/wonderful-coffret-30-ml-gel-douche-250-ml-lait-corps-200-ml-3701429834678-fr.html')" href="https://www.adopt.com/fr/wonderful-coffret-30-ml-gel-douche-250-ml-lait-corps-200-ml-3701429834678-fr.html" class="product-item category-add-to-cart-form-product-_69301364d8442 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301364d8442()" x-defer="intersect" x-init="load()" @product-addtocart-success-38917.window="openAddCartPanel()" @update-prices-38917="updatePrice($event.detail, 38917);" @update-short-description-listing-38917="updateShortDescription($event.detail);" @update-configurable-url-38917="updateUrl($event.detail);" @configurable-selection-changed-38917="updateFlagsData($event.detail);" @update-gallery-38917="updateGallery($event.detail);" @update-gallery-hover-38917="updateGalleryHover($event.detail)" @stock-alert-modal-open-38917="showAlertButton($event)" @stock-alert-modal-close-38917="hideAlertButton($event)" data-sku="3701429834678"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNsYWlyZS53aWNoZXIlNDBnbWFpbC5jb20mZmlyc3RuYW1lPUNsYWlyZSZzdXJuYW1lPVdpY2hlcg~~/product/38917/" name="category-add-to-cart-form-product-_69301364d8442" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301364d8442"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="38917" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">3,90 €</span></div> <div class="is_bestseller bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">BEST-SELLER</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 38917, {"product_ean":"3701429834678","product_name":"wonderful","product_id":"38917","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":21.95,"product_unitprice_tf":"18.29","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="38917"><template x-if="!isInWishlist(38917)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(38917)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_chalet_3701429834678_2_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_chalet_3701429834678_2_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Wonderful" title="Wonderful"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_chalet_3701429834678_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_chalet_3701429834678_1_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_WONDERFUL_CHALET_3701429834678_1.jpg" title="STILL_MULTI_WONDERFUL_CHALET_3701429834678_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Wonderful <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret chalet 30ml + gel douche 250ml + lait corps 200ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret chalet 30ml + gel douche 250ml + lait corp</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '38917' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-30-ml-gel-douche-250-ml-lait-corps-200-ml-3701429834678-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (429)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Pêche blanche, Jasmin, Bois de santal, Noix de coco</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '38917' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-30-ml-gel-douche-250-ml-lait-corps-200-ml-3701429834678-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (429)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">25,85 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38917" data-price-box="product-id-38917"> <span class="price-container price-final_price tax weee"> <span id="product-price-38917" data-price-amount="21.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">21,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">25,85 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38917" data-price-box="product-id-38917"> <span class="price-container price-final_price tax weee"> <span id="product-price-38917" data-price-amount="21.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">21,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301364d8442() {
return {
currentProductData: {
'sku': '3701429834678',
'name': 'Wonderful',
'short_description': "Coffret\u0020chalet\u002030ml\u0020\u002B\u0020gel\u0020douche\u0020250ml\u0020\u002B\u0020lait\u0020corps\u0020200ml",
'id': '38917',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_chalet_3701429834678_1_1.jpg?twic=v1',
'old_price': '21.950000',
'final_price': '21.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">3,90\u00a0\u20ac<\/span>","is_bestseller":"BEST-SELLER"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429834678',
'product_name': 'wonderful',
'product_id': '38917',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '21.95',
'product_unitprice_tf': '18.29',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429834678',
'product_name': 'wonderful',
'product_quantity': '1',
'product_id': '38917',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '21.95',
'product_unitprice_tf': '18.29',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-100-ml-lait-corps-200-ml-3701429835484-fr.html')" href="https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-100-ml-lait-corps-200-ml-3701429835484-fr.html" class="product-item category-add-to-cart-form-product-_6930136501d86 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_6930136501d86()" x-defer="intersect" x-init="load()" @product-addtocart-success-39150.window="openAddCartPanel()" @update-prices-39150="updatePrice($event.detail, 39150);" @update-short-description-listing-39150="updateShortDescription($event.detail);" @update-configurable-url-39150="updateUrl($event.detail);" @configurable-selection-changed-39150="updateFlagsData($event.detail);" @update-gallery-39150="updateGallery($event.detail);" @update-gallery-hover-39150="updateGalleryHover($event.detail)" @stock-alert-modal-open-39150="showAlertButton($event)" @stock-alert-modal-close-39150="hideAlertButton($event)" data-sku="3701429835484"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNsYWlyZS53aWNoZXIlNDBnbWFpbC5jb20mZmlyc3RuYW1lPUNsYWlyZSZzdXJuYW1lPVdpY2hlcg~~/product/39150/" name="category-add-to-cart-form-product-_6930136501d86" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_6930136501d86"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="39150" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">4,95 €</span></div> <div class="is_bestseller bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">BEST-SELLER</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 39150, {"product_ean":"3701429835484","product_name":"wonderful","product_id":"39150","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":29.95,"product_unitprice_tf":"24.96","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="39150"><template x-if="!isInWishlist(39150)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(39150)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_coffretrond_3701429835484_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_coffretrond_3701429835484_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Wonderful" title="Wonderful"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_coffretrond_3701429835484_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_coffretrond_3701429835484_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_WONDERFUL_COFFRETROND_3701429835484_1.jpg" title="STILL_MULTI_WONDERFUL_COFFRETROND_3701429835484_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Wonderful <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret eau de parfum 100 ml + lait corps 200 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret eau de parfum 100 ml + lait corps 200 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39150' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-100-ml-lait-corps-200-ml-3701429835484-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (197)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Pêche blanche, Jasmin, Bois de santal, Noix de coco</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39150' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-eau-de-parfum-100-ml-lait-corps-200-ml-3701429835484-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (197)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">34,90 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39150" data-price-box="product-id-39150"> <span class="price-container price-final_price tax weee"> <span id="product-price-39150" data-price-amount="29.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">29,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">34,90 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39150" data-price-box="product-id-39150"> <span class="price-container price-final_price tax weee"> <span id="product-price-39150" data-price-amount="29.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">29,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_6930136501d86() {
return {
currentProductData: {
'sku': '3701429835484',
'name': 'Wonderful',
'short_description': "Coffret\u0020eau\u0020de\u0020parfum\u0020100\u0020ml\u0020\u002B\u0020lait\u0020corps\u0020200\u0020ml",
'id': '39150',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_coffretrond_3701429835484_1.jpg?twic=v1',
'old_price': '29.950000',
'final_price': '29.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">4,95\u00a0\u20ac<\/span>","is_bestseller":"BEST-SELLER"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429835484',
'product_name': 'wonderful',
'product_id': '39150',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '29.95',
'product_unitprice_tf': '24.96',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429835484',
'product_name': 'wonderful',
'product_quantity': '1',
'product_id': '39150',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '29.95',
'product_unitprice_tf': '24.96',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/wonderful-coffret-eaux-de-parfums-30-ml-et-100-ml-3701429847418-fr.html')" href="https://www.adopt.com/fr/wonderful-coffret-eaux-de-parfums-30-ml-et-100-ml-3701429847418-fr.html" class="product-item category-add-to-cart-form-product-_69301365222cd flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301365222cd()" x-defer="intersect" x-init="load()" @product-addtocart-success-40205.window="openAddCartPanel()" @update-prices-40205="updatePrice($event.detail, 40205);" @update-short-description-listing-40205="updateShortDescription($event.detail);" @update-configurable-url-40205="updateUrl($event.detail);" @configurable-selection-changed-40205="updateFlagsData($event.detail);" @update-gallery-40205="updateGallery($event.detail);" @update-gallery-hover-40205="updateGalleryHover($event.detail)" @stock-alert-modal-open-40205="showAlertButton($event)" @stock-alert-modal-close-40205="hideAlertButton($event)" data-sku="3701429847418"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNsYWlyZS53aWNoZXIlNDBnbWFpbC5jb20mZmlyc3RuYW1lPUNsYWlyZSZzdXJuYW1lPVdpY2hlcg~~/product/40205/" name="category-add-to-cart-form-product-_69301365222cd" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301365222cd"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40205" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">3,95 €</span></div> <div class="is_vegan bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Vegan</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40205, {"product_ean":"3701429847418","product_name":"wonderful","product_id":"40205","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":34.95,"product_unitprice_tf":"29.13","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40205"><template x-if="!isInWishlist(40205)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40205)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_100ml_3701429847418_2.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_30ml_100ml_3701429847418_2.png" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Wonderful" title="Wonderful"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_100ml_3701429847418_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_30ml_100ml_3701429847418_1.png" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_WONDERFUL_30ML_100ML_3701429847418_1.png" title="STILL_MULTI_WONDERFUL_30ML_100ML_3701429847418_1.png" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Wonderful <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret eaux de parfums 30 ml et 100 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret eaux de parfums 30 ml et 100 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40205' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-eaux-de-parfums-30-ml-et-100-ml-3701429847418-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (50)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Pêche blanche, Jasmin, Bois de santal, Noix de coco</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40205' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-eaux-de-parfums-30-ml-et-100-ml-3701429847418-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (50)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">38,90 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40205" data-price-box="product-id-40205"> <span class="price-container price-final_price tax weee"> <span id="product-price-40205" data-price-amount="34.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">34,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">38,90 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40205" data-price-box="product-id-40205"> <span class="price-container price-final_price tax weee"> <span id="product-price-40205" data-price-amount="34.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">34,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301365222cd() {
return {
currentProductData: {
'sku': '3701429847418',
'name': 'Wonderful',
'short_description': "Coffret\u0020eaux\u0020de\u0020parfums\u002030\u0020ml\u0020et\u0020100\u0020ml",
'id': '40205',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_30ml_100ml_3701429847418_1.png?twic=v1',
'old_price': '34.950000',
'final_price': '34.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">3,95\u00a0\u20ac<\/span>","is_vegan":"Vegan"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429847418',
'product_name': 'wonderful',
'product_id': '40205',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '34.95',
'product_unitprice_tf': '29.13',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429847418',
'product_name': 'wonderful',
'product_quantity': '1',
'product_id': '40205',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '34.95',
'product_unitprice_tf': '29.13',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <div class="pb-5 product-item relative" x-data="initMerchBreakProduct_6930136540c03()"><a class="h-full w-full product-merch-group" href="https://www.adopt.com/fr/calendrier-de-l-avent.html"> <img class="h-full w-full object-cover" loading="lazy" src="https://adopt.twic.pics/media/catalog/product/e/c/ecomm_calendrier_rupture_merch_desk_fr_2_1.png?twic=v1/output=preview" :width="isMobile() ? '141' : '325'" :height="isMobile() ? '280' : '498'" :src="isMobile() ? 'https://adopt.twic.pics/media/catalog/product/e/c/ecomm_calendrier_rupture_merch_rupture_merch_mob_fr_1.png?twic=v1' : 'https://adopt.twic.pics/media/catalog/product/e/c/ecomm_calendrier_rupture_merch_desk_fr_2_1.png?twic=v1'" alt=""/> <div class="absolute bottom-4 inset-0 flex items-end justify-center p-4 md:p-6"><span class="btn btn-primary-white text-center px-5 md:px-7.5">Je fonce !</span></div></a></div> <script>
'use strict';
function initMerchBreakProduct_6930136540c03() {
return {
isMobile() {
return window.innerWidth < 768;
}
}
}</script> <a @click="clickProductLink('https://www.adopt.com/fr/wonderful-coffret-maxi-eau-de-parfum-wonderful-30-ml-gel-douche-250-ml-lait-corps-200-ml-creme-pour-les-mains-30-ml-fleur-de-bain-3701429835705-fr.html')" href="https://www.adopt.com/fr/wonderful-coffret-maxi-eau-de-parfum-wonderful-30-ml-gel-douche-250-ml-lait-corps-200-ml-creme-pour-les-mains-30-ml-fleur-de-bain-3701429835705-fr.html" class="product-item category-add-to-cart-form-product-_69301363a883c flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301363a883c()" x-defer="intersect" x-init="load()" @product-addtocart-success-39023.window="openAddCartPanel()" @update-prices-39023="updatePrice($event.detail, 39023);" @update-short-description-listing-39023="updateShortDescription($event.detail);" @update-configurable-url-39023="updateUrl($event.detail);" @configurable-selection-changed-39023="updateFlagsData($event.detail);" @update-gallery-39023="updateGallery($event.detail);" @update-gallery-hover-39023="updateGalleryHover($event.detail)" @stock-alert-modal-open-39023="showAlertButton($event)" @stock-alert-modal-close-39023="hideAlertButton($event)" data-sku="3701429835705"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL25vZWwtY29mZnJldC1wYXJmdW0vY2FkZWF1eC1wYXJmdW1zLmh0bWw_cD0yJmlzX3Njcm9sbD0x/product/39023/" name="category-add-to-cart-form-product-_69301363a883c" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301363a883c"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="39023" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">2,80 €</span></div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 39023, {"product_ean":"3701429835705","product_name":"wonderful","product_id":"39023","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"07 Mademoiselle frivole","product_unitprice_ati":39.95,"product_unitprice_tf":"33.29","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="39023"><template x-if="!isInWishlist(39023)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(39023)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_maxi_3701429835705_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_maxi_3701429835705_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Wonderful" title="Wonderful"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_maxi_3701429835705_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_wonderful_maxi_3701429835705_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="Wonderful" title="Wonderful" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Wonderful <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret maxi eau de parfum Wonderful 30 ml + gel douche 250 ml + lait corps 200 ml + crème pour les mains 30 ml + gommage au sucre 250ml + fleur de bain</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret maxi eau de parfum Wonderful 30 ml + gel d</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39023' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-maxi-eau-de-parfum-wonderful-30-ml-gel-douche-250-ml-lait-corps-200-ml-creme-pour-les-mains-30-ml-fleur-de-bain-3701429835705-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (104)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Pêche blanche, Jasmin, Bois de santal, Noix de coco</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '39023' }); window.location.href = 'https://www.adopt.com/fr/wonderful-coffret-maxi-eau-de-parfum-wonderful-30-ml-gel-douche-250-ml-lait-corps-200-ml-creme-pour-les-mains-30-ml-fleur-de-bain-3701429835705-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (104)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">42,75 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39023" data-price-box="product-id-39023"> <span class="price-container price-final_price tax weee"> <span id="product-price-39023" data-price-amount="39.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">39,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">42,75 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="39023" data-price-box="product-id-39023"> <span class="price-container price-final_price tax weee"> <span id="product-price-39023" data-price-amount="39.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">39,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301363a883c() {
return {
currentProductData: {
'sku': '3701429835705',
'name': 'Wonderful',
'short_description': "Coffret\u0020maxi\u0020eau\u0020de\u0020parfum\u0020Wonderful\u002030\u0020ml\u0020\u002B\u0020gel\u0020douche\u0020250\u0020ml\u0020\u002B\u0020lait\u0020corps\u0020200\u0020ml\u0020\u002B\u0020cr\u00E8me\u0020pour\u0020les\u0020mains\u002030\u0020ml\u0020\u002B\u0020\u0020gommage\u0020au\u0020sucre\u0020250ml\u0020\u002B\u0020fleur\u0020de\u0020bain",
'id': '39023',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_wonderful_maxi_3701429835705_1.jpg?twic=v1',
'old_price': '39.950000',
'final_price': '39.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">2,80\u00a0\u20ac<\/span>"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429835705',
'product_name': 'wonderful',
'product_id': '39023',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '07 Mademoiselle frivole',
'product_unitprice_ati': '39.95',
'product_unitprice_tf': '33.29',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429835705',
'product_name': 'wonderful',
'product_quantity': '1',
'product_id': '39023',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '07 Mademoiselle frivole',
'product_unitprice_ati': '39.95',
'product_unitprice_tf': '33.29',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/glitter-addict-coffret-4-x-eaux-de-parfums-30-ml-3701429847852-fr.html')" href="https://www.adopt.com/fr/glitter-addict-coffret-4-x-eaux-de-parfums-30-ml-3701429847852-fr.html" class="product-item category-add-to-cart-form-product-_693013654d6b8 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_693013654d6b8()" x-defer="intersect" x-init="load()" @product-addtocart-success-40235.window="openAddCartPanel()" @update-prices-40235="updatePrice($event.detail, 40235);" @update-short-description-listing-40235="updateShortDescription($event.detail);" @update-configurable-url-40235="updateUrl($event.detail);" @configurable-selection-changed-40235="updateFlagsData($event.detail);" @update-gallery-40235="updateGallery($event.detail);" @update-gallery-hover-40235="updateGalleryHover($event.detail)" @stock-alert-modal-open-40235="showAlertButton($event)" @stock-alert-modal-close-40235="hideAlertButton($event)" data-sku="3701429847852"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNsYWlyZS53aWNoZXIlNDBnbWFpbC5jb20mZmlyc3RuYW1lPUNsYWlyZSZzdXJuYW1lPVdpY2hlcg~~/product/40235/" name="category-add-to-cart-form-product-_693013654d6b8" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_693013654d6b8"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40235" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">10,95 €</span></div> <div class="paillete bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Pailleté</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40235, {"product_ean":"3701429847852","product_name":"glitter-addict","product_id":"40235","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":36.85,"product_unitprice_tf":"30.71","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40235"><template x-if="!isInWishlist(40235)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40235)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_glitteraddict_feelingbox_3701429847852_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_glitteraddict_feelingbox_3701429847852_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Glitter Addict" title="Glitter Addict"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_glitteraddict_feelingbox_3701429847852_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_glitteraddict_feelingbox_3701429847852_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_GLITTERADDICT_FEELINGBOX_3701429847852_1.jpg" title="STILL_MULTI_GLITTERADDICT_FEELINGBOX_3701429847852_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Glitter Addict <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret 4 x eaux de parfums 30 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret 4 x eaux de parfums 30 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40235' }); window.location.href = 'https://www.adopt.com/fr/glitter-addict-coffret-4-x-eaux-de-parfums-30-ml-3701429847852-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (84)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40235' }); window.location.href = 'https://www.adopt.com/fr/glitter-addict-coffret-4-x-eaux-de-parfums-30-ml-3701429847852-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (84)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">47,80 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40235" data-price-box="product-id-40235"> <span class="price-container price-final_price tax weee"> <span id="product-price-40235" data-price-amount="36.85" data-price-type="finalPrice" class="price-wrapper" ><span class="price">36,85 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">47,80 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40235" data-price-box="product-id-40235"> <span class="price-container price-final_price tax weee"> <span id="product-price-40235" data-price-amount="36.85" data-price-type="finalPrice" class="price-wrapper" ><span class="price">36,85 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_693013654d6b8() {
return {
currentProductData: {
'sku': '3701429847852',
'name': 'Glitter\u0020Addict',
'short_description': "Coffret\u00204\u0020x\u0020eaux\u0020de\u0020parfums\u002030\u0020ml",
'id': '40235',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_glitteraddict_feelingbox_3701429847852_1.jpg?twic=v1',
'old_price': '36.850000',
'final_price': '36.85',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">10,95\u00a0\u20ac<\/span>","paillete":"Paillet\u00e9"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429847852',
'product_name': 'glitter-addict',
'product_id': '40235',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '36.85',
'product_unitprice_tf': '30.71',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429847852',
'product_name': 'glitter-addict',
'product_quantity': '1',
'product_id': '40235',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '36.85',
'product_unitprice_tf': '30.71',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/les-intenses-coffret-3-x-eaux-de-parfum-intenses-50-ml-3701429846800-fr.html')" href="https://www.adopt.com/fr/les-intenses-coffret-3-x-eaux-de-parfum-intenses-50-ml-3701429846800-fr.html" class="product-item category-add-to-cart-form-product-_69301366a66e8 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301366a66e8()" x-defer="intersect" x-init="load()" @product-addtocart-success-40229.window="openAddCartPanel()" @update-prices-40229="updatePrice($event.detail, 40229);" @update-short-description-listing-40229="updateShortDescription($event.detail);" @update-configurable-url-40229="updateUrl($event.detail);" @configurable-selection-changed-40229="updateFlagsData($event.detail);" @update-gallery-40229="updateGallery($event.detail);" @update-gallery-hover-40229="updateGalleryHover($event.detail)" @stock-alert-modal-open-40229="showAlertButton($event)" @stock-alert-modal-close-40229="hideAlertButton($event)" data-sku="3701429846800"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL2NhdGFsb2dzZWFyY2gvcmVzdWx0P3E9Q29mZnJldCtkZStwYXJmdW0mcD0yJmlzX3Njcm9sbD0x/product/40229/" name="category-add-to-cart-form-product-_69301366a66e8" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301366a66e8"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40229" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">20,05 €</span></div> <div class="is_vegan bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Vegan</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40229, {"product_ean":"3701429846800","product_name":"les-intenses","product_id":"40229","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":39.8,"product_unitprice_tf":"33.17","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40229"><template x-if="!isInWishlist(40229)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40229)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_lesintenses_3x50ml_3701429846800_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_lesintenses_3x50ml_3701429846800_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Les Intenses" title="Les Intenses"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_lesintenses_3x50ml_3701429846800_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_lesintenses_3x50ml_3701429846800_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_LESINTENSES_3X50ML_3701429846800_1.jpg" title="STILL_MULTI_LESINTENSES_3X50ML_3701429846800_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Les Intenses <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Coffret 3 x eaux de parfum intenses 50 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Coffret 3 x eaux de parfum intenses 50 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40229' }); window.location.href = 'https://www.adopt.com/fr/les-intenses-coffret-3-x-eaux-de-parfum-intenses-50-ml-3701429846800-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (28)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="flex gap-2.25 items-baseline"><div class="text-tiny leading-tightened font-semibold tracking-spaced-md text-anthracite-400 line-clamp-3 md:line-clamp-none">Bergamote, Feuille de poirier, Sauge sclarée, Bois de cèdre</div></div> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40229' }); window.location.href = 'https://www.adopt.com/fr/les-intenses-coffret-3-x-eaux-de-parfum-intenses-50-ml-3701429846800-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (28)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">59,85 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40229" data-price-box="product-id-40229"> <span class="price-container price-final_price tax weee"> <span id="product-price-40229" data-price-amount="39.8" data-price-type="finalPrice" class="price-wrapper" ><span class="price">39,80 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">59,85 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40229" data-price-box="product-id-40229"> <span class="price-container price-final_price tax weee"> <span id="product-price-40229" data-price-amount="39.8" data-price-type="finalPrice" class="price-wrapper" ><span class="price">39,80 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301366a66e8() {
return {
currentProductData: {
'sku': '3701429846800',
'name': 'Les\u0020Intenses',
'short_description': "Coffret\u00203\u0020x\u0020eaux\u0020de\u0020parfum\u0020intenses\u002050\u0020ml",
'id': '40229',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_lesintenses_3x50ml_3701429846800_1.jpg?twic=v1',
'old_price': '39.800000',
'final_price': '39.8',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">20,05\u00a0\u20ac<\/span>","is_vegan":"Vegan"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429846800',
'product_name': 'les-intenses',
'product_id': '40229',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '39.8',
'product_unitprice_tf': '33.17',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429846800',
'product_name': 'les-intenses',
'product_quantity': '1',
'product_id': '40229',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '39.8',
'product_unitprice_tf': '33.17',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/pochette-smartphone-pochette-smartphone-3-x-eaux-de-parfums-30-ml-3701429848057-fr.html')" href="https://www.adopt.com/fr/pochette-smartphone-pochette-smartphone-3-x-eaux-de-parfums-30-ml-3701429848057-fr.html" class="product-item category-add-to-cart-form-product-_69301366d61e9 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301366d61e9()" x-defer="intersect" x-init="load()" @product-addtocart-success-40250.window="openAddCartPanel()" @update-prices-40250="updatePrice($event.detail, 40250);" @update-short-description-listing-40250="updateShortDescription($event.detail);" @update-configurable-url-40250="updateUrl($event.detail);" @configurable-selection-changed-40250="updateFlagsData($event.detail);" @update-gallery-40250="updateGallery($event.detail);" @update-gallery-hover-40250="updateGalleryHover($event.detail)" @stock-alert-modal-open-40250="showAlertButton($event)" @stock-alert-modal-close-40250="hideAlertButton($event)" data-sku="3701429848057"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS9wYXJmdW0tZmVtbWUvY29mZnJldC1wYXJmdW0tZmVtbWUuaHRtbA~~/product/40250/" name="category-add-to-cart-form-product-_69301366d61e9" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301366d61e9"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="40250" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 m-1.25 z-10 flex flex-col gap-1.25"> <div class="bundle_real_value bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Economisez <span class="price">5,90 €</span></div> <div class="is_vegan bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none">Vegan</div></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 40250, {"product_ean":"3701429848057","product_name":"pochette-smartphone","product_id":"40250","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":29.95,"product_unitprice_tf":"24.96","product_discount_ati":0,"product_discount_tf":0} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="40250"><template x-if="!isInWishlist(40250)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(40250)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_pochettesmartphone_3x30ml_3701429848057_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_pochettesmartphone_3x30ml_3701429848057_2.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Pochette Smartphone" title="Pochette Smartphone"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_multi_pochettesmartphone_3x30ml_3701429848057_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_multi_pochettesmartphone_3x30ml_3701429848057_1.jpg" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_MULTI_POCHETTESMARTPHONE_3X30ML_3701429848057_1.jpg" title="STILL_MULTI_POCHETTESMARTPHONE_3X30ML_3701429848057_1.jpg" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Pochette Smartphone <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Pochette smartphone 3 x eaux de parfums 30 ml </span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Pochette smartphone 3 x eaux de parfums 30 ml </div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40250' }); window.location.href = 'https://www.adopt.com/fr/pochette-smartphone-pochette-smartphone-3-x-eaux-de-parfums-30-ml-3701429848057-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (20)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '40250' }); window.location.href = 'https://www.adopt.com/fr/pochette-smartphone-pochette-smartphone-3-x-eaux-de-parfums-30-ml-3701429848057-fr.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (20)</span> </div></div> <div class="product-item-details pt-2.5"></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="lg:hidden block w-full text-xxs lg:text-xs text-anthracite-400 font-medium md:px-4 mb-2"><div>Valeur réelle : <span class="price">35,85 €</span></div></div> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40250" data-price-box="product-id-40250"> <span class="price-container price-final_price tax weee"> <span id="product-price-40250" data-price-amount="29.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">29,95 €</span></span> </span> </div></span> <div class="btn-add-to-cart__real-value hidden lg:block text-anthracite text-xxs font-medium tracking-[-0.01em] flex justify-start md:justify-end transition-all duration-300"><div class="flex">Valeur réelle : <span class="price">35,85 €</span></div></div></div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 lg:min-h-[3.75rem] min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="40250" data-price-box="product-id-40250"> <span class="price-container price-final_price tax weee"> <span id="product-price-40250" data-price-amount="29.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">29,95 €</span></span> </span> </div></span></button> </div> </div></div></div></form> <script>
function initItemProduct_69301366d61e9() {
return {
currentProductData: {
'sku': '3701429848057',
'name': 'Pochette\u0020Smartphone',
'short_description': "Pochette\u0020smartphone\u00203\u0020x\u0020eaux\u0020de\u0020parfums\u002030\u0020ml\u0020",
'id': '40250',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_multi_pochettesmartphone_3x30ml_3701429848057_1.jpg?twic=v1',
'old_price': '29.950000',
'final_price': '29.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: {"bundle_real_value":"Economisez <span class=\"price\">5,90\u00a0\u20ac<\/span>","is_vegan":"Vegan"},
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '3701429848057',
'product_name': 'pochette-smartphone',
'product_id': '40250',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '29.95',
'product_unitprice_tf': '24.96',
'product_discount_ati': '0',
'product_discount_tf': '0',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '3701429848057',
'product_name': 'pochette-smartphone',
'product_quantity': '1',
'product_id': '40250',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'coffret-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '29.95',
'product_unitprice_tf': '24.96',
'product_discount_ati': '0',
'product_discount_tf': '0'
}]
})
}
}
}</script></a> <a @click="clickProductLink('https://www.adopt.com/fr/midnight-for-her-eau-de-parfum-pailletee.html')" href="https://www.adopt.com/fr/midnight-for-her-eau-de-parfum-pailletee.html" class="product-item category-add-to-cart-form-product-_69301b16c55a0 flex flex-col pb-6 w-full border border-transparent bg-white transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="initItemProduct_69301b16c55a0()" x-defer="intersect" x-init="load()" @product-addtocart-success-38287.window="openAddCartPanel()" @update-prices-38287="updatePrice($event.detail, 38287);" @update-short-description-listing-38287="updateShortDescription($event.detail);" @update-configurable-url-38287="updateUrl($event.detail);" @configurable-selection-changed-38287="updateFlagsData($event.detail);" @update-gallery-38287="updateGallery($event.detail);" @update-gallery-hover-38287="updateGalleryHover($event.detail)" @stock-alert-modal-open-38287="showAlertButton($event)" @stock-alert-modal-close-38287="hideAlertButton($event)" data-sku="8883701429820688"> <form method="post" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1sP2VtYWlsPWNobG9lX2R1MjIlNDBsaXZlLmZyJmZpcnN0bmFtZT1DaGxvJUMzJUE5JnN1cm5hbWU9RGV2YWxsYW4~/product/38287/" name="category-add-to-cart-form-product-_69301b16c55a0" class="flex flex-col flex-1 category-add-to-cart-form-product category-add-to-cart-form-product-_69301b16c55a0"> <input name="form_key" type="hidden" :value="hyva.getFormKey()" /><input type="hidden" name="product" value="38287" /> <div class="link product cursor-pointer photo product-item-photo block mx-auto w-full aspect-square bg-lavender-400" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-lavender-400': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <div class="product-item-flap absolute left-0 p-2 z-10 flex flex-col gap-1.25"><template x-if="flagsData"><template x-for="flag in Object.keys(flagsData)"><div x-html="flagsData[flag].icon + ' ' + flagsData[flag].label" :class="{ [flag]: true, ' bg-white rounded flex items-center gap-1 w-fit font-semibold border border-lavender-lightest': true, ' text-xs-tiny md:text-smaller text-pink px-2 py-1.5 leading-none': flag === 'percent_promo', ' text-[9px] md:text-xs-tiny uppercase md:tracking-spaced-xs tracking-spaced-[0.95px] md:px-2 px-1.25 md:py-[3px] py-[2px] leading-none': flag !== 'percent_promo' }"></div></template></template></div> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist( 38287, {"product_ean":"8883701429820688","product_name":"midnight-for-her-","product_id":"38287","product_family":"parfum","product_rayon":"parfum-femme","product_size":"","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":"9.96","product_discount_ati":-11.95,"product_discount_tf":-11.95} )" aria-label="Ajouter à ma liste d’envie" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:p-4 p-2 z-10" data-wishlist="38287"><template x-if="!isInWishlist(38287)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-5 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template><template x-if="isInWishlist(38287)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewbox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img">
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/>
<title/></svg>
</template></button> <img loading="lazy" class="hover-image w-full absolute top-0 left-0 inset-0 m-auto" src="https://adopt.twic.pics/media/catalog/product/s/t/still_perf_midnightforher_30ml_3701429822941_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_perf_midnightforher_30ml_3701429822941_1.png" data-twic-transform="auto/max=614" data-twic-src-step="50" alt="Midnight for her" title="Midnight for her"> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_perf_midnightforher_30ml_3701429822941_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_perf_midnightforher_30ml_3701429822941_1.png" data-twic-transform="auto/max=614" data-twic-src-step="50" width="256px" height="286px" alt="STILL_PERF_MIDNIGHTFORHER_30ML_3701429822941_1.png" title="STILL_PERF_MIDNIGHTFORHER_30ML_3701429822941_1.png" loading="lazy" class="w-full main-image relative transition duration-300 aspect-square h-auto group-hover:opacity-0" :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col px-2 py-3.75 pb-0 gap-3 md:px-4.5 md:py-5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-1 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><h3 class="text-anthracite font-semibold text-xs md:text-base leading-tightened md:leading-tightened">Midnight for Her <span class="w-0 absolute h-0 overflow-hidden inline-block"> - Eau de parfum pailletée 30 ml</span> </h3></div><div class="uppercase font-semibold text-pink text-very-tiny md:text-tiny tracking-spaced-lg leading-[1.2] flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Eau de parfum pailletée 30 ml</div></div><div class="product-item-review empty-hidden hidden md:block cursor-pointer md:order-1" aria-hidden="true"><!-- --> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '38287' }); window.location.href = 'https://www.adopt.com/fr/midnight-for-her-eau-de-parfum-pailletee.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (4964)</span> </div><!-- --></div></div></div><div class="flex flex-col gap-1.5"> <div class="product-item-review empty-hidden md:hidden cursor-pointer md:order-1"> <div class="rating-stars-category flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '38287' }); window.location.href = 'https://www.adopt.com/fr/midnight-for-her-eau-de-parfum-pailletee.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-anthracite-500 w-3 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
<span class="text-xs-tiny leading-tightened font-semibold text-anthracite-500 underline underline-offset-2"> (4964)</span> </div></div> <div class="product-item-details pt-2.5"> <div x-data='{ ...initConfigurableOptions(38287, {"attributes":{"153":{"id":"153","code":"contenance","label":"Contenance","options":[{"id":"350","label":"30 ml","products":["40265"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["40263"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"40265":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"40263":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":"\u202f","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38287","chooseText":"Choisissez une option...","images":[],"index":{"40265":{"153":"350"},"40263":{"153":"351"}},"salable":{"153":{"350":["40265"],"351":["40263"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"base","sku":{"40265":"3701429822941","40263":"3701429816766"},"short_description":{"40265":"Eau de parfum paillet\u00e9e 30 ml","40263":"Eau de parfum paillet\u00e9e 100 ml"},"flags_data":{"40265":{"paillete":{"label":"Paillet\u00e9","icon":""},"publication_at":{"label":"Nouveau","icon":""}},"40263":{"paillete":{"label":"Paillet\u00e9","icon":""},"publication_at":{"label":"Nouveau","icon":""}}}}), ...initSwatchOptions({"153":{"350":{"type":"0","value":null,"label":"30 ml"},"351":{"type":"0","value":null,"label":"100 ml"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}}), ...{ optionConfig: {"attributes":{"153":{"id":"153","code":"contenance","label":"Contenance","options":[{"id":"350","label":"30 ml","products":["40265"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["40263"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"40265":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"40263":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":"\u202f","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38287","chooseText":"Choisissez une option...","images":[],"index":{"40265":{"153":"350"},"40263":{"153":"351"}},"salable":{"153":{"350":["40265"],"351":["40263"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"base","sku":{"40265":"3701429822941","40263":"3701429816766"},"short_description":{"40265":"Eau de parfum paillet\u00e9e 30 ml","40263":"Eau de parfum paillet\u00e9e 100 ml"},"flags_data":{"40265":{"paillete":{"label":"Paillet\u00e9","icon":""},"publication_at":{"label":"Nouveau","icon":""}},"40263":{"paillete":{"label":"Paillet\u00e9","icon":""},"publication_at":{"label":"Nouveau","icon":""}}}}, mediaCallback: "https\u003A\u002F\u002Fwww.adopt.com\u002Ffr\u002Fswatches\u002Fajax\u002Fmedia", changeDisabledOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0, productId) { if (value === "") { this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { if (opt !== optionId) { newSelection[opt] = val; } return newSelection; }, []); } else { this.selectedValues[optionId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-open-" + parentId, { detail: {productId: this.productIndex }})); }, changeOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) { this.selectedValues[optionId] = value; this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } updateUrl && attributeCode && optionLabel && this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "configurable-selection-changed-" + this.productId, { detail: { productId: this.productIndex, flagsData: this.optionConfig.flags_data ? this.optionConfig.flags_data[this.productIndex] : false, } } ) ); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-close-" + parentId, { productId: this.productIndex })); }, updateUrl(attributeCode, optionLabel) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-configurable-url-" + this.productId, { detail: { attribute_code: attributeCode, option_label: optionLabel.trim().replace(/ /g,"+") } } ) ); }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updatePrice(priceData) { const finalPriceElement = this.$el.querySelectorAll(".product-item-price"); finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(priceData.finalPrice.amount); }) }, updateShortDescription() { let shortDescValue = this.optionConfig.short_description ? this.optionConfig.short_description[this.productIndex] : false; if (shortDescValue) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-short-description-listing-" + this.productId, { detail: Object.assign( shortDescValue ) } ) ) } }, updateGallery() { if (!this.productIndex) { return; } fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, { method: "GET", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }).then(response => { return response.json() }).then(data => { if (data.errors) { console.warn(data.errors); } else { const image = data && data.medium; if (image) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-38287", {detail: image} ) ); } const hoverImage = data && data.hover_image; if (hoverImage) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-hover-38287", {detail: hoverImage} ) ); } } }).catch(error => { console.warn(error) }); }, preselectDefaultContenance(orderedOptionsIds, skipUpdateGallery = false) { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); let contenanceParam = urlQueryParams.get("contenance"); if (contenanceParam !== null) { return; } Object.values(this.optionConfig.attributes).map(attribute => { let found = false; let hasSpecialPriceFound = false; let optionId; let optionLabel; let isOptionFoundDisabled = false; Object.values(orderedOptionsIds).map(orderedOptionId => { Object.values(attribute.options).map(option => { if ((option.disabled === true) || (typeof this.optionConfig.optionPrices[option.products[0]] === "undefined")) { return; } let hasSpecialPrice = this.optionConfig.optionPrices[option.products[0]]?.finalPrice.amount !== this.optionConfig.optionPrices[option.products[0]]?.oldPrice.amount; if (!hasSpecialPriceFound && hasSpecialPrice && option.label === orderedOptionId) { found = true; hasSpecialPriceFound = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } if ((found === false) && option.label === orderedOptionId) { found = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); }); if (attribute.code === "contenance") { if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } else { this.changeOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } } else { this.changeOption(attribute.id, optionId); } }); }, preselectQuerystringItems() { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); Object.values(this.optionConfig.attributes).map(attribute => { let isOptionFoundDisabled = false; if (urlQueryParams.get(attribute.code) !== null) { let optionId = urlQueryParams.get(attribute.code); let found = false; Object.values(attribute.options).map(option => { if (found === false && option.label === optionId) { optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, false, attribute.code, optionLabel, true, 38287, this.productIndex); } else { this.changeOption(attribute.id, optionId); } } }); }, mouseDown: false, startX: 0, maxScroll: 0, scrollLeft: null, slider: null, show: false, scrollEvents: { ["@mousedown"](e) { this.slider = e.target.closest(".snap"); if (!this.slider) { return; } this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth; this.startX = e.pageX - this.slider.offsetLeft; this.scrollLeft = this.slider.scrollLeft; this.mouseDown = true; }, ["@mouseout.self"]() { this.mouseDown = false; }, ["@mouseup"]() { this.mouseDown = false; }, ["@mousemove"](e) { e.preventDefault(); if (!this.mouseDown) { return; } const x = e.pageX - this.slider.offsetLeft; const scroll = x - this.startX; const scrollLeft = this.scrollLeft - scroll; if (scrollLeft > this.maxScroll) { this.slider.scrollLeft = this.maxScroll; return } this.slider.scrollLeft = this.scrollLeft - scroll; }, ["@onselectstart"]() { return false; } }, resizeEvent() { Array.from(this.$el.querySelectorAll(".snap")).forEach(slider => { slider.scrollLeft = 0; }) }, openSwitch() { this.show = !this.show; }, isLoaded: false, moreSwatch: false, isMobile: window.innerWidth < 768, heightSwatch: 0, openSwatch($refs) { const wrapper = this.$el.parentElement.querySelector(".swatch-attribute-wrapper"); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(this.show) { wrapper.style.height = height + "px"; this.show = false; } else { wrapper.style.height = "auto"; this.show = true; } }, initIfMoreSwatch($refs) { let thisParent = this; let timer; timer = setInterval(() => { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { clearInterval(timer); wrapper.dataset.baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(thisParent.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(Math.floor(wrapper.getBoundingClientRect().height) > height) { thisParent.moreSwatch = true; wrapper.style.height = height + "px"; } } }, 500); }, checkIfMoreSwatch() { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { wrapper.style.height = ""; const baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(baseHeight > height) { this.moreSwatch = true; wrapper.style.height = height + "px"; } else { this.moreSwatch = false; } } } } }' x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect(); initIfMoreSwatch($refs); isLoaded = true" @select-default-contenance="preselectDefaultContenance($event.detail.contenance, $event.detail.skipUpdateGallery);" @resize.window="resizeEvent(); isMobile = window.outerWidth < 768; checkIfMoreSwatch()" class="grow-[1] relative swatches-container" > <div class="swatch-attribute contenance"><div class="w-full flex !flex-nowrap overflow-hidden swatch-attribute-options -ml-1 w-full justify-between gap-1.25 items-center"><div class="swatch-attribute-wrapper w-full flex flex-wrap gap-y-1 m-0 overflow-y-hidden transition-all items-center contenance" :class="{ 'gap-x-0.5': ('contenance' != 'contenance'), 'gap-x-1': (isProductPage && !isProductUpSell), 'gap-x-0 md:gap-x-1': ('contenance' == 'contenance') && (isCategoryPage || isProductRelated || isProductItemWidget || isProductRitual), '!p-0': isProductUpSell }" role="radiogroup" x-bind="scrollEvents" x-ref="swatchWrapper38287" data-swatch-mobile="30" data-swatch-desktop="38" data-swatch-code="contenance" ><label class="sr-only" for="attributecontenance"><span> Contenance</span></label> <template x-for="(item, index) in optionConfig.attributes[153]?.options" :key="item.id"> <div class="pill-radio-container" :style="isMobile ? `width: calc(100% / ${attribueOptionsLength});` : ``" :class="{'hidden': (typeof item.disabled === 'undefined') && item.products.length === 0 , 'w-full': isProductPage && !isProductUpSell, 'p-1': optionConfig.attributes[153].code === 'adopt_swatch_color' || optionConfig.attributes[153].code === 'adopt_color', 'flex-1': optionConfig.attributes[153].code === 'contenance' && isProductPage}"> <template x-if="(typeof item.disabled === 'undefined') && item.products.length > 0"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38287-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(153, $event.target.value, false, 'contenance', item.label, true, 38287);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38287-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity flex flex-row-reverse gap-4 bg-lavender-300 text-anthracite-400" ><div class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9 font-semibold': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs"><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></div><div x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewbox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img">
<mask id="path-1-inside-1_4535_16993" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/>
<path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993)"/>
<rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewbox="0 0 16 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17007" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/>
<path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007)"/>
<rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewbox="0 0 17 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17021" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/>
<path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021)"/>
<rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template></div></label></div></template><template x-if="(typeof item.disabled !== 'undefined') && item.disabled === true"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38287-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeDisabledOption(153, $event.target.value, false, 'contenance', item.label, true, 38287);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38287-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity out-of-stock flex flex-row-reverse gap-4 !text-[#9691A1] !bg-[#EEECF1]" ><span class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span class="line-through" :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9 font-semibold': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs" ><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></span> <span x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewbox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img">
<mask id="path-1-inside-1_4535_16993_2" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/>
<path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_2)"/>
<rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewbox="0 0 16 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17007_2" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/>
<path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_2)"/>
<rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewbox="0 0 17 47" fill="none" class="h-full" role="img">
<mask id="path-1-inside-1_4535_17021_2" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/>
<path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_2)"/>
<rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/>
<rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/>
<title/></svg>
</div></template></template></span></label></div></template></div></template></div><button @click.prevent="openSwatch($refs)" x-ref="swatchButton" :class="{ 'hidden': !moreSwatch }" class="hidden relative top-px border rounded-full xl:w-6.5 xl:h-6.5 w-5.5 h-5.5 flex items-center justify-center bg-white transition duration-300 shrink-0 border-lavender-400 hover:border-anthracite-400"><span :class="{'rotate-180': show}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewbox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="xl:w-2.5 xl:h-auto w-2 h-2" width="9" height="5" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/>
<title/></svg>
</span></button></div></div> <template x-if="isTooltipVisible()"><div class="absolute" :style="getTooltipPosition()" ><div class="shadow-lg"><div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-tiny md:text-xxs leading-tight text-black transform -translate-x-1/2 -translate-y-full bg-white rounded-xl border-[2px] border-lavender-400 text-center" ><template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)"><div class="inline-block border shadow-sm border-container rounded-tl-xl rounded-tr-xl" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)" ></div></template><span class="text-xxs md:text-smaller font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()" ></span></div><svg class="absolute z-10 w-10 h-10 text-white transform -translate-x-1/5 -translate-y-11 fill-current stroke-current filter drop-shadow-[0_3px_0_rgb(217,218,255)] -mt-0.5 -ml-2" viewbox="0 0 320 512"><path d="m302.7 226.1-128.6 128.7c-7.8 7.8-20.5 7.8-28.3 0l-128.6-128.7z"/></svg></div></div></template> </div></div></div> <div class="product-item-bottom place-content-end grow-[1] pt-2"><div class="flex flex-col justify-between items-center saleable"> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><div class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewbox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/>
<title/></svg>
<span class="leading-none text-sm font-semibold">Ajouter</span></div><div class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-sm md:text-smaller font-semibold catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38287" data-price-box="product-id-38287"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></span> </div></button> <button type="submit" class="added-to-cart hidden absolute bottom-0 product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit px-4.25 min-h-[3.125rem] py-0 leading-none" aria-label="J'achète!"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewbox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/>
<title/></svg>
<span class="leading-none text-xs">Ajouté</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38287" data-price-box="product-id-38287"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></span></button> <div class="hidden product-item-alertstock link w-full btn btn-add-to-cart group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group min-h-[3.125rem] py-0 px-4.25" aria-label="M'alerter"><span class="leading-none text-xs">M'alerter</span> <div class="block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38287" data-price-box="product-id-38287"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">11,95 €</span></span> </span> </div></div></div></div> </div></div></div></form> <script>
function initItemProduct_69301b16c55a0() {
return {
currentProductData: {
'sku': '8883701429820688',
'name': 'Midnight\u0020for\u0020Her\u0020',
'short_description': "Eau\u0020de\u0020parfum\u0020paillet\u00E9e\u002030\u0020ml",
'id': '38287',
'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_perf_midnightforher_30ml_3701429822941_1.png?twic=v1',
'old_price': '0',
'final_price': '11.95',
},
showStickyBar: false,
selectedItem: false,
priceTemplate: '',
flagsData: [],
isLoaded: false,
isProductUpSell: false,
isProductCrossSell: false,
isProductRelated: false,
isProductItemWidget: false,
isProductRitual: false,
load() {
this.isLoaded = true;
this.$nextTick(() => {
this.$el.querySelector('.swatches-container')?.dispatchEvent(
new CustomEvent(
'select-default-contenance', {
detail: {
contenance: {
1: '30 ml',
2: '50 ml',
3: '100 ml',
4: '10 ml',
},
skipUpdateGallery: true
}
}
)
);
});
},
addToCart() {
this.sendProductDetailsAddToCartEvent();
},
openAddCartPanel() {
this.$dispatch('last-added-cart-pannel', this.currentProductData);
},
updateFlagsData(eventData) {
this.flagsData = eventData.flagsData;
},
updateGallery(imageUrl) {
const mainImageElement = this.$el.querySelector('.main-image');
mainImageElement.src = imageUrl;
const url = new URL(imageUrl);
mainImageElement.dataset.twicSrc = 'image:' + url.pathname;
this.currentProductData.image = imageUrl;
},
updateGalleryHover(imageUrl) {
const hoverImageElement = this.$el.querySelector('.hover-image');
hoverImageElement.src = imageUrl;
const url = new URL(imageUrl);
hoverImageElement.dataset.twicSrc = 'image:' + url.pathname;
},
showAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.remove('hidden');
addButton?.classList.add('hidden');
},
hideAlertButton() {
const alertButton = this.$el.querySelector('.product-item-alertstock');
const addButton = this.$el.querySelector('.product-item-addtocart');
alertButton.classList.add('hidden');
addButton?.classList.remove('hidden');
},
updatePrice(priceData, productId) {
const finalPriceElement = this.$el.querySelectorAll('.product-item-price');
let finalPrice = priceData.finalPrice.amount
let oldPrice = priceData.oldPrice.amount
if (finalPrice === oldPrice) {
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerText = hyva.formatPrice(finalPrice);
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
return;
}
let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">';
priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Prix Spécial</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>';
priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Prix normal</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">';
priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>';
priceTemplate += '</div>';
finalPriceElement.forEach((arrayElement, index) => {
arrayElement.innerHTML = priceTemplate;
});
this.currentProductData.final_price = finalPrice;
this.currentProductData.old_price = oldPrice;
},
updateUrl(eventData) {
if (eventData.option_label.includes('30+')) {
this.$el.href = this.$el.href.split('?')[0];
} else {
this.$el.href = this.$el.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label;
}
},
updateShortDescription(value) {
this.$el.querySelector('.product-item-short').innerText = value;
this.currentProductData.short_description = value.toString();
},
clickProductLink() {
this.sendProductClickEvent()
},
sendProductClickEvent() {
window.dataLayer?.push({
'event': 'productClic',
'productClic': [{
'product_ean': '8883701429820688',
'product_name': 'midnight-for-her-',
'product_id': '38287',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '11.95',
'product_unitprice_tf': '9.96',
'product_discount_ati': '-11.95',
'product_discount_tf': '-11.95',
'list': ''
}]
})
},
sendProductDetailsAddToCartEvent() {
window.dataLayer?.push({
'event': 'addToCart',
'list': 'product list',
'productaddToCart': [{
'product_ean': '8883701429820688',
'product_name': 'midnight-for-her-',
'product_quantity': '1',
'product_id': '38287',
'product_family': 'parfum',
'product_rayon': 'parfum-femme',
'product_season': 'eau-de-parfum',
'product_size': '',
'product_color': '',
'product_unitprice_ati': '11.95',
'product_unitprice_tf': '9.96',
'product_discount_ati': '-11.95',
'product_discount_tf': '-11.95'
}]
})
}
}
}</script></a> </div></div> <div id="am-page-count" style="display: none">13</div></section> <script>
window.dataLayer?.push({
'event': 'productImpressions',
'productImpressions': [{"position":1,"product_ean":"3701429845315","product_name":"la-grande-roue-des-merveilles","product_id":"39846","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":74.95,"product_unitprice_tf":62.458333333333,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":2,"product_ean":"3701429849603","product_name":"le-carrousel-enchant\u00e9","product_id":"40221","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":94.95,"product_unitprice_tf":79.125,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":3,"product_ean":"3701429845759","product_name":"coffret-collector-homme","product_id":"39848","product_family":"parfum","product_rayon":"parfum-homme","product_color":"","product_unitprice_ati":64.95,"product_unitprice_tf":54.125,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":4,"product_ean":"3701429847142","product_name":"calendrier-de-l-apr\u00e8s","product_id":"39849","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":32.95,"product_unitprice_tf":27.458333333333,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":5,"product_ean":"3701429847975","product_name":"carrousel-caract\u00e8re","product_id":"40241","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":53.95,"product_unitprice_tf":44.958333333333,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":6,"product_ean":"3701429847951","product_name":"le-carrousel-\u00e0-parfums","product_id":"40240","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":119.95,"product_unitprice_tf":99.958333333333,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":7,"product_ean":"8883701429850777","product_name":"joalia","product_id":"40714","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":9.9583333333333,"product_discount_ati":-11.95,"product_discount_tf":-11.95,"list":""},{"position":8,"product_ean":"rupture-jeu","product_name":"rupture-jeu","product_id":"39084","product_family":"","product_rayon":"","product_color":"","product_unitprice_ati":0,"product_unitprice_tf":0,"product_discount_ati":"0.00","product_discount_tf":"0.00","list":""},{"position":9,"product_ean":"3701429847791","product_name":"joalia","product_id":"40232","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":13.95,"product_unitprice_tf":11.625,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":10,"product_ean":"3701429845797","product_name":"joalia","product_id":"39855","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":15.95,"product_unitprice_tf":13.291666666667,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":11,"product_ean":"rupture-joallia","product_name":"rupture-joallia","product_id":"40813","product_family":"","product_rayon":"","product_color":"","product_unitprice_ati":0,"product_unitprice_tf":0,"product_discount_ati":"0.00","product_discount_tf":"0.00","list":""},{"position":12,"product_ean":"3701429849269","product_name":"joalia","product_id":"39868","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":21.95,"product_unitprice_tf":18.291666666667,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":13,"product_ean":"3701429845490","product_name":"joalia","product_id":"39835","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":28.95,"product_unitprice_tf":24.125,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":14,"product_ean":"3701429847494","product_name":"joalia","product_id":"40209","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":34.95,"product_unitprice_tf":29.125,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":15,"product_ean":"3701429847050","product_name":"joalia","product_id":"39895","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":39.95,"product_unitprice_tf":33.291666666667,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":16,"product_ean":"8883701429849542","product_name":"wonderful","product_id":"40762","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":9.9583333333333,"product_discount_ati":-11.95,"product_discount_tf":-11.95,"list":""},{"position":17,"product_ean":"8883701429831608","product_name":"wonderful","product_id":"39085","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":9.9583333333333,"product_discount_ati":-11.95,"product_discount_tf":-11.95,"list":""},{"position":18,"product_ean":"3701429849993","product_name":"wonderful","product_id":"40272","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":5.95,"product_unitprice_tf":4.9583333333333,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":19,"product_ean":"3701429846213","product_name":"wonderful","product_id":"39892","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":7.95,"product_unitprice_tf":6.625,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":20,"product_ean":"3701429847753","product_name":"wonderful","product_id":"40230","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":13.95,"product_unitprice_tf":11.625,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":21,"product_ean":"3701429834210","product_name":"wonderful","product_id":"38895","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":15.95,"product_unitprice_tf":13.291666666667,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":22,"product_ean":"rupture-onyx","product_name":"rupture-onyx","product_id":"40814","product_family":"","product_rayon":"","product_color":"","product_unitprice_ati":0,"product_unitprice_tf":0,"product_discount_ati":"0.00","product_discount_tf":"0.00","list":""},{"position":23,"product_ean":"3701429848118","product_name":"wonderful","product_id":"40252","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":18.95,"product_unitprice_tf":15.791666666667,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":24,"product_ean":"3701429834678","product_name":"wonderful","product_id":"38917","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":21.95,"product_unitprice_tf":18.291666666667,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":25,"product_ean":"3701429835484","product_name":"wonderful","product_id":"39150","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":29.95,"product_unitprice_tf":24.958333333333,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":26,"product_ean":"3701429847418","product_name":"wonderful","product_id":"40205","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":34.95,"product_unitprice_tf":29.125,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":27,"product_ean":"rupture-calendriers","product_name":"rupture-calendriers","product_id":"39571","product_family":"","product_rayon":"","product_color":"","product_unitprice_ati":0,"product_unitprice_tf":0,"product_discount_ati":"0.00","product_discount_tf":"0.00","list":""},{"position":28,"product_ean":"3701429835705","product_name":"wonderful","product_id":"39023","product_family":"parfum","product_rayon":"parfum-femme","product_color":"07 Mademoiselle frivole","product_unitprice_ati":39.95,"product_unitprice_tf":33.291666666667,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":29,"product_ean":"3701429847852","product_name":"glitter-addict","product_id":"40235","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":36.85,"product_unitprice_tf":30.708333333333,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":30,"product_ean":"3701429846800","product_name":"les-intenses","product_id":"40229","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":39.8,"product_unitprice_tf":33.166666666667,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":31,"product_ean":"3701429848057","product_name":"pochette-smartphone","product_id":"40250","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":29.95,"product_unitprice_tf":24.958333333333,"product_discount_ati":0,"product_discount_tf":0,"list":""},{"position":32,"product_ean":"8883701429820688","product_name":"midnight-for-her-","product_id":"38287","product_family":"parfum","product_rayon":"parfum-femme","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":9.9583333333333,"product_discount_ati":-11.95,"product_discount_tf":-11.95,"list":""}] });</script> <form x-data="nostoRecobuy()" action="https://www.adopt.com/fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuYWRvcHQuY29tL2ZyL3BhcmZ1bS5odG1s/" method="post" id="nosto_addtocart_form"><input name="form_key" type="hidden" value="D0IPC8luD2ezrchz" /></form><!--suppress JSUnresolvedVariable, JSValidateTypes, JSUnresolvedFunction --><script>
window.Nosto = nostoRecobuy();
function nostoRecobuy() {
'use strict';
const Recobuy = {};
Recobuy.addProductToCart = function (productId, element, quantity = 1) {
const productData = {
productId: productId,
skuId: productId,
quantity: quantity
};
return Recobuy.addSkuToCart(productData, element);
};
Recobuy.addMultipleProductsToCart = function (products, element) {
if (Array.isArray(products)) {
return products.reduce(function(acc, product) {
return acc.then(function() {
return Recobuy.addSkuToCart(product, element)
})
} , Promise.resolve())
} else {
Promise.reject(new Error("Products is not type array"))
}
};
Recobuy.addSkuToCart = function (product, element) {
const quantity = product.quantity || 1;
const url = document.querySelector("#nosto_addtocart_form").getAttribute("action");
const formKey = document.querySelector("#nosto_addtocart_form > input[name='form_key']").getAttribute("value");
return new Promise(function (resolve, reject) {
var formKey = document.querySelector('input[name=form_key]').value;
fetch(url, {
form_key: formKey,
qty: quantity,
product: product.productId,
sku: product.skuId
}).then(function (response) {
Recobuy.sendCartEvent(element, product.productId)
return resolve();
}).catch((error) => {
return reject()
});
})
};
Recobuy.sendCartEvent = function (element, productId) {
if (typeof element === 'object' && element) {
const slotId = this.resolveContextSlotId(element);
if (slotId) {
nostojs(function (api) {
api.recommendedProductAddedToCart(productId, slotId);
});
}
}
}
Recobuy.resolveContextSlotId = function (element) {
const m = 20;
let n = 0;
let e = element;
while (typeof e.parentElement !== "undefined" && e.parentElement) {
++n;
e = e.parentElement;
if (e.getAttribute('class') === 'nosto_element' && e.getAttribute('id')) {
return e.getAttribute('id');
}
if (n >= m) {
return false;
}
}
return false;
};
return Recobuy;
};</script> <script>
'use strict';
function initAmScroll() {
return {
options: {
product_container: '.products.products-grid, .products.products-list, .products-grid.grid',
product_link: '.product-item-link',
footerSelector: '.page-footer'
},
type: 'auto',
is_loading: 0,
next_data_url: "",
prev_data_url: "",
next_data_cache: "",
flag_next_cache: 0,
prev_data_cache: "",
flag_prev_cache: 0,
pageFirst: 1,
pagesCount: 1,
pagesLoaded: [],
currentPage: 1,
last_scroll: 0,
disabled: 0,
additionalHeight: null,
classes: {
loadButton: 'amscroll-load-button',
loadingBlock: 'amscroll-loading-block',
loadingIcon: 'amscroll-loading-icon',
loadingIconSource: '#amscroll-loading-icon-source',
svgPathToFill: 'amscroll-fill-path',
backToTopButton: '#amscroll-back-to-top',
active: '-amscroll-active',
text: 'amscroll-text',
animate: '-amscroll-animate',
pageNumber: 'amscroll-page-num'
},
pageSelector: '[amscroll-page="%1"]',
lastPageSelector: '.amscroll-page, .amscroll-pages',
totalAmountSelector: '.toolbar-amount',
totalNumberSelector: '.toolbar-number',
toolbarSelector: '.toolbar.toolbar-products',
amPageCountSelector: '#am-page-count',
canShowAfter: false,
canShowBefore: false,
pagesBeforeButton: 0,
isReinitialized: false,
afterButton: null,
beforeButton: null,
insertedPages: 0,
afterStepBackData: null,
isBackToTopVisible: false,
backToTopTriggerHeight: 400,
loadingBlock: {
before: {
node: undefined,
visible: false
},
after: {
node: undefined,
visible: false
}
},
/**
* @returns {void}
*/
processInit() {
this.options = {"product_container":".products.products-grid:not(.amasty-banners), .products.product-list-container:not(.amasty-banners)","product_link":".product-item","loadingImage":"https:\/\/www.adopt.com\/static\/version6851\/frontend\/Adopt\/hyva\/fr_FR\/Amasty_Scroll\/images\/loader.svg","pageNumbers":"0","pageNumberContent":"Page #","pageNumberStyle":"button","buttonColor":"#ffffff","buttonColorPressed":"#ffffff","loadingafterTextButton":"Voir plus de produits","loadingbeforeTextButton":"Voir les produits pr\u00e9c\u00e9dents","backToTop":{"enabled":"0","style_desktop":"text","style_mobile":"arrow","color":"#ffffff","styles":"background: #dadada;"},"backToTopText":"Back to Top","current_page":1,"footerSelector":".page-footer","actionMode":"button"};
if (document.querySelectorAll(this.options.product_container).length) {
this._initNodes();
this.initialize();
}
},
/**
* @private
* @returns {void}
*/
_initNodes() {
this.loadButtonElement = document.createElement('button');
this.loadButtonElement.setAttribute('class', 'btn btn-primary block mx-auto ' + this.classes.loadButton);
this.loadButtonElement.setAttribute('style', this.options['loadNextStyle']);
this.loadButtonTextElement = document.createElement('span');
this.loadButtonTextElement.setAttribute('class', this.classes.text);
const loader = document.querySelector(this.classes.loadingIconSource);
const productContainer = document.querySelector(this.options.product_container);
if (!productContainer) {
return;
}
const productContainerParent = productContainer.parentElement;
this.loadingBlock.before.node = productContainerParent.insertBefore(
loader.content.firstElementChild.cloneNode(true),
productContainer
);
this.loadingBlock.after.node = productContainerParent.insertBefore(
loader.content.firstElementChild.cloneNode(true),
productContainerParent.lastChild
);
},
/**
* @returns {void}
*/
initialize() {
this.next_data_cache = "";
this.pagesLoaded = [];
this._initPagesCount();
this.disabled = 1;
if (!this._validate()) {
return;
}
this.disabled = 0;
this.type = this.options['actionMode'];
this.pagesBeforeButton = this.options['pages_before_button'];
this.currentPage = this._getCurrentPage();
this.pagesLoaded.push(this.currentPage);
if (this.type === 'button') {
this._generateButton('before');
this._generateButton('after');
}
this._preloadPages();
this._hideToolbars();
this.initPageStepForwardListener(this.currentPage);
this._pagePositionAfterStepBack();
},
/**
* @private
* @returns {boolean}
*/
_validate() {
switch (true) {
case !this.options['product_container'] || document.querySelectorAll(this.options['product_container']).length === 0 :
console.warn('Please specify "Products Group" DOM selector in module settings.');
return false;
case !this.options['product_link'] || document.querySelectorAll(this.options['product_link']).length === 0 :
console.warn('Please specify "Product Link" DOM selector in module settings.');
return false;
case !this.options['footerSelector'] || document.querySelectorAll(this.options['footerSelector']).length === 0 :
console.warn('Please specify "Footer Selector" DOM selector in module settings.');
return false;
case this.pagesCount <= 1 :
return false;
}
return true;
},
/**
* @private
* @returns {void}
*/
_externalAfterAjax() {
this.insertedPages++;
try {
if (document.getElementsByTagName('head')[0].innerHTML.indexOf('Infortis') > -1) {
document.dispatchEvent('last-swatch-found');
}
if (this.insertedPages < this.pagesBeforeButton) {
return;
}
if (this.type === 'auto' && this.options['origActionMode'] === 'combined') {
this.changeType('button');
}
if (this.type === 'button' && this.options['origActionMode'] === 'combined_button_auto') {
this.changeType('auto');
}
} catch (e) {
console.warn(e);
}
},
/**
* @param {Node} productBlock
* @returns {void}
*/
beforeInsertProductBlock(productBlock) {
},
/**
* @param {string} requestUrl
* @param {callback} successCallback
* @returns {void}
*/
doAjax(requestUrl, successCallback) {
fetch(requestUrl, {
method: "GET",
headers: {
"X-Requested-With": "XMLHttpRequest",
},
})
.then(response => {
if (response.ok) {
return response.json();
} else {
console.warn("GET request failed", response);
this._stop();
}
})
.then(data => {
if (data) {
this.preprocessRawAjaxResponse(successCallback, data);
}
});
},
/**
* @param {callback} successCallback
* @param {Object} response
*/
preprocessRawAjaxResponse(successCallback, response) {
if (typeof response === 'string' || response instanceof String) {
try {
response = JSON.parse(response)
} catch (e) {
return this.handleUnexpectedResponse(response);
}
}
if (response !== null
&& response.hasOwnProperty('categoryProducts')
&& response.hasOwnProperty('currentPage')
&& response.categoryProducts.trim().length !== 0
) {
successCallback.call(this, response);
} else {
this.handleUnexpectedResponse(response);
}
},
/**
* @param {Object} response
*/
handleUnexpectedResponse(response) {
console.warn('Amasty_Scroll: invalid response from server.', {response: response});
this._stop();
},
/**
* @private
* @returns {void}
*/
_initPagesCount() {
const amPager = document.querySelector(this.amPageCountSelector);
let parent;
let childs;
let limit;
let allProducts;
let result;
this.pagesLoaded = [];
if (amPager) {
this.pagesCount = parseInt(amPager.innerHTML);
return;
}
parent = document.querySelectorAll(this.totalAmountSelector)[0];
if (parent) {
childs = parent.querySelectorAll(this.totalNumberSelector);
if (parent && childs.length >= 3) {
limit = document.querySelector('.limiter-options').value;
if (childs[2].textContent > 0 && limit) {
allProducts = childs[2].textContent;
result = Math.ceil(parseInt(allProducts) / parseInt(limit));
if (result > 1) {
this.pagesCount = result;
return;
}
}
}
}
this.pagesCount = 1;
},
/**
* @param {string} type
*/
changeType(type) {
if (this.isReinitialized) {
return;
}
switch (type) {
case 'button':
this.type = 'button';
this.$nextTick(() => {
this._generateButton('before');
this._generateButton('after');
});
break;
case 'auto':
this.type = 'auto';
break;
}
this.isReinitialized = true;
},
/**
* @private
* @returns {void}
*/
_preloadPages() {
const productContainer = document.querySelector(this.options['product_container']);
let pageNumEl;
productContainer.setAttribute('amscroll-page', this.currentPage);
productContainer.classList.add('amscroll-page');
if (this.options['pageNumbers'] === '1') {
pageNumEl = this._generatePageTitle(this.currentPage);
if (pageNumEl) {
productContainer.before(pageNumEl);
}
}
this._preloadPageAfter(this.currentPage);
this._preloadPageBefore(this.currentPage);
},
/**
* @returns {number}
* @private
*/
_getCurrentPage() {
let currentPage = parseInt(this.options['current_page']);
if (currentPage > this.pagesCount) {
currentPage = this.pagesCount;
}
return currentPage;
},
/**
* @private
* @param {number} page
* @returns {void}
*/
_preloadPageAfter(page) {
const nextPage = page + 1;
if (nextPage && nextPage <= this.pagesCount) {
this.next_data_url = this._generateUrl(nextPage, 1);
this.pagesLoaded.push(nextPage);
this.flag_next_cache = 1;
this.type !== 'button' && this.loadingBlock.after.node?.classList.remove('hidden');
this.doAjax(this.next_data_url, (data) => {
this.flag_next_cache = 0;
this.next_data_cache = data;
this.type !== 'button' && this.loadingBlock.after.node?.classList.add('hidden');
this.showButton(this.afterButton);
});
this.next_data_url = '';
}
},
/**
* @private
* @param {number} page
* @returns {void}
*/
_preloadPageBefore(page) {
const prevPage = page - 1;
if (prevPage && prevPage >= 1) {
this.prev_data_url = this._generateUrl(prevPage, 1);
this.pagesLoaded.unshift(prevPage);
this.flag_prev_cache = 1;
this.type !== 'button' && this.loadingBlock.before.node?.classList.remove('hidden');
this.doAjax(this.prev_data_url, (data) => {
this.flag_prev_cache = 0;
this.prev_data_cache = data;
this.type !== 'button' && this.loadingBlock.before.node?.classList.add('hidden');
this.showButton(this.beforeButton);
});
this.prev_data_url = '';
}
},
/**
* @private
* @returns {void}
*/
_stop() {
this.disabled = 1;
this._showToolbars();
document.querySelector(`.${this.classes.loadingBlock}`).style.display = 'none';
},
/**
* @private
* @returns {void}
*/
_getAdditionalBlockHeight() {
if (this.additionalHeight === null) {
let height = 0;
const pageBottom = document.querySelectorAll('.page-bottom');
const blockAfterProducts = document.querySelectorAll('.main .products ~ .block-static-block');
if (blockAfterProducts.length) {
height += blockAfterProducts.offsetHeight;
}
if (document.querySelectorAll(this.options.footerSelector).length) {
document.querySelectorAll(this.options.footerSelector).forEach((footer) => {
height += footer.offsetHeight;
});
}
if (pageBottom.length > 0) {
height += pageBottom[0].offsetHeight;
}
this.additionalHeight = height;
}
return this.additionalHeight;
},
/**
* @private
* @returns {void}
*/
_initPaginator() {
if (this.disabled) {
return;
}
let scroll_pos = window.scrollY;
let diff = document.querySelector('body').offsetHeight - window.innerHeight;
diff -= this._getAdditionalBlockHeight();
diff = 0.8 * diff;
if (scroll_pos < this.lastScrollPos) {
this.isScrolledBack = true;
}
this.lastScrollPos = scroll_pos;
if (scroll_pos >= diff && this.is_loading === 0) {
this._loadFollowing();
}
if (scroll_pos <= this._getTopContainersHeight() && (this.is_loading === 0 && this._isScrolledBack())) {
this._loadPrevious();
}
this._calculateCurrentScrollPage(scroll_pos);
document.addEventListener("DOMContentLoaded", (event) => {
if (window.innerHeight > document.querySelector(this.options['product_container']).offsetHeight && '' !== this.next_data_url) {
this._loadFollowing();
}
});
},
/**
* @private
* @returns {void}
*/
_isScrolledBack() {
return this.isScrolledBack;
},
/**
* @param {number} scroll_pos
* @private
* @returns {void}
*/
_calculateCurrentScrollPage(scroll_pos) {
if (Math.abs(scroll_pos - this.last_scroll) > window.innerHeight * 0.1) {
this.last_scroll = scroll_pos;
this._updateUrlAndCurrentPage();
}
},
/**
* @private
* @returns {void}
*/
_updateUrlAndCurrentPage() {
const productContainers = document.querySelectorAll(this.options['product_container']);
productContainers.forEach((container, index) => {
if (this._mostlyVisible(container, index)) {
var page = parseInt(container.getAttribute('amscroll-page'));
if (page && page !== this.currentPage) {
var newUrl = this._generateUrl(page, 0);
if (!window.history.state || newUrl !== window.history.state.url) {
window.history.replaceState({url: newUrl}, '', newUrl);
}
this.currentPage = page;
}
return false;
}
});
},
/**
* @private
* @returns {void}
*/
_loadFollowing() {
if (this.flag_next_cache && this.type !== 'button') {
this.loadingBlock.after.node?.classList.remove('hidden');
}
if (this.next_data_url !== "" || this.next_data_cache) {
if (this.type !== 'button') {
this.loadingBlock.after.node?.classList.remove('hidden');
}
if (this.next_data_cache) {
this.showFollowing(this.next_data_cache);
} else {
if (!this.flag_next_cache) {
this.is_loading = 1;
this.doAjax(this.next_data_url, (data) => {
this.showFollowing(data);
});
}
}
}
},
/**
* @param {Object} data
* @returns {void}
*/
showFollowing(data) {
if (data.categoryProducts) {
if (this.type === 'button') {
if (this.canShowAfter) {
this.is_loading = 0;
this.canShowAfter = false;
} else {
return;
}
}
this.next_data_url = '';
this.next_data_cache = false;
this.loadingBlock.after.node?.classList.add('hidden');
this._insertNewProductBlock(data, 'after');
this._afterShowFollowing();
}
},
/**
* @private
* @returns {void}
*/
_afterShowFollowing() {
const nextPage = this.pagesLoaded[this.pagesLoaded.length - 1] + 1;
if (nextPage && nextPage <= this.pagesCount && this.pagesLoaded.indexOf(nextPage) === -1) {
this.next_data_url = this._generateUrl(nextPage, 1);
this.pagesLoaded.push(nextPage);
this.flag_next_cache = 1;
this.doAjax(this.next_data_url, (preview_data) => {
this.flag_next_cache = 0;
this.next_data_cache = preview_data;
window.dispatchEvent(new Event('scroll'));
this.showButton(this.afterButton);
});
}
this.is_loading = 0;
},
/**
* @private
* @returns {void}
*/
_loadPrevious() {
if (this.flag_prev_cache && this.type !== 'button') {
this.loadingBlock.before.node?.classList.remove('hidden');
}
if (this.prev_data_url !== "" || this.prev_data_cache) {
if (this.type !== 'button') {
this.loadingBlock.before.node?.classList.remove('hidden');
}
if (this.prev_data_cache) {
this.showPrevious(this.prev_data_cache);
} else {
if (!this.flag_prev_cache) {
this.is_loading = 1;
this.doAjax(this.prev_data_url, (data) => {
this.showPrevious(data);
});
}
}
}
},
/**
* @param {Object} data
* @returns {void}
*/
showPrevious(data) {
if (data.categoryProducts) {
if (this.type === 'button') {
if (this.canShowBefore) {
this.is_loading = 0;
this.canShowBefore = false;
} else {
return;
}
}
this.prev_data_cache = false;
this.prev_data_url = '';
this.loadingBlock.before.node?.classList.add('hidden');
this._insertNewProductBlock(data, 'before');
this._afterShowPrevious();
}
},
/**
* @private
* @returns {void}
*/
_afterShowPrevious() {
const prevPage = this.pagesLoaded[0] - 1;
if (prevPage && prevPage <= this.pagesCount && this.pagesLoaded.indexOf(prevPage) === -1) {
this.prev_data_url = this._generateUrl(prevPage, 1);
this.pagesLoaded.unshift(prevPage);
this.flag_prev_cache = 1;
this.doAjax(this.prev_data_url, (preview_data) => {
this.flag_prev_cache = 0;
this.prev_data_cache = preview_data;
window.dispatchEvent(new Event('scroll'));
this.showButton(this.beforeButton);
});
}
this.is_loading = 0;
},
/**
* @private
* @param {string} position
* @returns {void}
*/
_generateButton(position) {
if (this.type !== 'button') {
return;
}
if ((position === 'before' && this.pagesLoaded.indexOf(1) !== -1
&& (document.querySelector(this.pageSelector.replace('%1', this.pageFirst)) || this.currentPage === this.pageFirst))
) {
return;
}
if (position === 'after' && this.pagesLoaded.indexOf(this.pagesCount) !== -1
&& (document.querySelector(this.pageSelector.replace('%1', this.pagesCount)) || this.currentPage === this.pagesCount)) {
return;
}
const buttonElement = this.loadButtonElement.cloneNode(true);
const textElement = this.loadButtonTextElement.cloneNode(true);
const color = this.options['buttonColor'];
const buttonSelector = `.${this.classes.loadButton}.-${position}`;
textElement.textContent = this.options[`loading${position}TextButton`];
buttonElement.append(textElement);
buttonElement.style.color = color;
buttonElement.style.borderColor = color;
buttonElement.setAttribute('amscroll_type', position);
buttonElement.classList.add(`-${position}`);
if (position === 'after') {
if (this.afterButton) {
this.afterButton.remove();
}
this._insertBlockInTheEnd(buttonElement.outerHTML);
this.afterButton = document.querySelector(buttonSelector);
} else {
buttonElement.className += ' mb-4 mt-2';
if (this.beforeButton) {
this.beforeButton.remove();
}
this._insertBlockInTheBegin(buttonElement.outerHTML);
this.beforeButton = document.querySelector(buttonSelector);
}
this.$nextTick(() => {
const buttons = document.querySelectorAll(`.${this.classes.loadButton}[amscroll_type="${position}"]`);
buttons.forEach((button) => {
if (!!button.dataset.amscrollHasEvent) {
return;
}
button.addEventListener('click', (event) => {
this.buttonClick(event);
});
button.dataset.amscrollHasEvent = true;
});
});
},
/**
* @param {Node} buttonElement
* @returns {void}
*/
showButton(buttonElement) {
if (buttonElement) {
buttonElement.style.display = 'block';
}
},
/**
* @param {Event} event
* @returns {void}
*/
buttonClick(event) {
const element = event.currentTarget;
const type = element.getAttribute('amscroll_type');
element.style.color = this.options['buttonColorPressed'];
if (type === 'after') {
this.canShowAfter = true;
this._loadFollowing();
} else {
this.canShowBefore = true;
this._loadPrevious();
}
this.$nextTick(() => {
this._updateUrlAndCurrentPage();
});
},
/**
* @private
* @param {Object} data
* @param {string} position
* @returns {void}
*/
_insertNewProductBlock(data, position) {
let htmlData = data.categoryProducts;
let tmp = document.createElement('div');
tmp.innerHTML = htmlData;
let html = tmp.querySelector('section');
this._removeToolbars(html);
const productContainer = html.querySelector(this.options['product_container']);
productContainer.classList.add('amscroll-pages');
productContainer.setAttribute('amscroll-page', data.currentPage);
this.beforeInsertProductBlock(productContainer);
if (this.options['pageNumbers'] == '1') {
var pageNumEl = this._generatePageTitle(data.currentPage);
if (pageNumEl) {
productContainer.before(pageNumEl);
}
}
if ('after' === position) {
this.afterButton?.remove();
this._moveScriptToTop(html);
this._insertBlockInTheEnd(html.innerHTML);
window.setAjaxCart();
} else {
this._moveScriptToTop(html);
const element = this._insertBlockInTheBegin(html.innerHTML);
window.setAjaxCart();
const itemHeight = element !== undefined ? element.offsetHeight : 0;
if (this.type != 'button') {
window.scrollTo(0, window.scrollTop + itemHeight);
}
}
this.$nextTick(() => {
const currentProductContainer = document.querySelector(`.amscroll-pages[amscroll-page="${data.currentPage}"]`);
this._addObserverToProductLink(currentProductContainer);
if (this.type == 'button') {
this._generateButton(position);
}
});
this.initPageStepForwardListener(data.currentPage);
},
/**
* @private
* @param {Node} productContainer
* @returns {void}
*/
_addObserverToProductLink(productContainer) {
this._externalAfterAjax();
const links = productContainer.querySelectorAll('.item a');
links.forEach((link) => {
link.addEventListener('click', (event) => {
try {
const parent = event.target.closest('.amscroll-pages');
const page = parent ? parent.getAttribute('amscroll-page') : null;
if (page) {
var newUrl = this._generateUrl(page, 0);
if (!window.history.state || newUrl !== window.history.state.url) {
window.history.replaceState(
{
url: newUrl
},
'',
newUrl
);
}
}
} catch (e) {
console.warn(e);
}
});
});
},
/**
* @private
* @param {number} page
* @param {number} addScroll
* @returns {string}
*/
_generateUrl(page, addScroll) {
const parameters = addScroll > 0 ? `p=${page}&is_scroll=${addScroll}` : `p=${page}`;
const currentUrl = window.location.origin + window.location.pathname;
const urlHasArgument = currentUrl.includes('?');
const parameterType = urlHasArgument ? '&' : '?';
const currentParameters = new URLSearchParams(window.location.search);
const newParameters = new URLSearchParams(parameters);
const newUrlParams = new URLSearchParams({
...Object.fromEntries(currentParameters),
...Object.fromEntries(newParameters)
});
return `${currentUrl}${parameterType}${newUrlParams}`;
},
/**
* @private
* @returns {void}
*/
_hideToolbars() {
if (document.querySelector('.products ~ ' + this.toolbarSelector)) {
document.querySelector('.products ~ ' + this.toolbarSelector).style.display = 'none';
}
},
/**
* @private
* @returns {void}
*/
_showToolbars() {
document.querySelector(this.totalAmountSelector).style.display = 'block';
document.querySelector(`.products ~ ${this.toolbarSelector}`).style.display = 'block';
},
/**
* @private
* @param {number} page
* @returns {HTMLDivElement|boolean}
*/
_generatePageTitle(page) {
if (document.querySelector(`#amscroll-page-num${page}`)) {
return false;
}
const pageNumEl = document.createElement('div');
pageNumEl.setAttribute('class', `product-list-container amscroll-page-num -amscroll-${this.options['pageNumberStyle']}`);
pageNumEl.setAttribute('id', `#amscroll-page-num${page}`);
pageNumEl.textContent = `${this.options['pageNumberContent']}${page}`;
return pageNumEl;
},
/**
* @private
* @param {Node} element
* @param {number} index
* @returns {boolean}
*/
_mostlyVisible(element, index) {
const visible = element.offsetParent !== null;
const scroll_pos = window.scrollY;
const window_height = window.innerHeight;
const el_top = element.offsetTop;
const el_height = element.offsetHeight;
const el_bottom = el_top + el_height;
const isVisible = ((el_bottom - el_height * 0.25 > scroll_pos)
&& (el_top < (scroll_pos + 0.5 * window_height))
&& visible) || (index == 0 && scroll_pos < el_top);
return ((el_bottom - el_height * 0.25 > scroll_pos)
&& (el_top < (scroll_pos + 0.5 * window_height))
&& visible) || (index == 0 && scroll_pos < el_top);
},
/**
* @private
* @returns {number}
*/
_getTopContainersHeight() {
if (!this.topContainersHeight) {
let result = document.querySelector('.page-header').offsetHeight;
if (document.querySelectorAll(".main .block-static-block ~ .products, .main .block-static-block ~ #amasty-shopby-product-list").length) {
result += document.querySelector(".main .block-static-block").offsetHeight;
}
this.topContainersHeight = 0.9 * result;
}
return this.topContainersHeight;
},
/**
* @returns {void}
*/
resolveBackToTopVisibility() {
if (this.options?.backToTop?.enabled !== '1') {
return;
}
this.isBackToTopVisible = document.body.scrollTop > this.backToTopTriggerHeight
|| document.documentElement.scrollTop > this.backToTopTriggerHeight;
},
/**
* @private
* @returns {void}
*/
_scrollToTop() {
const items = document.querySelectorAll(`[amscroll-page="${currentPage}"] .product-item a`);
items.forEach((item) => {
item.addEventListener('click', (event) => {
var scrollPositionAfterStepBackData = {
pageUrl: this.getCurrentUrl(),
clickedProductLink: event.currentTarget.attributes.href.value
};
hyva.getBrowserStorage().setItem('am-scroll-go-back-data', JSON.stringify(scrollPositionAfterStepBackData));
});
});
},
/**
* @private
* @param {Node} block
* @returns {void}
*/
_insertBlockInTheEnd(block) {
const productContainer = document.querySelectorAll(this.options['product_container']);
productContainer[productContainer.length - 1].insertAdjacentHTML('afterend', block);
},
/**
* @private
* @param {Node} block
* @returns {Node}
*/
_insertBlockInTheBegin(block) {
const element = document.querySelector(`.${this.classes.pageNumber}`)
?? document.querySelector(this.options['product_container']);
this.beforeButton?.remove();
element.insertAdjacentHTML('beforebegin', block);
return element;
},
/**
* @returns {string}
*/
getCurrentUrl() {
return location.href.split('?')[0];
},
/**
* @returns {void}
*/
getSavedAfterStepBackData() {
let savedData = hyva.getBrowserStorage().getItem('am-scroll-go-back-data');
if (savedData) {
savedData = JSON.parse(savedData);
this.afterStepBackData = savedData;
hyva.getBrowserStorage().removeItem('am-scroll-go-back-data');
}
return this.afterStepBackData;
},
/**
* @param {number} currentPage
*/
initPageStepForwardListener(currentPage) {
const items = document.querySelectorAll(`[amscroll-page="${currentPage}"] .product-item a`);
items.forEach((item) => {
item.addEventListener('click', (event) => {
var scrollPositionAfterStepBackData = {
pageUrl: this.getCurrentUrl(),
clickedProductLink: event.currentTarget.attributes.href.value
};
hyva.getBrowserStorage().setItem('am-scroll-go-back-data', JSON.stringify(scrollPositionAfterStepBackData));
});
});
},
/**
* @private
* @returns {void}
*/
_pagePositionAfterStepBack() {
const savedScrollData = this.getSavedAfterStepBackData();
if (savedScrollData) {
const productItem = document.querySelector(`a[href="${savedScrollData.clickedProductLink}"]`);
history.scrollRestoration = 'auto';
if (productItem) {
history.scrollRestoration = 'manual';
productItem.scrollIntoView();
}
}
},
/**
* @private
* @param {string} html
*/
_moveScriptToTop(html) {
const htmlScripts = html.getElementsByTagName('script');
if (htmlScripts.length > 0) {
const scripts = [];
for (let i = 0; i < htmlScripts.length; i++) {
scripts.push(htmlScripts[i]);
}
for (let i = 0; i < scripts.length; i++) {
let script = document.createElement('script');
script.innerHTML = scripts[i].innerHTML;
document.head.appendChild(script);
scripts[i].parentNode.removeChild(scripts[i]);
}
}
},
/**
* @private
* @param {string} html
*/
_removeToolbars(html) {
const contentToolbars = html.querySelectorAll(this.toolbarSelector);
contentToolbars.forEach((toolbar) => {
toolbar.previousElementSibling.remove();
toolbar.remove();
});
},
/**
* @param {Node} elem
* @param {string} selector
* @returns {Element|null}
*/
getNext(elem, selector) {
let nextElem = elem.nextElementSibling;
if (!selector) {
return nextElem;
}
if (nextElem && nextElem.matches(selector)) {
return nextElem;
}
return null;
}
};
}</script><div x-data="initAmScroll()" x-init="processInit" @scroll.window.debounce="_initPaginator()"><div x-cloak x-show="isBackToTopVisible" @scroll.window.debounce="resolveBackToTopVisibility"><template id="amscroll-loading-icon-source"><div class="amscroll-loading-block hidden loader"><img src="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/images/loader-1.gif" alt="Chargement en cours..."></div></template></div></div><div class="notranslate" style="display:none"> <span class="nosto_page_type" style="display:none">category</span>
</div><div class="notranslate" style="display:none"> <span class="nosto_category" style="display:none">
<span class="id">1472</span>
<span class="parent_id">2</span>
<span class="title">Parfum</span>
<span class="url">https://www.adopt.com/fr/parfum.html</span>
<span class="path">1/2/1472</span>
<span class="available">1</span>
<span class="category_string">/Parfum</span>
</span>
</div></div></div> <script>
function initLastAddedToCartPanel() {
return {
currentProduct: null,
open: false,
isMobile: window.outerWidth < 768,
setLastProductAddedToCart(detail) {
this.currentProduct = detail;
this.openMiniCart(detail);
},
openMiniCart(detail) {
this.open = true;
this.resizeHeight();
document.body.style.overflow = 'hidden';
},
closeMiniCart() {
this.open = false;
this.currentProduct = null;
document.body.style.removeProperty('overflow');
},
resizeHeight() {
this.$nextTick(() => {
if (this.isMobile && document.querySelector('.page-header')) {
this.$refs.minicart.style.maxHeight = (window.innerHeight - document.querySelector('.page-header').offsetHeight) + 'px';
}
})
},
sendViewCartEvent() {
window.dataLayer?.push({
'event': 'voir_le_panier',
'element': 'Notification Ajout Panier'
});
}
}
}
function escapeHtml(unsafe) {
return unsafe
.replace('<p>', "")
.replace('</p>', "")
}</script><section id="mini-cart" class="mini-cart"><div x-data="initLastAddedToCartPanel()" x-cloak class="fixed z-50" @last-added-cart-pannel.window="setLastProductAddedToCart($event.detail)" @keydown.window.escape="closeMiniCart()"><div class="backdrop" x-show="open" x-transition:enter="ease-in-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in-out duration-300" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" @click="closeMiniCart()" aria-label="Close panel"></div><div class="minicart overflow-y-auto hide-scrollbar scroll-smooth fixed bottom-0 md:inset-y-0 right-0 z-50 max-h-full h-full w-full md:max-w-md w-full bg-white px-3.75 bg-white flex flex-col gap-3.75 md:gap-6 rounded-t-lg md:rounded-t-none" @click.away="closeMiniCart()" x-show="open" x-ref="minicart" x-transition:enter="transform transition ease-in-out duration-300" x-transition:enter-start="translate-y-full md:translate-y-0 md:translate-x-full" x-transition:enter-end="translate-y-0 md:translate-x-0" x-transition:leave="transform transition ease-in-out duration-300" x-transition:leave-start="translate-y-0 md:translate-x-0" x-transition:leave-end="translate-y-full md:translate-y-0 md:translate-x-full"><div class="flex items-center justify-between py-6"><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="valide-colored" version="1.1" x="0px" y="0px" viewbox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve" class="w-5 h-auto" width="24" height="24" role="img">
<path fill="#4BBFA7" d="M20,10c0-5.5-4.5-10-10-10C4.5,0,0,4.5,0,10c0,5.5,4.5,10,10,10C15.5,20,20,15.5,20,10z"/>
<path fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" d="M7.5,9.7l2,2l3-3.5"/>
<title/></svg>
<span class="uppercase text-anthracite-600 font-medium font-montserrat text-base leading-4 tracking-spaced">Produit Ajouté</span></div><button type="button" class="cursor-pointer" @click="closeMiniCart()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="cross-menu" version="1.1" x="0px" y="0px" viewbox="0 0 15.5 15.5" enable-background="new 0 0 15.5 15.5" xml:space="preserve" class="text-lavender w-4.5 h-auto" width="24" height="24" role="img">
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M0.8,14.8l14-14"/>
<path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14.8,14.8l-14-14"/>
<title/></svg>
</button></div><template x-if="currentProduct != null"><div class="flex flex-row gap-4 -mt-6 md:py-3.75"><img class="w-[5.938rem] h-[5.938rem] object-center object-cover" :src="currentProduct.image" alt=""><div class="flex flex-col gap-3 font-montserrat font-medium w-full"><div class="flex items-start justify-between gap-2"><div class="flex flex-col gap-2 text-anthracite-500"><span x-text="currentProduct.name" class="text-base leading-5"></span> <span class="uppercase text-tiny leading-[0.813rem]" x-text="escapeHtml(currentProduct.short_description)"></span></div><div class="flex flex-col gap-1"><span class="text-base leading-4" :class="{ 'text-pink': Number.parseFloat(currentProduct.old_price) > Number.parseFloat(currentProduct.final_price) }" x-text="hyva.formatPrice(currentProduct.final_price)"></span> <template x-if="Number.parseFloat(currentProduct.old_price) > Number.parseFloat(currentProduct.final_price)"><span class="text-anthracite-400 text-sm leading-[0.875rem] line-through" x-text="hyva.formatPrice(currentProduct.old_price)"></span></template></div></div></div></div></template><div class="flex flex-col gap-3.75"><div class="bg-lavender-300 rounded-[10px] px-3.5 py-3"><div x-data="initIncentiveCart" class="incentiveBar hidden flex flex-col gap-2" :class="{'hidden': isLoading}" @private-content-loaded.window="calcFreeShipping($event.detail.data.cart)"><div class="text-xs md:text-sm font-medium leading-none md:leading-none pb-2" x-show="amountStep > 0"><span class="text-lavender">Plus que <span x-html="amountStep" ></span> €</span> <span>pour votre <span x-text="labelShippingStep"></span></span></div><div class="text-xs md:text-sm font-medium leading-none md:leading-none flex flex-col gap-2"><div x-show="amountStep < 0 && !freeGift2Amount && !freeGift3Amount">Livraison offerte</div><div x-show="!freeGift2Amount && !freeGift3Amount" class="w-full flex flex-row"><span class="w-3/4 shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div x-show="freeGift2Amount && !freeGift3Amount" class="h-24 flex flex-col"><div class="text-xs md:text-sm font-medium leading-none md:leading-none my-auto"><div class="relative w-full flex"><div class="w-1/3 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] rounded-l-lg border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] rounded-l-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep1 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute left-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center">Livraison offerte</span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeShippingValue"></span></div></div><div class="w-2/3 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step2')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div class="w-1/3 relative"><div class="w-full flex flex-row"><span x-show="amountStep2 < 0" class="w-full shrink-0 block border-b-[7px] rounded-r-lg border-lavender transition-all" ></span> <span class="w-full block border-b-[7px] rounded-r-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep2 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute right-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift2Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift2Amount"></span></div></div></div></div></div><div x-show="freeGift2Amount && freeGift3Amount" class="h-24 flex flex-col"><div class="text-xs md:text-sm font-medium leading-none md:leading-none my-auto"><div class="relative w-full flex"><div class="w-1/4 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] rounded-l-lg border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] rounded-l-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep1 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute left-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center">Livraison offerte</span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeShippingValue"></span></div></div><div class="w-1/2 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step2')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div :class="{'text-lavender': amountStep2 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute mx-auto left-0 right-0 bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift2Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift2Amount"></span></div><div class="w-1/2 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step3')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div class="w-1/4 relative"><div class="w-full flex flex-row"><span x-show="amountStep3 < 0" class="w-full shrink-0 block border-b-[7px] rounded-r-lg border-lavender transition-all" ></span> <span class="w-full block border-b-[7px] rounded-r-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep3 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute right-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift3Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift3Amount"></span></div></div></div></div></div></div></div><a href="https://www.adopt.com/fr/checkout/cart" class="btn btn-primary flex justify-center min-h-[3.75rem] w-full md:mb-3.75" @click="sendViewCartEvent" >Voir le panier</a></div><div class="bg-lavender-300 h-full -mx-3.75"><div class="pl-3.75 py-6"> <div x-data="initNostoItems_693003ff992a1()" @last-added-cart-pannel.window="getItemsData($event.detail)"></div><div id="_693003ff992a1"></div><script>
function initNostoItems_693003ff992a1() {
return {
isLoaded: false,
itemCount: 0,
requestSended: false,
async getTemplate(products, title, nostoElementId) {
fetch(
'https://www.adopt.com/fr/catalog/nosto/slider'
+ '?product_ids=' + products
+ '&title=' + title
+ '&nosto_element_id=' + nostoElementId
+ '&slider_block_name=' + 'nosto.minicart-lastorder-crosssell'
+ '&template=' + 'Magento_Catalog::product/slider/product-slider-crosssell.phtml'
+ '&item_template=' + 'Magento_Catalog::product/list/item-crosssell.phtml'
+ '&container_limitation_class=' + ''
+ '&add_background_color=' + ''
+ '&background_color=' + ''
+ '&display_flags=' + 'false'
,
{}
).then(response => response.json()
).then(json => {
this.isLoaded = true;
document.getElementById("_693003ff992a1").innerHTML = json.html
});
},
getItemsData(detail = null) {
let currentProductId = false;
if (detail !== null) {
currentProductId = detail.id
}
if (!currentProductId && this.currentProduct?.id) {
currentProductId = this.currentProduct.id
}
if (!currentProductId) {
return;
}
if (this.requestSended) {
return;
}
const self = this;
if (typeof nostojs === 'function') {
self.requestSended = true;
nostojs(api => {
let doNotTrackStatus = api.visit.isDoNotTrack();
api.visit.setDoNotTrack(doNotTrackStatus);
api.defaultSession()
.viewCart()
.setPlacements(['nosto-page-product2'])
.setProducts([{product_id: currentProductId}])
.load()
.then(response => {
let data = Object.values(response.campaigns.recommendations)[0];
if (data) {
let productIds = [];
data.products.forEach(function (product) {
productIds.push(product.product_id);
});
self.itemsData = data.products;
self.numberSlide = data.products.length;
self.getTemplate(productIds.toString(), data.title, data.result_id);
self.requestSended = false;
}
})
});
}
}
}
}</script> </div></div></div></div></section> <div id="next-page-component" @update-pager-items.window="update($event.detail)" class="flex flex-col items-center gap-4 mb-4" x-data="initAmsScrollPager()" x-show="itemCount > 0"><div class="w-48 flex flex-row"><span class="w-3/4 shrink-0 block border-b-4 border-lavender" :style="calcBarSize()"></span> <span class="w-full block border-b-4 border-anthracite-300"></span></div><span class="text-purple font-primary font-semibold xl:text-smaller text-xs" x-show="wording" x-text="wording"></span></div><script>
function initAmsScrollPager() {
return {
wording: null,
itemCount: 0,
totalCount:0,
maxPage: 0,
pageSize: 0,
lastPageWording: 'Fin de sélection',
wordingTemplate: '%1 produits sur %2',
init() {
window.addEventListener('beforeunload', () => {
history.scrollRestoration = 'manual';
});
},
update($event) {
this.pageSize = $event.pageSize;
if ($event.currentPage > this.maxPage) {
this.maxPage = $event.currentPage;
}
this.itemCount = this.maxPage * this.pageSize;
this.totalCount = $event.totalCount;
if (this.itemCount > this.totalCount) {
this.itemCount = this.totalCount;
}
this.wording = this.wordingTemplate.replace('%1', this.itemCount).replace('%2', this.totalCount);
this.$nextTick(() => {
this.calcBarSize();
});
},
calcBarSize() {
let widthBar = 100;
if (this.itemCount > 0) {
widthBar = ((this.itemCount / this.totalCount) * 100).toFixed(0);
}
if (widthBar >= 100) {
this.wording = this.lastPageWording;
}
return 'width: ' + widthBar + '%';
}
}
}</script> <div x-data="initBottomSeo()" x-init="initMore($refs)" class="flex md:flex-row-reverse flex-col-reverse md:min-h-[15rem] border-y-1 border-lavender-400"><div class="flex justify-center items-center w-full transition-all"><div class="flex flex-col p-8 md:p-12"> <div class="font-secondary font-bold md:text-3.5xl text-3xl tracking-spaced"> Parfum pour femme, homme, mixte et enfant</div> <div class="py-6 md:text-sm text-xs"><div class="read-more overflow-hidden transition-all duration-300 leading-5.5 md:leading-7" data-lhmobile="20" data-lhdesktop="28" x-ref="readmore"><p> </p>
<p> </p>
<p><strong>Porter un</strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum.html" title="parfum"><span>parfum</span></a></strong><strong> est une manière d’exprimer sa personnalité </strong><span style="font-weight: 400;">et de marquer les esprits. Comme chaque parfum se révèle différemment selon la personne qui le porte, </span><strong>Adopt propose plus de 150 eaux de parfum</strong><span style="font-weight: 400;"> pour toutes les personnalités, les genres et les humeurs.</span></p>
<p> </p>
<p><strong>Satisfaites toutes vos envies et variez les plaisirs parfumés</strong><span style="font-weight: 400;"> avec la gamme d’Adopt pour trouver le parfum qui vous ressemble !</span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les différents types de parfums</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Tous les produits parfumés sont élaborés à partir d’</span><strong>huiles essentielles, de senteurs de synthèse et d’alcool</strong><span style="font-weight: 400;">. Chaque solution possède ces ingrédients à des doses différentes, qu’il s’agisse de parfum, d’eau de parfum, d’eau de toilette ou d’eau de Cologne. Ces produits sont classés selon leur concentration en parfum : </span><strong>plus la concentration est élevée, plus la senteur est durable</strong><span style="font-weight: 400;">. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Le parfum</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Le parfum est la solution qui contient le moins d’alcool et le </span><strong>plus haut pourcentage d’essence parfumée, </strong><span style="font-weight: 400;">pouvant atteindre 40 %. Son prix est plus élevé que les autres, car il est composé d’ingrédients de haute qualité. Après vaporisation, </span><strong>le parfum peut rester sur votre peau plusieurs journées</strong><span style="font-weight: 400;"> notamment lorsqu’il est vaporisé sur les cheveux.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> L’eau de parfum </span></h3>
<p> </p>
<p><span style="font-weight: 400;">Moins concentrée que le parfum, </span><strong>l’eau de parfum possède 15 à 20 % de solution parfumée</strong><span style="font-weight: 400;">. Avec son prix plus abordable que celui du parfum, ses effluves restent prononcées et durables dans le temps. L’eau de parfum s’applique autant chez les hommes que chez les femmes. Pour que votre parfum reste sur votre peau plus longtemps, </span><strong>vaporisez le produit sur les points chauds du corps</strong><span style="font-weight: 400;">, c’est-à-dire les zones où les pulsations du cœur se font sentir sous la peau (nuque, poignets, tempes). L'eau de parfum peut également perdurer plus longtemps </span><strong>sur les cheveux ou les vêtements</strong><span style="font-weight: 400;">.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> L’eau de toilette </span></h3>
<p> </p>
<p><strong>L’eau de toilette</strong><span style="font-weight: 400;">, moins concentrée que l’eau de parfum, contient entre 7% et 10% de parfum. Le parfum de cette eau se maintient 3 à 5 heures sur la peau. </span><strong>Idéale pour les peaux sensibles </strong><span style="font-weight: 400;">et celles des enfants, l’eau de toilette ne dispose que d’une faible quantité de substances aromatiques et d’alcool. L’eau de toilette est un </span><strong>produit parfumé très rafraîchissant</strong><span style="font-weight: 400;"> apprécié des femmes comme des hommes pendant la saison estivale. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> L’eau de Cologne</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Composée avec 4 à 7 % d’essences aromatiques, </span><strong>l’eau de Cologne est la solution la plus forte en alcool</strong><span style="font-weight: 400;">. Elle se caractérise par sa légèreté et sa volatilité plus prononcées que l’eau de toilette. Son prix abordable permet cependant de multiplier les vaporisations pour en profiter toute la journée. Historiquement, l’eau de Cologne est </span><strong>associée à la parfumerie pour homme</strong><span style="font-weight: 400;">. Ses notes de tête souvent dominées par les hespéridées offrent fraîcheur et richesse aromatique à la peau. </span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les parfu</span><span style="font-weight: 400;">ms pour femme</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Le </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/parfum-femme.html"><span>Parfum femme</span></a></span><span style="font-weight: 400;"> explore des </span><strong>univers olfactifs </strong><span style="font-weight: 400;">très nombreux : </span><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/fleurs-et-romantisme.html"><span>floraux</span></a></strong><strong>, </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/fruits-et-plaisir.html"><span>fruité</span></a></strong><strong>, </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/coton-et-douceur.html"><span>délicats</span></a></strong><strong>, </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/gourmandise-et-seduction.html"><span>gourmand</span></a></strong><strong>, </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/soleil-et-sensualite.html"><span>Solaire</span></a></strong><strong>, </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/fraicheur-et-agrume.html"><span>frais</span></a></strong><strong> et </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/boise-et-caractere.html"><span>boisé</span></a></strong><span style="font-weight: 400;">.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum floral</span></h3>
<p><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">Cet univers olfactif créé pour la femme regroupe un éventail très large de </span><strong>nuances de fleurs aux senteurs très distinctes</strong><span style="font-weight: 400;">. Élaborés à partir d’une fleur ou de plusieurs variétés, les parfums floraux pour femme sont délicats et enveloppants. </span><strong>Rose, jasmin, lavande</strong><span style="font-weight: 400;">, chaque fleur offre une douceur et une élégance particulière à une eau de parfum. Par exemple, </span><strong>la fraîcheur des fleurs des arbres</strong><span style="font-weight: 400;"> tel que la fleur de cerisier, celle du citronnier ou celle du pommier sont très appréciées dans une eau de parfum pour femme. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum fruité</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Les parfums fruités sont prisés par de nombreuses femmes, ils permettent un </span><strong>choix presque infini des senteurs</strong><span style="font-weight: 400;">. Pêche, pomme ou encore noix de coco, les fruits apportent une touche d’originalité et de fraîcheur à la composition d’un parfum. Laissez-vous tenter par leurs </span><strong>senteurs sucrées et gourmandes </strong><span style="font-weight: 400;">qui vous rendront irrésistibles auprès des personnes que vous croiserez. Venez découvrir les </span><strong>odeurs des fruits rouges, les senteurs de litchi ou encore le parfum de l’ananas </strong><span style="font-weight: 400;">que propose Adopt dans sa collection de parfums fruités pour femme. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum boisé</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Dans le monde de la parfumerie comme celui des saveurs, les épices éveillent les sens. Les notes épicées tel que le </span><strong>poivre rose, le safran ou encore la vanille</strong><span style="font-weight: 400;"> sont fréquemment utilisées dans les eaux de parfum pour femme. Ce type de parfum pour femme offre un caractère </span><strong>chaleureux et intense </strong><span style="font-weight: 400;">ainsi que des </span><strong>accords envoûtants</strong><span style="font-weight: 400;"> qui raviront les amateurs.</span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les parfums pour homme</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Les </span><strong>univers olfactifs du </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/parfum-homme.html" title="parfum homme"><span>parfum homme</span></a></strong> <span style="font-weight: 400;">font appel à de plus en plus de familles de senteurs. Découvrez l’univers </span><strong>boisé, aquatique et aromatique</strong><span style="font-weight: 400;"> qui caractérise un grand nombre de parfums masculins.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum boisé</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Conçus généralement pour les hommes, les parfums boisés dévoilent des notes olfactives </span><strong>de santal, de vétiver, de cèdre ou de cyprès</strong><span style="font-weight: 400;">. Un seul type de bois peut dominer la fragrance ou certaines espèces peuvent être associées pour créer une senteur unique. </span></p>
<p> </p>
<p><span style="font-weight: 400;">La plante de </span><strong>patchouli</strong><span style="font-weight: 400;"> provenant d’Asie occupe une place de choix dans les associations avec la famille des parfums boisés. Sans odeur à l’origine, c’est lors de son extraction que cette plante obtient sa senteur si caractéristique, à la fois douce et capiteuse. </span><strong>Des accords épicés et fruités</strong><span style="font-weight: 400;"> accompagnent souvent le parfum de type boisé.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum aquatique</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Les parfums aquatiques, relativement récents dans l’histoire de la parfumerie, regroupent des senteurs évoquant </span><strong>l’univers marin et l’air du grand large</strong><span style="font-weight: 400;">. À la fois légères et entêtantes, les notes aquatiques plaisent aux hommes en quête d’aventure à tout prix. Une note iodée procure au parfum des</span><strong> accords de brise marine</strong><span style="font-weight: 400;">. </span></p>
<p> </p>
<p><span style="font-weight: 400;">Synonymes de dynamisme, de fraîcheur et de vitalité, les parfums aquatiques s’associent à merveille à des </span><strong>notes aromatiques</strong><span style="font-weight: 400;"> de sauge, de lavande ou de géranium. Leurs effluves marins se marient aussi très bien avec les </span><strong>senteurs boisées</strong><span style="font-weight: 400;">. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum aromatique</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Le parfum aromatique pour homme regroupe toutes les compositions à base d’herbes aromatiques comme la </span><strong>lavande, l’eucalyptus, le romarin, le thym, la menthe ou la marjolaine</strong><span style="font-weight: 400;">. Associées aux agrumes, les herbes aromatiques ressortent particulièrement dans un </span><strong>parfum frais et gourmand, </strong><span style="font-weight: 400;">idéal pour la saison estivale. De plus, la fraîcheur des plantes aromatiques associée à des notes épicées donne du caractère à certaines compositions parfumées.</span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les parfums mixtes</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Avec son large choix de </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/parfum-mixte.html" title="parfum mixe"><span>parfum mixe</span></a></span><span style="font-weight: 400;">, </span><strong>Adopt joue avec les genres et les styles </strong><span style="font-weight: 400;">en proposant des univers olfactifs capables d’éveiller les sens des hommes comme des femmes.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum agrume</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Tout en subtilité, les </span><strong>fragrances fraîches et volatiles </strong><span style="font-weight: 400;">des agrumes sont facilement reconnaissables dans chaque parfum. Le citron, le pamplemousse ou la mandarine sont à la base de la composition de </span><strong>la plus ancienne des familles olfactives, celle des hespéridées</strong><span style="font-weight: 400;">. Ces notes acidulées sont très présentes dans l’eau de Cologne. Ces parfums ou eaux de parfum vaporeux plairont autant à un homme qu’à une femme. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum musqué</span></h3>
<p> </p>
<p><strong>Les parfums musqués </strong><span style="font-weight: 400;">sont essentiellement composés de</span><strong> musc blanc</strong><span style="font-weight: 400;"> qui regroupe des notes sensuelles et apaisantes. Certains accords musqués offrent des </span><strong>sensations boisées ou cotonneuses</strong><span style="font-weight: 400;"> qui ont la particularité de perdurer longtemps sur les cheveux et les vêtements. Cette famille olfactive bénéficie des meilleurs avis tant pour les parfums pour homme que pour la parfumerie pour femme grâce à </span><strong>l’impression enveloppante</strong><span style="font-weight: 400;"> qu’elle dégage. </span></p>
<p> </p>
<p><span style="font-weight: 400;">Le musc blanc est fréquemment mêlé à des odeurs de fleurs blanches et de rose ylang-ylang pour une composition tout en </span><strong>douceur et sensualité</strong><span style="font-weight: 400;">. Il se décline en de </span><strong>nombreuses senteurs</strong><span style="font-weight: 400;"> apportant un sillage olfactif tantôt floral ou fruité tantôt poudré. Ces fragrances sont très appréciées pour des bougies parfumées !</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum oriental</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Les </span><strong>parfums orientaux</strong><span style="font-weight: 400;"> sont réputés pour leurs </span><strong>odeurs chaudes et douces</strong><span style="font-weight: 400;"> grâce à des ingrédients comme la vanille, les baumes, la cire d’ambre ou le bois de oud. Cette famille est tout aussi </span><strong>présente dans l’eau de parfum pour homme que dans la parfumerie pour femme</strong><span style="font-weight: 400;">. Deuxième plus grande famille olfactive après celle des hespéridés, elle est très prisée notamment pour la diversité des associations possibles. </span><strong>Poudrées, animales, balsamiques ou ambrées</strong><span style="font-weight: 400;">, les notes orientales dévoilent de merveilleux accords quand elles sont mêlées à des </span><strong>effluves fruités, boisés ou floraux</strong><span style="font-weight: 400;">.</span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les parfums pour enfant</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Découvrez les </span><strong>univers doux et sucrés</strong><span style="font-weight: 400;"> du </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/parfum-enfant.html" title="parfum enfant"><span>parfum enfant</span></a></span><span style="font-weight: 400;"> propice à développer ses sens et sa mémoire olfactive à partir de 3 ans. Adopt Parfums propose des eaux de toilette qui prennent soin de leur peau plus fragile et sensible grâce à une </span><strong>composition pauvre en alcool et en produits chimiques</strong><span style="font-weight: 400;">. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Eau de parfum florale </span></h3>
<p> </p>
<p><span style="font-weight: 400;">Les essences </span><strong>douces et apaisantes </strong><span style="font-weight: 400;">des eaux de toilette florales permettent la création d’un panel très divers de fragrances. L’odeur délicate et enveloppante de </span><strong>la rose ou des fleurs blanches comme le muguet</strong><span style="font-weight: 400;"> procure douceur et fraîcheur à une eau de parfum. Associées à la senteur de la vanille, ces eaux de toilette s'adaptent tout à fait à </span><strong>la gourmandise et à la vitalité des enfants</strong><span style="font-weight: 400;">. Pour un soin complet, Adopt Parfums propose l’eau de toilette et son gel douche assorti dans un coffret ! </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Eau de parfum gourmande</span></h3>
<p> </p>
<p><strong>Pour les enfants qui raffolent des gâteaux, des bonbons et de toute autre friandise</strong><span style="font-weight: 400;">, une eau de toilette sucrée et acidulée, de préférence bio, sera un choix séduisant. Les </span><strong>parfums gourmands sont relativement nouveaux en parfumerie, </strong><span style="font-weight: 400;">mais sont déjà adoptés par les grandes marques</span><strong>. </strong><span style="font-weight: 400;">Ils offrent grâce à des composants naturels et de synthèse un large choix de senteurs aussi savoureuses qu’irrésistibles. </span></p>
<p> </p>
<p><span style="font-weight: 400;">Fraise tagada, biscuits, caramel, ces </span><strong>odeurs délicieuses plairont aux petits comme aux grands</strong><span style="font-weight: 400;">. Elles se marient à merveille avec des notes florales (jasmin, rose), fruitées (poire, pomme) et vanillées, offrant une sensation réconfortante. </span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les produits parfumés Adopt</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Eau de Cologne, huiles essentielles, coffrets, bougies parfumées : </span><strong>faites-vous plaisir avec l’offre très large des produits d’Adopt</strong><span style="font-weight: 400;">. Retrouvez les odeurs de votre eau de parfum préférée déclinées en une liste de nombreux produits parfumés à prix légers, notamment en </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gel-douche-parfume.html" title="gel douche"><span>gel douche</span></a></span><span style="font-weight: 400;">, </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/creme-et-lait-corps.html" title="lait corps"><span>lait corps</span></a></span><span style="font-weight: 400;">, </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/soin-des-mains.html" title="crèmes mains"><span>crèmes mains</span></a></span><span style="font-weight: 400;">, </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/maison/bougie-parfumee.html" title="bougie"><span>bougie</span></a></span><span style="font-weight: 400;">,....</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Coffret parfum</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Vous souhaitez vous </span><strong>faire plaisir ou gâter vos proches</strong><span style="font-weight: 400;">, pendant les vacances, les fêtes de Noël ou à l’occasion du Black Friday ? Laissez-vous tenter par les </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/cadeaux/cadeaux-coffrets.html" title="cadeau coffret"><span>cadeau coffret</span></a> </span><span style="font-weight: 400;">disponibles en stock en magasin ou en livraison. Qu'il s'agisse d’un </span><strong>coffret parfum, d’un nécessaire de toilette ou d’un assortiment de produits de beauté</strong><span style="font-weight: 400;">, vous trouverez de quoi combler votre moitié et satisfaire vos amis. </span></p>
<p> </p>
<p><strong>Avec des coffrets divers, </strong><span style="font-weight: 400;">vous avez l’embarras du choix ! Pour un </span><strong>rituel de soin du corps</strong><span style="font-weight: 400;">, profitez de coffrets associant une eau de parfum et un gel douche de la même fragrance. Pour découvrir la gamme des produits mixtes, optez pour un coffret de trois eaux de parfum. </span><strong>Le coffret rasage </strong><span style="font-weight: 400;">peut également être une excellente idée cadeau pour permettre à votre homme de prendre soin de lui.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Boîte cadeau</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Donnez de l’allure à vos </span><strong>cadeaux avec des emballages réutilisables aux formats très divers</strong><span style="font-weight: 400;"> et adaptés à tous les produits de beauté, de la petite pochette à la grande boîte. Vous pouvez, par exemple, opter pour un joli panier pour agencer avec goût votre sélection de produits parfumés. Réutilisable en rangement, il est aussi élégant que pratique. Choisissez le </span><strong>carrousel à parfums Adopt </strong><span style="font-weight: 400;">pour mettre en valeur vos produits préférés. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Bougie parfumée</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Vous souhaitez vous téléporter dans les îles, diffuser l'ambiance de Noël ou vous envelopper dans un cocon d’amour et de douceur ? </span><strong>Choisissez parmi l’offre d’Adopt, la </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/bougies-parfumees.html" title="bougie"><span>bougie</span></a> </strong><strong>qui correspond à vos attentes</strong><span style="font-weight: 400;">. Retrouvez les odeurs de vos produits de beauté Adopt Parfums avec ses élégantes bougies. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Eau de Cologne</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Pour vous accompagner dans vos journées chaudes et ensoleillées de l’été, </span><strong>l’eau de Cologne peut constituer votre meilleur allié</strong><span style="font-weight: 400;">. Profitez d’un spray de fraîcheur parfumée du produit de votre choix. Les notes classiques de l’eau de Cologne sont les senteurs hespéridées comme la</span><strong> fleur d'oranger</strong><span style="font-weight: 400;">. D’autres odeurs, notamment des </span><strong>fragrances florales et boisées</strong><span style="font-weight: 400;">, peuvent également se combiner. </span></p>
<p> </p>
<p><span style="font-weight: 400;">Adopt Parfums se réinvente sans cesse pour vous proposer une fragrance légère qui réinterprète les codes de cette eau mythique : sa </span><strong>composition aux notes de thé </strong><span style="font-weight: 400;">lui confère toute la fraîcheur d'une eau de Cologne intemporelle.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Diffuseur</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Plongez dans </span><strong>l’ambiance parfumée des </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/maison/parfums-d-interieur.html" title="diffuseurs"><span>diffuseurs</span></a></strong><strong> d’Adopt Parfums</strong><span style="font-weight: 400;">. En un instant, son parfum vous transporte dans un univers chaleureux et convivial. Laissez un sillage parfumé dans toutes les pièces de la maison en diffusant des </span><strong>senteurs agréables pour toute la famille</strong><span style="font-weight: 400;">.</span></p>
<p> </p>
<p> </p>
<h2>FAQ</h2>
<p> </p>
<h3>En quels formats sont disponibles les eaux de parfum chez Adopt ?</h3>
<p> </p>
<p>Les eaux de parfums Adopt sont disponibles en deux formats, <strong>30 ml </strong>et <strong>100 ml</strong>. Le plus petit est très pratique à glisser dans un sac ou une pochette. Sa petite taille peut également permettre d’<strong>essayer un parfum d'une nouvelle note olfactive</strong>, afin de savoir si cette nouveauté vous convient.</p>
<p> </p>
<p>Une fois votre maquillage réalisé, n’oubliez pas de vous parfumer avec l’un de nos best-sellers disponibles dans un coffret nouveauté ou à l’unité. </p></div></div><div class="hidden"><p> </p>
<p> </p>
<p><strong>Porter un</strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum.html" title="parfum"><span>parfum</span></a></strong><strong> est une manière d’exprimer sa personnalité </strong><span style="font-weight: 400;">et de marquer les esprits. Comme chaque parfum se révèle différemment selon la personne qui le porte, </span><strong>Adopt propose plus de 150 eaux de parfum</strong><span style="font-weight: 400;"> pour toutes les personnalités, les genres et les humeurs.</span></p>
<p> </p>
<p><strong>Satisfaites toutes vos envies et variez les plaisirs parfumés</strong><span style="font-weight: 400;"> avec la gamme d’Adopt pour trouver le parfum qui vous ressemble !</span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les différents types de parfums</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Tous les produits parfumés sont élaborés à partir d’</span><strong>huiles essentielles, de senteurs de synthèse et d’alcool</strong><span style="font-weight: 400;">. Chaque solution possède ces ingrédients à des doses différentes, qu’il s’agisse de parfum, d’eau de parfum, d’eau de toilette ou d’eau de Cologne. Ces produits sont classés selon leur concentration en parfum : </span><strong>plus la concentration est élevée, plus la senteur est durable</strong><span style="font-weight: 400;">. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Le parfum</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Le parfum est la solution qui contient le moins d’alcool et le </span><strong>plus haut pourcentage d’essence parfumée, </strong><span style="font-weight: 400;">pouvant atteindre 40 %. Son prix est plus élevé que les autres, car il est composé d’ingrédients de haute qualité. Après vaporisation, </span><strong>le parfum peut rester sur votre peau plusieurs journées</strong><span style="font-weight: 400;"> notamment lorsqu’il est vaporisé sur les cheveux.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> L’eau de parfum </span></h3>
<p> </p>
<p><span style="font-weight: 400;">Moins concentrée que le parfum, </span><strong>l’eau de parfum possède 15 à 20 % de solution parfumée</strong><span style="font-weight: 400;">. Avec son prix plus abordable que celui du parfum, ses effluves restent prononcées et durables dans le temps. L’eau de parfum s’applique autant chez les hommes que chez les femmes. Pour que votre parfum reste sur votre peau plus longtemps, </span><strong>vaporisez le produit sur les points chauds du corps</strong><span style="font-weight: 400;">, c’est-à-dire les zones où les pulsations du cœur se font sentir sous la peau (nuque, poignets, tempes). L'eau de parfum peut également perdurer plus longtemps </span><strong>sur les cheveux ou les vêtements</strong><span style="font-weight: 400;">.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> L’eau de toilette </span></h3>
<p> </p>
<p><strong>L’eau de toilette</strong><span style="font-weight: 400;">, moins concentrée que l’eau de parfum, contient entre 7% et 10% de parfum. Le parfum de cette eau se maintient 3 à 5 heures sur la peau. </span><strong>Idéale pour les peaux sensibles </strong><span style="font-weight: 400;">et celles des enfants, l’eau de toilette ne dispose que d’une faible quantité de substances aromatiques et d’alcool. L’eau de toilette est un </span><strong>produit parfumé très rafraîchissant</strong><span style="font-weight: 400;"> apprécié des femmes comme des hommes pendant la saison estivale. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> L’eau de Cologne</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Composée avec 4 à 7 % d’essences aromatiques, </span><strong>l’eau de Cologne est la solution la plus forte en alcool</strong><span style="font-weight: 400;">. Elle se caractérise par sa légèreté et sa volatilité plus prononcées que l’eau de toilette. Son prix abordable permet cependant de multiplier les vaporisations pour en profiter toute la journée. Historiquement, l’eau de Cologne est </span><strong>associée à la parfumerie pour homme</strong><span style="font-weight: 400;">. Ses notes de tête souvent dominées par les hespéridées offrent fraîcheur et richesse aromatique à la peau. </span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les parfu</span><span style="font-weight: 400;">ms pour femme</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Le </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/parfum-femme.html"><span>Parfum femme</span></a></span><span style="font-weight: 400;"> explore des </span><strong>univers olfactifs </strong><span style="font-weight: 400;">très nombreux : </span><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/fleurs-et-romantisme.html"><span>floraux</span></a></strong><strong>, </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/fruits-et-plaisir.html"><span>fruité</span></a></strong><strong>, </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/coton-et-douceur.html"><span>délicats</span></a></strong><strong>, </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/gourmandise-et-seduction.html"><span>gourmand</span></a></strong><strong>, </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/soleil-et-sensualite.html"><span>Solaire</span></a></strong><strong>, </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/fraicheur-et-agrume.html"><span>frais</span></a></strong><strong> et </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/envie-de-parfum/boise-et-caractere.html"><span>boisé</span></a></strong><span style="font-weight: 400;">.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum floral</span></h3>
<p><span style="font-weight: 400;"> </span></p>
<p><span style="font-weight: 400;">Cet univers olfactif créé pour la femme regroupe un éventail très large de </span><strong>nuances de fleurs aux senteurs très distinctes</strong><span style="font-weight: 400;">. Élaborés à partir d’une fleur ou de plusieurs variétés, les parfums floraux pour femme sont délicats et enveloppants. </span><strong>Rose, jasmin, lavande</strong><span style="font-weight: 400;">, chaque fleur offre une douceur et une élégance particulière à une eau de parfum. Par exemple, </span><strong>la fraîcheur des fleurs des arbres</strong><span style="font-weight: 400;"> tel que la fleur de cerisier, celle du citronnier ou celle du pommier sont très appréciées dans une eau de parfum pour femme. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum fruité</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Les parfums fruités sont prisés par de nombreuses femmes, ils permettent un </span><strong>choix presque infini des senteurs</strong><span style="font-weight: 400;">. Pêche, pomme ou encore noix de coco, les fruits apportent une touche d’originalité et de fraîcheur à la composition d’un parfum. Laissez-vous tenter par leurs </span><strong>senteurs sucrées et gourmandes </strong><span style="font-weight: 400;">qui vous rendront irrésistibles auprès des personnes que vous croiserez. Venez découvrir les </span><strong>odeurs des fruits rouges, les senteurs de litchi ou encore le parfum de l’ananas </strong><span style="font-weight: 400;">que propose Adopt dans sa collection de parfums fruités pour femme. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum boisé</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Dans le monde de la parfumerie comme celui des saveurs, les épices éveillent les sens. Les notes épicées tel que le </span><strong>poivre rose, le safran ou encore la vanille</strong><span style="font-weight: 400;"> sont fréquemment utilisées dans les eaux de parfum pour femme. Ce type de parfum pour femme offre un caractère </span><strong>chaleureux et intense </strong><span style="font-weight: 400;">ainsi que des </span><strong>accords envoûtants</strong><span style="font-weight: 400;"> qui raviront les amateurs.</span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les parfums pour homme</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Les </span><strong>univers olfactifs du </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/parfum-homme.html" title="parfum homme"><span>parfum homme</span></a></strong> <span style="font-weight: 400;">font appel à de plus en plus de familles de senteurs. Découvrez l’univers </span><strong>boisé, aquatique et aromatique</strong><span style="font-weight: 400;"> qui caractérise un grand nombre de parfums masculins.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum boisé</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Conçus généralement pour les hommes, les parfums boisés dévoilent des notes olfactives </span><strong>de santal, de vétiver, de cèdre ou de cyprès</strong><span style="font-weight: 400;">. Un seul type de bois peut dominer la fragrance ou certaines espèces peuvent être associées pour créer une senteur unique. </span></p>
<p> </p>
<p><span style="font-weight: 400;">La plante de </span><strong>patchouli</strong><span style="font-weight: 400;"> provenant d’Asie occupe une place de choix dans les associations avec la famille des parfums boisés. Sans odeur à l’origine, c’est lors de son extraction que cette plante obtient sa senteur si caractéristique, à la fois douce et capiteuse. </span><strong>Des accords épicés et fruités</strong><span style="font-weight: 400;"> accompagnent souvent le parfum de type boisé.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum aquatique</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Les parfums aquatiques, relativement récents dans l’histoire de la parfumerie, regroupent des senteurs évoquant </span><strong>l’univers marin et l’air du grand large</strong><span style="font-weight: 400;">. À la fois légères et entêtantes, les notes aquatiques plaisent aux hommes en quête d’aventure à tout prix. Une note iodée procure au parfum des</span><strong> accords de brise marine</strong><span style="font-weight: 400;">. </span></p>
<p> </p>
<p><span style="font-weight: 400;">Synonymes de dynamisme, de fraîcheur et de vitalité, les parfums aquatiques s’associent à merveille à des </span><strong>notes aromatiques</strong><span style="font-weight: 400;"> de sauge, de lavande ou de géranium. Leurs effluves marins se marient aussi très bien avec les </span><strong>senteurs boisées</strong><span style="font-weight: 400;">. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum aromatique</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Le parfum aromatique pour homme regroupe toutes les compositions à base d’herbes aromatiques comme la </span><strong>lavande, l’eucalyptus, le romarin, le thym, la menthe ou la marjolaine</strong><span style="font-weight: 400;">. Associées aux agrumes, les herbes aromatiques ressortent particulièrement dans un </span><strong>parfum frais et gourmand, </strong><span style="font-weight: 400;">idéal pour la saison estivale. De plus, la fraîcheur des plantes aromatiques associée à des notes épicées donne du caractère à certaines compositions parfumées.</span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les parfums mixtes</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Avec son large choix de </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/parfum-mixte.html" title="parfum mixe"><span>parfum mixe</span></a></span><span style="font-weight: 400;">, </span><strong>Adopt joue avec les genres et les styles </strong><span style="font-weight: 400;">en proposant des univers olfactifs capables d’éveiller les sens des hommes comme des femmes.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum agrume</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Tout en subtilité, les </span><strong>fragrances fraîches et volatiles </strong><span style="font-weight: 400;">des agrumes sont facilement reconnaissables dans chaque parfum. Le citron, le pamplemousse ou la mandarine sont à la base de la composition de </span><strong>la plus ancienne des familles olfactives, celle des hespéridées</strong><span style="font-weight: 400;">. Ces notes acidulées sont très présentes dans l’eau de Cologne. Ces parfums ou eaux de parfum vaporeux plairont autant à un homme qu’à une femme. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum musqué</span></h3>
<p> </p>
<p><strong>Les parfums musqués </strong><span style="font-weight: 400;">sont essentiellement composés de</span><strong> musc blanc</strong><span style="font-weight: 400;"> qui regroupe des notes sensuelles et apaisantes. Certains accords musqués offrent des </span><strong>sensations boisées ou cotonneuses</strong><span style="font-weight: 400;"> qui ont la particularité de perdurer longtemps sur les cheveux et les vêtements. Cette famille olfactive bénéficie des meilleurs avis tant pour les parfums pour homme que pour la parfumerie pour femme grâce à </span><strong>l’impression enveloppante</strong><span style="font-weight: 400;"> qu’elle dégage. </span></p>
<p> </p>
<p><span style="font-weight: 400;">Le musc blanc est fréquemment mêlé à des odeurs de fleurs blanches et de rose ylang-ylang pour une composition tout en </span><strong>douceur et sensualité</strong><span style="font-weight: 400;">. Il se décline en de </span><strong>nombreuses senteurs</strong><span style="font-weight: 400;"> apportant un sillage olfactif tantôt floral ou fruité tantôt poudré. Ces fragrances sont très appréciées pour des bougies parfumées !</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Parfum oriental</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Les </span><strong>parfums orientaux</strong><span style="font-weight: 400;"> sont réputés pour leurs </span><strong>odeurs chaudes et douces</strong><span style="font-weight: 400;"> grâce à des ingrédients comme la vanille, les baumes, la cire d’ambre ou le bois de oud. Cette famille est tout aussi </span><strong>présente dans l’eau de parfum pour homme que dans la parfumerie pour femme</strong><span style="font-weight: 400;">. Deuxième plus grande famille olfactive après celle des hespéridés, elle est très prisée notamment pour la diversité des associations possibles. </span><strong>Poudrées, animales, balsamiques ou ambrées</strong><span style="font-weight: 400;">, les notes orientales dévoilent de merveilleux accords quand elles sont mêlées à des </span><strong>effluves fruités, boisés ou floraux</strong><span style="font-weight: 400;">.</span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les parfums pour enfant</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Découvrez les </span><strong>univers doux et sucrés</strong><span style="font-weight: 400;"> du </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/parfum-enfant.html" title="parfum enfant"><span>parfum enfant</span></a></span><span style="font-weight: 400;"> propice à développer ses sens et sa mémoire olfactive à partir de 3 ans. Adopt Parfums propose des eaux de toilette qui prennent soin de leur peau plus fragile et sensible grâce à une </span><strong>composition pauvre en alcool et en produits chimiques</strong><span style="font-weight: 400;">. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Eau de parfum florale </span></h3>
<p> </p>
<p><span style="font-weight: 400;">Les essences </span><strong>douces et apaisantes </strong><span style="font-weight: 400;">des eaux de toilette florales permettent la création d’un panel très divers de fragrances. L’odeur délicate et enveloppante de </span><strong>la rose ou des fleurs blanches comme le muguet</strong><span style="font-weight: 400;"> procure douceur et fraîcheur à une eau de parfum. Associées à la senteur de la vanille, ces eaux de toilette s'adaptent tout à fait à </span><strong>la gourmandise et à la vitalité des enfants</strong><span style="font-weight: 400;">. Pour un soin complet, Adopt Parfums propose l’eau de toilette et son gel douche assorti dans un coffret ! </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Eau de parfum gourmande</span></h3>
<p> </p>
<p><strong>Pour les enfants qui raffolent des gâteaux, des bonbons et de toute autre friandise</strong><span style="font-weight: 400;">, une eau de toilette sucrée et acidulée, de préférence bio, sera un choix séduisant. Les </span><strong>parfums gourmands sont relativement nouveaux en parfumerie, </strong><span style="font-weight: 400;">mais sont déjà adoptés par les grandes marques</span><strong>. </strong><span style="font-weight: 400;">Ils offrent grâce à des composants naturels et de synthèse un large choix de senteurs aussi savoureuses qu’irrésistibles. </span></p>
<p> </p>
<p><span style="font-weight: 400;">Fraise tagada, biscuits, caramel, ces </span><strong>odeurs délicieuses plairont aux petits comme aux grands</strong><span style="font-weight: 400;">. Elles se marient à merveille avec des notes florales (jasmin, rose), fruitées (poire, pomme) et vanillées, offrant une sensation réconfortante. </span></p>
<p> </p>
<p> </p>
<h2><span style="font-weight: 400;"> Les produits parfumés Adopt</span></h2>
<p> </p>
<p><span style="font-weight: 400;">Eau de Cologne, huiles essentielles, coffrets, bougies parfumées : </span><strong>faites-vous plaisir avec l’offre très large des produits d’Adopt</strong><span style="font-weight: 400;">. Retrouvez les odeurs de votre eau de parfum préférée déclinées en une liste de nombreux produits parfumés à prix légers, notamment en </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/gel-douche-parfume.html" title="gel douche"><span>gel douche</span></a></span><span style="font-weight: 400;">, </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/creme-et-lait-corps.html" title="lait corps"><span>lait corps</span></a></span><span style="font-weight: 400;">, </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/soin-corps/soin-corps-par-produit/soin-des-mains.html" title="crèmes mains"><span>crèmes mains</span></a></span><span style="font-weight: 400;">, </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/maison/bougie-parfumee.html" title="bougie"><span>bougie</span></a></span><span style="font-weight: 400;">,....</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Coffret parfum</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Vous souhaitez vous </span><strong>faire plaisir ou gâter vos proches</strong><span style="font-weight: 400;">, pendant les vacances, les fêtes de Noël ou à l’occasion du Black Friday ? Laissez-vous tenter par les </span><span style="font-weight: 400;"> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/cadeaux/cadeaux-coffrets.html" title="cadeau coffret"><span>cadeau coffret</span></a> </span><span style="font-weight: 400;">disponibles en stock en magasin ou en livraison. Qu'il s'agisse d’un </span><strong>coffret parfum, d’un nécessaire de toilette ou d’un assortiment de produits de beauté</strong><span style="font-weight: 400;">, vous trouverez de quoi combler votre moitié et satisfaire vos amis. </span></p>
<p> </p>
<p><strong>Avec des coffrets divers, </strong><span style="font-weight: 400;">vous avez l’embarras du choix ! Pour un </span><strong>rituel de soin du corps</strong><span style="font-weight: 400;">, profitez de coffrets associant une eau de parfum et un gel douche de la même fragrance. Pour découvrir la gamme des produits mixtes, optez pour un coffret de trois eaux de parfum. </span><strong>Le coffret rasage </strong><span style="font-weight: 400;">peut également être une excellente idée cadeau pour permettre à votre homme de prendre soin de lui.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Boîte cadeau</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Donnez de l’allure à vos </span><strong>cadeaux avec des emballages réutilisables aux formats très divers</strong><span style="font-weight: 400;"> et adaptés à tous les produits de beauté, de la petite pochette à la grande boîte. Vous pouvez, par exemple, opter pour un joli panier pour agencer avec goût votre sélection de produits parfumés. Réutilisable en rangement, il est aussi élégant que pratique. Choisissez le </span><strong>carrousel à parfums Adopt </strong><span style="font-weight: 400;">pour mettre en valeur vos produits préférés. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Bougie parfumée</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Vous souhaitez vous téléporter dans les îles, diffuser l'ambiance de Noël ou vous envelopper dans un cocon d’amour et de douceur ? </span><strong>Choisissez parmi l’offre d’Adopt, la </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/parfum/bougies-parfumees.html" title="bougie"><span>bougie</span></a> </strong><strong>qui correspond à vos attentes</strong><span style="font-weight: 400;">. Retrouvez les odeurs de vos produits de beauté Adopt Parfums avec ses élégantes bougies. </span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Eau de Cologne</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Pour vous accompagner dans vos journées chaudes et ensoleillées de l’été, </span><strong>l’eau de Cologne peut constituer votre meilleur allié</strong><span style="font-weight: 400;">. Profitez d’un spray de fraîcheur parfumée du produit de votre choix. Les notes classiques de l’eau de Cologne sont les senteurs hespéridées comme la</span><strong> fleur d'oranger</strong><span style="font-weight: 400;">. D’autres odeurs, notamment des </span><strong>fragrances florales et boisées</strong><span style="font-weight: 400;">, peuvent également se combiner. </span></p>
<p> </p>
<p><span style="font-weight: 400;">Adopt Parfums se réinvente sans cesse pour vous proposer une fragrance légère qui réinterprète les codes de cette eau mythique : sa </span><strong>composition aux notes de thé </strong><span style="font-weight: 400;">lui confère toute la fraîcheur d'une eau de Cologne intemporelle.</span></p>
<p> </p>
<p> </p>
<h3><span style="font-weight: 400;"> Diffuseur</span></h3>
<p> </p>
<p><span style="font-weight: 400;">Plongez dans </span><strong>l’ambiance parfumée des </strong><strong> <a class="widget block-category-link-inline" href="https://www.adopt.com/fr/maison/parfums-d-interieur.html" title="diffuseurs"><span>diffuseurs</span></a></strong><strong> d’Adopt Parfums</strong><span style="font-weight: 400;">. En un instant, son parfum vous transporte dans un univers chaleureux et convivial. Laissez un sillage parfumé dans toutes les pièces de la maison en diffusant des </span><strong>senteurs agréables pour toute la famille</strong><span style="font-weight: 400;">.</span></p>
<p> </p>
<p> </p>
<h2>FAQ</h2>
<p> </p>
<h3>En quels formats sont disponibles les eaux de parfum chez Adopt ?</h3>
<p> </p>
<p>Les eaux de parfums Adopt sont disponibles en deux formats, <strong>30 ml </strong>et <strong>100 ml</strong>. Le plus petit est très pratique à glisser dans un sac ou une pochette. Sa petite taille peut également permettre d’<strong>essayer un parfum d'une nouvelle note olfactive</strong>, afin de savoir si cette nouveauté vous convient.</p>
<p> </p>
<p>Une fois votre maquillage réalisé, n’oubliez pas de vous parfumer avec l’un de nos best-sellers disponibles dans un coffret nouveauté ou à l’unité. </p></div><button @click="showMore($event)" class="w-fit text-xs leading-tight font-montserrat font-medium underline uppercase" x-show="isMoreContentActive"><span :class="{ 'hidden': more }">Lire plus</span> <span :class="{ 'hidden': !more }">Lire moins</span></button> </div></div></div><script>
function initBottomSeo() {
return {
lineClampNb: 3,
more: false,
isMobile: window.outerWidth < 768,
baseHeight: 0,
maxHeight: null,
isMoreContentActive: false,
initMore($refs) {
let lineHeight;
const readMore = this.$refs.readmore;
this.baseHeight = readMore.clientHeight;
if (this.isMobile) {
lineHeight = readMore.dataset.lhmobile;
} else {
lineHeight = readMore.dataset.lhdesktop;
}
this.maxHeight = lineHeight * this.lineClampNb + 'px';
if (this.baseHeight > (lineHeight * this.lineClampNb)) {
readMore.style.height = this.maxHeight;
this.isMoreContentActive = true
}
},
showMore(e) {
let lineHeight;
const readMore = this.$refs.readmore;
if (this.isMobile) {
lineHeight = readMore.dataset.lhmobile;
} else {
lineHeight = readMore.dataset.lhdesktop;
}
this.maxHeight = lineHeight * this.lineClampNb;
if (this.more) {
this.maxHeight = lineHeight * this.lineClampNb + 'px';
} else {
this.maxHeight = 'auto';
}
readMore.style.height = this.maxHeight;
this.more = !this.more;
},
}
}</script></main><footer class="page-footer"> <script>
'use strict';
function initAwRbslider(config) {
return {
options: Object.assign({
autoplay: true,
pauseTimeBetweenTransitions: 3000,
slideTransitionSpeed: 500,
isStopAnimationMouseOnBanner: true,
animation: 'fade',
isRandomOrderImage: false,
sliderListSelector: '.uk-slideshow',
sliderItemSelector: '.aw-rbslider-item',
$refs: null
}, config),
slideshow: {options: {}},
init() {
this.options.$refs = this.$refs;
},
initSlider($refs) {
this.slideshow = window.awRbslider(this.$el, {
autoplay: this.options.autoplay,
autoplayInterval: this.options.pauseTimeBetweenTransitions,
duration: this.options.slideTransitionSpeed,
pauseOnHover: this.options.isStopAnimationMouseOnBanner,
animation: this.options.animation,
$refs: this.options.$refs,
});
this.loadSlides($refs);
this.slideshow.resize = () => this.resizeBanner(this.slideshow);
if (this.options.bannerSchedule.length > 0) {
if (!this.timeValidator([this.options.bannerSchedule[0]])) {
this.delayedUpdate(this.options.bannerSchedule[0]);
}
if (this.timeValidator(this.options.bannerSchedule)) {
this.sendRequest(this.options.bannerId);
}
}
},
loadSlider($refs) {
if (!window.awRbslider) {
let callbacks = [];
window.awRbslider = {'-isLoading': (callback) => callbacks.push(callback)};
}
if (window.awRbslider['-isLoading']) {
window.awRbslider['-isLoading'](() => this.loadSlider($refs))
}
if (!window.awRbslider['-isLoading']) {
this.initSlider($refs);
}
},
pauseOnEnter() {
if (this.slideshow.options.pauseOnHover) {
this.slideshow.hovering = true;
}
},
resumeOnLeave() {
this.slideshow.hovering = false;
},
/**
* Recalculate the width and height of the banner
*/
resizeBanner(slideshow) {
if (slideshow.slides.length) {
let firstChild = slideshow.slides[slideshow.current];
if (firstChild.querySelector('.rbslider__video')) {
const video = firstChild.querySelector('video');
if (slideshow.options.height === 'auto' && slideshow.slides.length) {
slideshow.slides[slideshow.current].style.height = '';
const height = video.getBoundingClientRect().height;
slideshow.container.style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)';
document.querySelector('.wrapperVideo').style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)';
}
} else {
if (slideshow.options.height === 'auto' && slideshow.slides.length) {
let maxHeight = 0;
slideshow.slides.forEach((slide) => {
slide.style.height = '';
const height = slide.getBoundingClientRect().height;
if (height > maxHeight) {
maxHeight = height;
}
});
slideshow.container.style.height = maxHeight + 'px';
slideshow.slides.forEach((slide) => {
slide.style.height = maxHeight + 'px';
});
}
}
}
},
/**
* Lazy load slides
*/
loadSlides($refs) {
this.slideshow.slides.forEach((slideElem, index) => {
if (index) {
const slideImg = slideElem.querySelector('img.aw-rbslider__img');
if (slideImg && slideImg.dataset.src) {
slideImg.addEventListener('load', () => {
slideImg.classList.add('is-loaded');
});
slideImg.src = slideImg.dataset.src;
slideImg.removeAttribute('data-src');
}
}
});
},
clickSliderEvent(url, label) {
window.dataLayer?.push({
'event': 'clicSliderHP',
'text': label
});
window.location.href = url
},
/**
* Compare current time with schedule
*/
timeValidator(schedule) {
const currentDateMinute = Math.floor(Date.now() / 1000 / 60);
let isValid = false;
schedule.forEach(item => {
if (currentDateMinute === Math.floor(new Date(item).getTime() / 1000 / 60)) {
isValid = true;
}
});
return isValid;
},
/**
* Send request for clean banner cache
*/
sendRequest(bannerId) {
const formKey = hyva.getFormKey();
fetch(this.options.cacheCleanUrl, {
method: 'post',
headers: {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
body: "form_key=" + formKey + "&bannerId=" + bannerId,
mode: "cors",
credentials: "include"
});
},
/**
* Schedule call to sendRequest for future schedule item
*/
delayedUpdate(futureTime) {
const currentDateMinute = Math.floor(Date.now() / 1000 / 60);
const interval = Math.floor(new Date(futureTime).getTime() / 1000 / 60) - currentDateMinute;
if (interval > 0) {
setTimeout(() => this.sendRequest(this.options.bannerId), interval);
}
},
/**
* @private
*/
_randomSort() {
const sliderListSelector = this.options.sliderListSelector,
sliderItemSelector = this.options.sliderItemSelector;
this.$el.querySelector(sliderListSelector)
.innerHTML = Array.from(this.$el.querySelectorAll(sliderListSelector + ' ' + sliderItemSelector))
.sort(() => Math.random() - 0.5)
.map(item => item.outerHTML)
.join('');
},
}
}</script><div class="footer content"> <script>
addEventListener('DOMContentLoaded', () => {
for (const [selector, label] of Object.entries({"aside.sidebar-main":"Sidebar Main","aside.sidebar-additional":"Sidebar Additional"})) {
const target = document.querySelector(selector);
target && target.setAttribute('aria-label', label);
}
}, {once: true})</script> <div class="bg-white"><div class="max-w-footer-container px-2 md:px-8.5 xl:px-0 py-12 md:py-20 grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-x-2 md:gap-x-5 items-start text-center mx-auto"> <div class="reassurance-item mx-auto flex flex-col gap-3.5"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="help" version="1.1" x="0px" y="0px" viewbox="0 0 23.8 22.8" enable-background="new 0 0 23.8 22.8" xml:space="preserve" class="text-lavender shrink-0 h-8.75 w-auto mx-auto" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.9,0.5C5.6,0.5,0.5,4.7,0.5,9.9 c0.1,2.6,1.3,5.1,3.4,6.7l-2.4,5.7l6.3-3.6c1.3,0.4,2.7,0.6,4.1,0.6c6.3,0,11.4-4.2,11.4-9.4C23.3,4.7,18.2,0.5,11.9,0.5z"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M8.9,7.4c0-1.5,1.1-2.7,2.6-2.9 c1.5-0.2,2.9,0.7,3.3,2.1c0.4,1.4-0.3,2.9-1.7,3.5c-0.7,0.3-1.2,1-1.2,1.8v0.4"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d=" M11.9,14.6c0.1,0,0.2,0.1,0.2,0.2s-0.1,0.2-0.2,0.2s-0.2-0.1-0.2-0.2S11.8,14.6,11.9,14.6z"/>
<title/></svg>
<div class="font-secondary font-bold text-anthracite-600 text-lg leading-[1.3] break-words"><a href="https://support.adopt.com/hc/fr/requests/new">Contactez nous </a></div><div class="font-medium text-sm text-anthracite-400"><a href="https://support.adopt.com/hc/fr/requests/new">via formulaire de contact</a>.</div></div> <div class="reassurance-item mx-auto flex flex-col gap-3.5"><svg xmlns="http://www.w3.org/2000/svg" class="text-lavender shrink-0 h-8.75 w-auto mx-auto" data-icon="logo-myAdopt" version="1.1" viewbox="0 0 951.26 264" role="img">
<!-- Generator: Adobe Illustrator 29.5.1, SVG Export Plug-In . SVG Version: 2.1.0 Build 141) -->
<path fill="currentColor" d="M315.14,145.46c0-23.14-19.29-39.34-38.57-39.34-20.57,0-36.77,18-36.77,39.34s16.2,39.6,37.29,39.6,38.06-16.97,38.06-39.6M315.4,85.55h7.2c9.94,0,18,8.06,18,18v102.09h-7.2c-9.94,0-18-8.06-18-18v-2.32c-7.71,13.88-24.17,23.4-42.68,23.4-31.37,0-58.37-26.22-58.37-63.26s25.46-63,59.4-63c17.49,0,33.94,7.46,41.65,21.08v-18Z"/>
<path fill="currentColor" d="M457.07,145.2c0-24.17-19.8-39.08-38.31-39.08-20.57,0-37.29,16.46-37.29,39.08s16.72,39.86,37.29,39.86,38.31-15.69,38.31-39.86M457.33,20.23h7.2c9.94,0,18,8.06,18,18v167.39h-7.2c-9.94,0-18-8.06-18-18-7.97,13.62-25.2,21.08-41.4,21.08-32.66,0-59.66-25.2-59.66-63.26s27-63,59.4-63c16.97,0,33.68,7.2,41.65,20.83V20.23Z"/>
<path fill="currentColor" d="M598.75,145.46c0-23.14-17.49-39.34-38.06-39.34s-37.8,16.2-37.8,39.34,17.23,39.6,37.8,39.6,38.06-16.2,38.06-39.6M497.69,145.46c0-38.06,28.8-63,63-63s63.25,24.94,63.25,63-29.05,63.26-63.25,63.26-63-25.2-63-63.26"/>
<path fill="currentColor" d="M740.17,145.97c0-22.63-16.46-39.86-37.29-39.86s-38.31,15.69-38.31,39.86,19.8,39.08,38.31,39.08c20.83,0,37.29-16.45,37.29-39.08M765.63,145.72c0,38.31-27,63-59.66,63-16.97,0-33.68-7.2-41.65-20.83v76.11h-7.2c-9.94,0-18-8.06-18-18V85.55h7.2c9.94,0,18,8.06,18,18,7.97-13.63,25.46-21.08,41.65-21.08,32.4,0,59.66,25.2,59.66,63.26"/>
<path fill="currentColor" d="M839.42,85.55v4.77c0,9.01-7.31,16.31-16.31,16.31h-9.4v99h-7.2c-9.94,0-18-8.06-18-18v-81h-21.6v-4.77c0-9.01,7.31-16.31,16.32-16.31h5.28v-45h7.2c9.94,0,18,8.06,18,18v27h25.71Z"/>
<path fill="currentColor" d="M908.04,10.14c-.2,1.11-1.26,1.85-2.37,1.66-1.11-.2-1.86-1.26-1.66-2.37.19-1.11,1.26-1.86,2.37-1.66,1.11.19,1.86,1.26,1.66,2.37M918.22,6.06c-7.43.87-7.12-3.43-14.45-2.78-11.01.99-13.61,14.05-14.48,18.56-.32,1.64-.57,3.13-1.21,5.11l-44.22-19.55c3.82,3.57,5.95,8.06,8.82,12.87,1.86,3.12,3.43,5.99,5.61,9.39,2.01,3.15,4.43,6.02,6.99,8.74,3.69,3.91,7.88,7.41,12.39,10.33,3.15,2.1,6.58,3.85,10.09,5.27,2.49,1.01,5.09,1.85,7.77,1.93,1.51.05,2.97-.22,4.32-.74-1.89,1.18-4.15,1.83-6.54,1.71-2.75-.12-5.42-1.02-7.98-2.08-3.23-1.34-6.39-2.93-9.35-4.8-13.57,25.22-20.17,58.35-20.17,58.35,2.57-9.27,17.56-23.16,24.26-27.49,11.28-7.29,22.15-16.44,28.76-28.33,3.91-7.03,5.53-14.9,4.94-22.91-.47-6.3,1.61-12.53,6.13-17.06.95-.95,1.98-1.81,3.07-2.59,10.43-7.46,28.3-9.08,28.3-9.08-5.25-3.54-26.52,4.39-33.03,5.15"/>
<path fill="currentColor" d="M90.78,125.12c-3.32,0-6.5.58-9.45,1.64l-.07-.03c-4.95,1.68-9.09,4.56-12.63,8.29-1.37,1.37-3.47,4.07-4.62,5.58-4.17-9.17-12.95-15.48-23.9-15.48-3.32,0-6.5.58-9.45,1.64l-.07-.03c-4.95,1.68-9.09,4.56-12.63,8.29-.78.78-1.43,1.5-1.94,2.1v-.11c0-6.32-5.12-11.44-11.43-11.44H0v68.76c0,6.31,5.12,11.43,11.43,11.43h4.57v-47.28c.15-1.98.51-3.79,1.03-5.44h.07c.08-.35.18-.69.29-1.02,2.65-6.98,8.63-10.7,15.82-10.7,10.07,0,17.34,6.7,17.34,19.13v-.11l.09,32.51v1.47c0,6.31,5.12,11.43,11.43,11.43h4.57v-46.84c.13-2.15.5-4.11,1.06-5.88.08-.35.25-.69.36-1.02,2.65-6.98,8.62-10.7,15.82-10.7,10.07,0,17.34,6.7,17.34,19.13v-.11l.09,32.51v1.47c0,6.31,5.12,11.43,11.43,11.43h4.58v-52.72h0c0-15.42-11.12-27.92-26.54-27.92"/>
<path fill="currentColor" d="M189.81,127l-4.24-1.71-4.28,10.6-19.64,46.63-19.25-47.53c-2.97-7.35-10.12-11.39-15.98-9.03l-4.24,1.71,5.38,13.31,24.43,60.47.69,1.71c.05.11.09.21.14.32l-11.21,28.5-.55,1.36c-2.37,5.85.46,12.52,6.32,14.89l4.24,1.71,44.52-108.05c2.37-5.86-.46-12.52-6.32-14.89"/>
<title/></svg>
<div class="font-secondary font-bold text-anthracite-600 text-lg leading-[1.3] break-words"><a href="https://www.adopt.com/fr/programme-de-fidelite-myadopt">Programme de fidélité</a></div><div class="font-medium text-sm text-anthracite-400"><a href="https://www.adopt.com/fr/programme-de-fidelite-myadopt">Rejoignez myAdopt</a></div></div> <div class="reassurance-item mx-auto flex flex-col gap-3.5"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="transport-standard" version="1.1" x="0px" y="0px" viewbox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="text-lavender shrink-0 h-8.75 w-auto mx-auto" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M13.5,23.5c-1.1,0-2-0.9-2-2s0.9-2,2-2 s2,0.9,2,2S14.6,23.5,13.5,23.5z"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M5.5,23.5c-1.1,0-2-0.9-2-2s0.9-2,2-2 s2,0.9,2,2S6.6,23.5,5.5,23.5z"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M9.5,6c0.7-3.1,3.4-5.3,6.5-5.5 c3.1-0.2,6,1.7,7.1,4.7c1.1,3,0.2,6.3-2.2,8.3"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M15.5,8.5l3-3"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.5,16.2v-1.8h2.6c1.9,0,3.4,1.6,3.4,3.5 v3.5"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,22.5v-9.2c0-1,0.8-1.8,1.7-1.8h8.6 c0.9,0,1.7,0.8,1.7,1.8V17"/>
<title/></svg>
<div class="font-secondary font-bold text-anthracite-600 text-lg leading-[1.3] break-words"><a href="https://www.adopt.com/fr/livraison-retours">Livraison offerte</a> </div><div class="font-medium text-sm text-anthracite-400"><a href="https://www.adopt.com/fr/livraison-retours">dès 35€ d'achat</a>
</div></div> <div class="reassurance-item mx-auto flex flex-col gap-3.5"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="bank-card" version="1.1" x="0px" y="0px" viewbox="0 0 33 24" enable-background="new 0 0 33 24" xml:space="preserve" class="text-lavender shrink-0 h-8.75 w-auto mx-auto" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M29.1,0.8H3.5C2.1,0.8,1,1.9,1,3.3v17.5 c0,1.3,1.1,2.4,2.4,2.4h25.6c1.3,0,2.4-1.1,2.4-2.4V3.3C31.5,1.9,30.4,0.8,29.1,0.8z"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M1,6.9h30.5"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M7.1,13h11.2"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M7.1,17.1h7.1"/>
<title/></svg>
<div class="font-secondary font-bold text-anthracite-600 text-lg leading-[1.3] break-words">Paiement sécurisé
</div><div class="font-medium text-sm text-anthracite-400">par carte bancaire, paypal, amex, apple pay et klarna</div></div> <div class="reassurance-item mx-auto flex flex-col gap-3.5 hidden lg:flex"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="eclair" version="1.1" x="0px" y="0px" viewbox="0 0 16.7 23.7" enable-background="new 0 0 16.7 23.7" xml:space="preserve" class="text-lavender shrink-0 h-8.75 w-auto mx-auto" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M16.2,9.2l-9.6,14v-8.7H0.5l9.6-14v8.7H16.2z "/>
<title/></svg>
<div class="font-secondary font-bold text-anthracite-600 text-lg leading-[1.3] break-words"><a href="https://www.adopt.com/fr/offres-commerciales.html">le 4ème offert</a></div><div class="font-medium text-sm text-anthracite-400"><a href="https://www.adopt.com/fr/offres-commerciales.html">3 parfums achetés, le 4ème offert</a></div></div></div></div> <div class="footer bg-pink-100" x-data="initFooterSocialComponent()" > <div class="footer-socials pt-6 lg:pt-10 flex flex-row justify-center items-center"><a aria-label="instagram" @click.prevent="clickSocialLinkEvent('https://www.instagram.com/adoptparfums/', 'Instagram')" href="https://www.instagram.com/adoptparfums/" target="_blank" class="link flex justify-center items-center p-2.5 md:p-5 text-anthracite hover:text-pink" ><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="social-instagram" version="1.1" x="0px" y="0px" viewbox="0 0 19 19" enable-background="new 0 0 19 19" xml:space="preserve" class="w-auto h-7" width="24" height="24" role="img">
<path fill="currentColor" d="M19,5.6c0-1-0.2-1.7-0.4-2.3c-0.2-0.6-0.6-1.2-1.1-1.7c-0.5-0.5-1.1-0.9-1.7-1.1c-0.6-0.2-1.3-0.4-2.3-0.4 C12.4,0,12.1,0,9.5,0S6.6,0,5.6,0.1c-1,0-1.7,0.2-2.3,0.4C2.6,0.7,2.1,1.1,1.6,1.6C1.1,2.1,0.7,2.6,0.5,3.3C0.3,3.9,0.1,4.6,0.1,5.6 C0,6.6,0,6.9,0,9.5c0,2.6,0,2.9,0.1,3.9c0,1,0.2,1.7,0.4,2.3c0.2,0.6,0.6,1.2,1.1,1.7c0.5,0.5,1.1,0.9,1.7,1.1 c0.6,0.2,1.3,0.4,2.3,0.4c1,0,1.3,0.1,3.9,0.1c2.6,0,2.9,0,3.9-0.1c1,0,1.7-0.2,2.3-0.4C17,18,18,17,18.5,15.7 c0.2-0.6,0.4-1.3,0.4-2.3c0-1,0.1-1.3,0.1-3.9C19,6.9,19,6.6,19,5.6z M17.2,13.3c0,0.9-0.2,1.4-0.3,1.8c-0.3,0.8-1,1.5-1.8,1.8 c-0.3,0.1-0.8,0.3-1.8,0.3c-1,0-1.3,0.1-3.8,0.1c-2.5,0-2.8,0-3.8-0.1c-0.9,0-1.4-0.2-1.8-0.3c-0.4-0.2-0.8-0.4-1.1-0.7 c-0.3-0.3-0.6-0.7-0.7-1.1c-0.1-0.3-0.3-0.8-0.3-1.8c0-1-0.1-1.3-0.1-3.8c0-2.5,0-2.8,0.1-3.8c0-0.9,0.2-1.4,0.3-1.8 c0.2-0.4,0.4-0.8,0.7-1.1c0.3-0.3,0.7-0.6,1.1-0.7C4.2,2,4.7,1.8,5.7,1.8c1,0,1.3-0.1,3.8-0.1c2.5,0,2.8,0,3.8,0.1 c0.9,0,1.4,0.2,1.8,0.3c0.4,0.2,0.8,0.4,1.1,0.7c0.3,0.3,0.6,0.7,0.7,1.1c0.1,0.3,0.3,0.8,0.3,1.8c0,1,0.1,1.3,0.1,3.8 C17.3,12,17.3,12.3,17.2,13.3z"/>
<path fill="currentColor" d="M9.5,4.6c-2.7,0-4.9,2.2-4.9,4.9c0,2.7,2.2,4.9,4.9,4.9c2.7,0,4.9-2.2,4.9-4.9C14.4,6.8,12.2,4.6,9.5,4.6z M9.5,12.7c-1.8,0-3.2-1.4-3.2-3.2c0-1.8,1.4-3.2,3.2-3.2c1.8,0,3.2,1.4,3.2,3.2C12.7,11.3,11.3,12.7,9.5,12.7z"/>
<path fill="currentColor" d="M16,4.2c0,0.6-0.5,1.1-1.1,1.1s-1.1-0.5-1.1-1.1c0-0.6,0.5-1.1,1.1-1.1C15.4,3,16,3.6,16,4.2z"/>
<title/></svg>
</a> <a aria-label="tiktok" @click.prevent="clickSocialLinkEvent('https://www.tiktok.com/@adoptparfums', 'Tiktok')" href="https://www.tiktok.com/@adoptparfums" target="_blank" class="link flex justify-center items-center p-2.5 md:p-5 text-anthracite hover:text-pink" ><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="social-tik-tok" version="1.1" x="0px" y="0px" viewbox="0 0 17 19" enable-background="new 0 0 17 19" xml:space="preserve" class="w-auto h-7" width="24" height="24" role="img">
<path fill="currentColor" d="M9,0c-0.4,0-0.8,0.1-1,0.1C7.5,0.2,7.3,0.6,7.3,1L7,13.6v0c0,0.8-0.7,1.5-1.5,1.5c-0.8,0-1.5-0.7-1.5-1.5 c0-0.4,0.2-0.8,0.4-1c0.3-0.2,0.6-0.4,1-0.5c0.3,0,0.6-0.3,0.6-0.6L6.1,9c0-0.4-0.3-0.7-0.7-0.6C2.5,8.5,0,10.5,0,13.6 c0,3,2.4,5.4,5.5,5.4c3,0,5.5-2.4,5.5-5.4l-0.1-6.4c1.4,0.9,3.3,1.4,5.1,1.5c0.4,0,0.9-0.2,1-0.6C17,7.9,17,7.6,17,7.4 c0-0.3,0-0.5-0.1-0.7C16.8,6.2,16.3,6,16,6c-1.3-0.1-2.5-0.8-3.5-1.7c-1-0.9-1.6-2.1-1.8-3.3c-0.1-0.4-0.3-0.7-0.7-0.8 C9.7,0.1,9.4,0,9,0z"/>
<title/></svg>
</a> <a aria-label="facebook" @click.prevent="clickSocialLinkEvent('https://www.facebook.com/adoptparfumsdeFrance', 'Facebook')" href="https://www.facebook.com/adoptparfumsdeFrance" target="_blank" class="link flex justify-center items-center p-2.5 md:p-5 text-anthracite hover:text-pink" ><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="social-facebook" version="1.1" x="0px" y="0px" viewbox="0 0 10 20" enable-background="new 0 0 10 20" xml:space="preserve" class="w-auto h-7" width="24" height="24" role="img">
<path fill="currentColor" d="M2.2,11.1V20h4.2v-8.9h2.9L10,7.4H6.5V4.7c0-0.2,0-0.4,0.2-0.6C6.8,3.9,7,3.8,7.2,3.8h2.1V0H5.5 C3.7,0.3,2.4,1.7,2.2,3.5v3.8H0V11L2.2,11.1z"/>
<title/></svg>
</a> <a aria-label="youtube" @click.prevent="clickSocialLinkEvent('https://www.youtube.com/channel/UCCjIIgJBhO2I0OGh4soCFbw/featured', 'Youtube')" href="https://www.youtube.com/channel/UCCjIIgJBhO2I0OGh4soCFbw/featured" target="_blank" class="link flex justify-center items-center p-2.5 md:p-5 text-anthracite hover:text-pink" ><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="social-youtube" version="1.1" x="0px" y="0px" viewbox="0 0 23 16" enable-background="new 0 0 23 16" xml:space="preserve" class="w-auto h-5.5" width="24" height="24" role="img">
<path fill="currentColor" d="M15.9,0.1l0.5,0c1.7,0.1,3.4,0.2,4.1,0.4c1,0.3,1.8,1,2,2C23,4.1,23,7.1,23,7.9v0.2c0,0.4,0,3.8-0.5,5.5 c-0.3,1-1,1.8-2,2c-0.7,0.2-2.2,0.3-3.8,0.4l-0.5,0C14.3,16,12.6,16,11.8,16l-0.3,0c0,0,0,0,0,0h-0.1c0,0,0,0,0,0l-0.3,0 c-0.7,0-2.3,0-4-0.1l-0.5,0c-1.7-0.1-3.4-0.2-4.1-0.4c-1-0.3-1.8-1-2-2C0,11.9,0,8.7,0,8.1V7.9c0-0.4,0-1.7,0.1-3.1l0-0.5 C0.2,3.7,0.3,3,0.5,2.5c0.3-1,1.1-1.8,2-2c0.7-0.2,2.4-0.3,4.1-0.4l0.5,0C8.9,0,10.6,0,11.3,0l0.5,0C12.4,0,14.1,0,15.9,0.1z M9.2,4.6v6.9L15.3,8L9.2,4.6z"/>
<title/></svg>
</a></div> <div class="container px-7.5 lg:flex gap-10 xl:gap-20 pt-12 pb-13"><div class="flex flex-col h-full gap-6 lg:gap-12"> <div class="footer-newsletter bg-pink-150 p-6 pb-9" @click.away.outside="focusInput = false; errorMessage = ''" @click="focusInput = true" x-defer="intersect" x-data="initFooterNewsletterForm()"><form class="form subscribe xl:block" action="https://www.adopt.com/fr/newsletter/subscriber/index" method="post" @submit.prevent="submitForm()" autocomplete="off" id="footer-newsletter-validate-detail"><div class="font-secondary font-bold text-4.5xl">20% offerts</div><div class="uppercase font-medium text-sm leading-tightened tracking-spaced-lg">en vous inscrivant à notre newsletter</div><div class="mt-7.5 relative"><label for="newsletter-subscribe" class="sr-only">Adresse email</label> <div class="field text required w-full no-label"><div class="control relative"><input type="hidden" name="is_subscribed" value="1" ><input name="email" type="email" required id="newsletter-subscribe" @input="hasChanges = true; isCapValid = false;" @input.debounce.50="callSuggestionWebService()" @keydown.down.prevent="handleKeydown" @keydown.tab="handleKeydown" @keydown.up.prevent="handleKeydown" @keydown.enter="handleKeydown" placeholder="Mon e-mail" @focusin="onInputFocus()" class="bg-white rounded-full border-white w-full py-3.75 pl-6 pr-16 leading-none font-medium placeholder:text-anthracite-400" :class="{ 'border-red': errorMessage.length > 0 }" readonly :autocomplete="/chrom(e|ium)/.test(navigator.userAgent.toLowerCase()) ? 'none' : 'off'"><div class="hidden flex flex-col w-full z-10 bg-white absolute color-red border-1 border-lavender-400 max-h-[250px] overflow-y-auto" :class="{ 'block': focusInput, 'hidden': !focusInput }" x-ref="propcontainer" x-show="propositions.length > 0"><div class="pl-2 pt-3 text-xs md:text-sm md:max-w-[22.5rem] block text-red" x-show="correctionMessage.length > 0" x-text="correctionMessage"></div><template x-for="(prop, index) in propositions" :key="index"><div class="p-2 w-full cursor-pointer hover:bg-lavender-300" :class="{ 'bg-lavender-300': selectedIndex === index }" :data-index="index" @click="setAutocompleteValue(prop.sMail)"><span x-text="prop.sMail"></span></div></template></div><div class="pl-2 pt-3 text-xs md:text-sm md:max-w-[22.5rem] block text-red" x-show="errorMessage.length > 0" x-html="errorMessage"></div><input name="form_key" type="hidden" value="wCEGRg4d8StBnR6f" /> <button aria-label="newsletter button" :disabled="isLoading" class="absolute top-0 right-0 bg-anthracite text-white py-4.5 px-4 rounded-full"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewbox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-4.5" width="18" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/>
<title/></svg>
</button></div><div x-cloak class="pl-2 pt-3 text-xs md:text-sm md:max-w-[22.5rem]" :class="{ 'block': focusInput, 'hidden': !focusInput }"> <p>En indiquant votre adresse email ci-dessus, vous certifiez avoir 16 ans ou plus, vous acceptez la collecte et notre politique <a class="underline" href="https://www.adopt.com/fr/charte-de-confidentialite">de données personnelles</a> et consentez à recevoir nos propositions commerciales par voie électronique. Vous pouvez vous désinscrire ou modifier vos choix d’abonnement à tout moment à partir des liens de désinscription disponibles dans toutes nos communications ou via notre <a class="underline" href="https://support.adopt.com/hc/fr/requests/new">formulaire de contact.</a></p></div></div></div></form></div><script>
function initFooterNewsletterForm() {
return {
focusInput: false,
hasCaptchaToken: 0,
hasChanges: false,
errors: 0,
isLoading: false,
errorMessage: '',
correctionMessage: '',
propositions: {},
selectedIndex: -1,
onInputFocus() {
this.focusInput = true;
if (this.$el.hasAttribute('readonly')) {
this.$el.blur();
this.$el.removeAttribute('readonly');
this.$el.focus();
}
},
callSuggestionWebService() {
this.errorMessage = '';
this.isLoading = true;
if (window.capEmailController) {
window.capEmailController.abort()
}
window.capEmailController = new AbortController();
window.capEmailSignal = window.capEmailController.signal;
const $form = document.querySelector('#footer-newsletter-validate-detail');
const formData = new FormData($form);
formData.append('request', 'SEARCH');
formData.append('sInput', formData.get('email'));
fetch('https://www.adopt.com/fr/cap/email/suggest', {
method: 'POST',
body: formData,
signal: AbortSignal.any([capEmailSignal, AbortSignal.timeout(5000)]),
}).then(response =>
response.json()
).then(data=> {
if (!data.errors) {
this.isLoading = false;
this.propositions = {};
if (data.Mail && data.Mail.length > 0) {
this.propositions = data.Mail;
}
this.errorMessage = typeof data.sMessage === 'string'
? data.sMessage
: '';
}
else {
this.propositions = {};
this.isLoading = false;
this.hasCaptchaToken = 0;
}
}).catch(error => {
this.isLoading = false;
});
},
callValidationWebService() {
this.errorMessage = '';
this.correctionMessage = '';
this.isLoading = true;
const $form = document.querySelector('#footer-newsletter-validate-detail');
const formData = new FormData($form);
formData.append('request', 'PROP');
formData.append('sMail', formData.get('email'));
return fetch('https://www.adopt.com/fr/cap/email/suggest', {
method: 'POST',
body: formData,
signal: AbortSignal.timeout(5000),
}).then(response =>
response.json()
).then(data=> {
if (!data.errors) {
this.isLoading = false;
if (((data.iRet < 0) || ((data.iRet > 0) && (data.iRet != 2)))
||(data.iRet == 2 && (data.sCodeTraitement == '40001'))
) {
if (data.sCodeTraitement.startsWith('3')) {
this.errorMessage = typeof data.sMessage === 'string'
? data.sMessage + '<br>' + 'Veuillez valider à nouveau pour confirmer.'
: 'Une erreur s’est produite lors du traitement de votre formulaire. Veuillez réessayer ultérieurement.';
this.propositions = {};
return 'needConfirmation';
}
this.errorMessage = typeof data.sMessage === 'string'
? data.sMessage
: 'Une erreur s’est produite lors du traitement de votre formulaire. Veuillez réessayer ultérieurement.';
this.propositions = {};
return false;
}
if (data.iRet == 2 && data.Mail[0]) {
if (data.sCodeTraitement.startsWith('2')) {
this.correctionMessage = data.sMessage;
this.propositions = data.Mail;
$form.querySelector('#newsletter-subscribe').focus();
return false;
} else {
this.errorMessage = data.sMessage + '<br>' + 'Veuillez valider à nouveau pour confirmer.';
$form.querySelector('#newsletter-subscribe').value = data.Mail[0].sMail;
$form.querySelector('#newsletter-subscribe').focus();
return 'needConfirmation';
}
}
return true;
}
}).catch(error => {
this.isLoading = false;
return true;
});
},
setAutocompleteValue(value) {
this.hasChanges = true;
const $input = document.querySelector('#newsletter-subscribe');
$input.value = value;
$input.focus();
this.propositions = {};
this.selectedIndex = -1;
},
handleKeydown(event) {
if (!this.propositions.length) {
return;
}
let propcontainer = this.$refs.propcontainer;
if (event.key === 'ArrowDown' || event.key === 'Tab') {
event.preventDefault();
if (this.selectedIndex < this.propositions.length - 1) {
this.selectedIndex++;
}
} else if (event.key === 'ArrowUp') {
event.preventDefault();
if (this.selectedIndex > 0) {
this.selectedIndex--;
}
} else if (event.key === 'Enter' && this.selectedIndex >= 0) {
event.preventDefault();
this.setAutocompleteValue(this.propositions[this.selectedIndex].sMail);
}
if (propcontainer) {
propcontainer.scrollTop = propcontainer.querySelector(`[data-index="${this.selectedIndex}"]`).offsetTop - 100;
}
},
sendFooterNewsletterSubscribeEvent() {
window.dataLayer?.push({
'event': 'newsletterSoumission',
'category': 'Footer'
});
},
submitForm() {
const $form = document.querySelector('#footer-newsletter-validate-detail');
const self = this;
if (!this.isCapValid && this.hasChanges) {
this.callValidationWebService().then((validationResult) => {
if ((validationResult == true) && (this.errors === 0)) {
this.isCapValid = true;
this.hasChanges = false;
this.sendFooterNewsletterSubscribeEvent();
self.submit($form);
}
else if (validationResult == 'needConfirmation') {
this.isCapValid = true;
this.hasChanges = false;
}
else if (validationResult == false) {
this.isCapValid = false;
this.hasChanges = false;
}
});
} else if (this.isCapValid && !this.hasChanges && (this.errors === 0)) {
if (this.errors === 0) {
this.sendFooterNewsletterSubscribeEvent();
self.submit($form);
}
}
},
submit($form) {
const $cfTurnstileResponse = $form.querySelector('input[name="cf-turnstile-response"]');
if (!$cfTurnstileResponse) {
$form.submit();
}
if ($cfTurnstileResponse && $cfTurnstileResponse.value) {
$form.submit();
}
if (!$cfTurnstileResponse.value) {
let attempts = 0;
const maxAttempts = 100;
const checkWidgetId = setInterval(() => {
if ($cfTurnstileResponse.value || attempts >= maxAttempts) {
clearInterval(checkWidgetId);
if ($cfTurnstileResponse.value) {
$form.submit();
}
}
attempts++;
}, 100);
}
}
}
}</script> <div class="footer-reviews flex flex-col"><div class="flex gap-4.5"><img class="" height="66" width="66" loading="lazy" src="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/images/label-truystville.svg" alt="Logo Trustville"><div class="flex flex-col w-full"><div class="font-secondary font-bold text-3xl leading-none"><span>4.4</span> <span>/5</span></div><div class="flex gap-1 mt-2"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4" width="24" height="24" role="img">
<path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/>
<title/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewbox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img">
<path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/>
<g style="opacity:0.2988;">
<path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/>
</g>
<title/></svg>
</div><div class="mt-2 text-anthracite-400 font-medium text-sm leading-tightened"><span class="">12533</span> <span class="">avis clients</span></div></div></div><div class="text-sm text-anthracite-400 mt-6">Nos clients aiment et recommandent adopt.</div><div><a href="https://trustville.fr/avis-clients/pc/peruda/parfumerie/adopt_com" class="link link-simple" target="_blank" rel="noopener noreferrer">Voir leurs avis</a></div></div></div> <div class="flex-1 flex flex-col md:items-end h-full gap-12 lg:gap-12"> <div class="footer-links w-full"><div class="pt-7.5 md:flex md:gap-5 md:justify-between xl:pt-0" > <div class="border-t border-pink-150 last-of-type:border-b md:border-none pt-5 md:w-1/3 xl:pt-0" x-data="footerComponent_693003ffbf83c()" @resize.window.debounce.100="width = window.innerWidth;open = width > breakpoint" ><button class="pb-5 text-sm tracking-spaced-lg w-full font-medium uppercase flex justify-between items-center md:hidden" @click=" open ? open = false : open = true;" ><span>L'entreprise adopt</span> <span class="rotate-90" :class="{ '-rotate-90': open, 'rotate-90': !open }"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewbox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-2.75 fat-icon md:hidden" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/>
<title/></svg>
</span></button> <div class="pb-5 text-sm tracking-spaced-lg uppercase font-medium hidden md:block">L'entreprise adopt</div><div x-show="open" class="footer-block-links transition-transform ease-out overflow-hidden origin-top transform pb-5"><ul>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/nos-engagements', 'Nos engagements')" title="Nos engagements" href="https://www.adopt.com/fr/nos-engagements">Nos engagements</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://franchise.adopt.com/', 'Devenir franchisé')" title="Devenir franchisé" href="https://franchise.adopt.com/">Devenir franchisé</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/lemag/', 'Le Mag')" title="Le Mag" href="https://www.adopt.com/fr/lemag/">Le Mag</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/index-egalite-homme-femme', 'Index égalité Homme/Femme')" title="Index égalité Homme/Femme" href="https://www.adopt.com/fr/index-egalite-homme-femme">Index égalité Homme/Femme</a></li>
<li><a
@click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/charte-de-confidentialite', 'Charte de confidentialité')" title="Charte de confidentialité" href="https://www.adopt.com/fr/charte-de-confidentialite">Charte de confidentialité</a</li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/enable-cookies', 'Politique de cookies')" title="Données personnelles" href="https://www.adopt.com/fr/enable-cookies">Données personnelles</a></li>
<li><a title="Paramètres de cookies" href="javascript:Didomi.preferences.show()">Paramètres de cookies</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/mentions-legales', 'Mentions légales')" title="Mentions légales" href="https://www.adopt.com/fr/mentions-legales">Mentions légales</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cgv', 'CGV')" title="CGV" href="https://www.adopt.com/fr/cgv">CGV</a></li>
<li><a
@click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cgu-myadopt', 'Conditions générales dutilisation du programme myAdopt')" title="Conditions générales d'utilisation du programme myAdopt" href="https://www.adopt.com/fr/cgu-myadopt">Conditions générales d'utilisation du programme myAdopt</a</li>
<li><a @click.prevent="clickMenuEntryEvent('https://adopt.flatchr.io/fr/company/adopt', 'Nous rejoindre')" title="Nous rejoindre" href="https://adopt.flatchr.io/fr/company/adopt">Nous rejoindre</a></li>
<li><a
</ul></div></div><script>
function footerComponent_693003ffbf83c() {
return {
width: window.innerWidth,
breakpoint: 640,
open: window.innerWidth > 640,
clickMenuEntryEvent(url, label, blank = false) {
window.dataLayer?.push({
'event': 'clicMenuFooter',
'text': label
});
if (blank) {
window.open(url, '_blank');
} else {
window.location.href = url
}
}
}
}</script> <div class="border-t border-pink-150 last-of-type:border-b md:border-none pt-5 md:w-1/3 xl:pt-0" x-data="footerComponent_693003ffc15ff()" @resize.window.debounce.100="width = window.innerWidth;open = width > breakpoint" ><button class="pb-5 text-sm tracking-spaced-lg w-full font-medium uppercase flex justify-between items-center md:hidden" @click=" open ? open = false : open = true;" ><span>Infos pratiques</span> <span class="rotate-90" :class="{ '-rotate-90': open, 'rotate-90': !open }"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewbox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-2.75 fat-icon md:hidden" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/>
<title/></svg>
</span></button> <div class="pb-5 text-sm tracking-spaced-lg uppercase font-medium hidden md:block">Infos pratiques</div><div x-show="open" class="footer-block-links transition-transform ease-out overflow-hidden origin-top transform pb-5"><ul>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/store-locator', 'Nos boutiques')" title="Nos boutiques" href="https://www.adopt.com/fr/store-locator">Nos boutiques</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/offres-commerciales.html', 'Nos offres')" title="Nos offres" href="https://www.adopt.com/fr/offres-commerciales.html">Nos offres </a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/be-fr/sales/order/tracking', 'Suivre ma commande')" title="Suivre ma commande" href="https://www.adopt.com/be-fr/sales/order/tracking">Suivre ma commande</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://support.adopt.com/hc/fr', 'Aide et contact')" title="Aide et contact" href="https://support.adopt.com/hc/fr">Aide et contact</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/livraison-retours', 'Livraison et retours')" title="Livraison et retours" href="https://www.adopt.com/fr/livraison-retours">Livraison et retours</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/offre-de-parrainage', 'Offre de parrainage -20%')" title="Offre de parrainage -20%" href=" https://www.adopt.com/fr/offre-de-parrainage" </>Offre de parrainage -20%</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/live-shopping', 'Notre live shopping')" title="Nos lives shopping" href="https://www.adopt.com/fr/live-shopping">Nos lives shopping</a></li>
</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/nos-services-en-boutique', 'Nos services en boutique')" title="Nos services en boutique" href="https://www.adopt.com/fr/nos-services-en-boutique">Nos services en boutique</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/accessibilite-numerique', 'Accessibilité : partiellement conforme')" title="Accessibilité : partiellement conforme" href="https://www.adopt.com/fr/accessibilite-numerique">Accessibilité : partiellement conforme</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/programme-de-fidelite-myadopt', 'Programme de fidélité myAdopt')" title="Programme de fidélité myAdopt" href="https://www.adopt.com/fr/programme-de-fidelite-myadopt">Programme de fidélité myAdopt</a></li>
</ul></div></div><script>
function footerComponent_693003ffc15ff() {
return {
width: window.innerWidth,
breakpoint: 640,
open: window.innerWidth > 640,
clickMenuEntryEvent(url, label, blank = false) {
window.dataLayer?.push({
'event': 'clicMenuFooter',
'text': label
});
if (blank) {
window.open(url, '_blank');
} else {
window.location.href = url
}
}
}
}</script> <div class="border-t border-pink-150 last-of-type:border-b md:border-none pt-5 md:w-1/3 xl:pt-0" x-data="footerComponent_693003ffc1c9b()" @resize.window.debounce.100="width = window.innerWidth;open = width > breakpoint" ><button class="pb-5 text-sm tracking-spaced-lg w-full font-medium uppercase flex justify-between items-center md:hidden" @click=" open ? open = false : open = true;" ><span>Nos produits</span> <span class="rotate-90" :class="{ '-rotate-90': open, 'rotate-90': !open }"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewbox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-2.75 fat-icon md:hidden" width="15" height="15" role="img">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/>
<title/></svg>
</span></button> <div class="pb-5 text-sm tracking-spaced-lg uppercase font-medium hidden md:block">Nos produits</div><div x-show="open" class="footer-block-links transition-transform ease-out overflow-hidden origin-top transform pb-5"><ul>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/parfum.html', 'Parfum')" title="Parfum" href="https://www.adopt.com/fr/parfum.html">Parfum</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-corps.html', 'Soin')" title="Soin corps" href="https://www.adopt.com/fr/soin-corps.html">Soin corps</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/soin-visage.html', 'Soin')" title="Soin visage" href="https://www.adopt.com/fr/soin-visage.html">Soin visage</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/maquillage.html', 'Maquillage')" title="Maquillage" href="https://www.adopt.com/fr/maquillage.html">Maquillage</a></li>
<li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/fr/cadeaux.html', 'Cadeau')" title="Cadeau" href="https://www.adopt.com/fr/cadeaux.html">Cadeau</a></li>
</ul></div></div><script>
function footerComponent_693003ffc1c9b() {
return {
width: window.innerWidth,
breakpoint: 640,
open: window.innerWidth > 640,
clickMenuEntryEvent(url, label, blank = false) {
window.dataLayer?.push({
'event': 'clicMenuFooter',
'text': label
});
if (blank) {
window.open(url, '_blank');
} else {
window.location.href = url
}
}
}
}</script></div></div> <div> <div x-data="initStoreSwitcherForm_693003ffc26a3()" @private-content-loaded.window.debounce="onPrivateContentLoaded($event.detail.data)"><div :class="!isFromMobileMenu ? 'relative inline-block text-left' : ''"><template x-if="currentStoreCountryName && currentStoreLanguageCode && currentStoreSvg"><div><button @click.prevent="storeMenuMobile();" @keydown.window.escape="storeMenuMobile('close');" type="button" :class="isFromMobileMenu ? 'py-4 text-xs-tiny gap-6' : 'justify-center w-full focus:outline-none border-none p-0 flex-row-reverse gap-2'" class="flex items-center" aria-haspopup="true" aria-expanded="true" x-html='isFromMobileMenu ? currentStoreSvg + "<span>" + currentStoreCountryName.toUpperCase() + " (" + currentStoreLanguageCode.toUpperCase() + ")</span>" : "<span class=\"link link-simple \">" + currentStoreCountryName.toUpperCase() + " (" + currentStoreLanguageCode.toUpperCase() + ")</span> " + currentStoreSvg' ></button></div></template> <div class="stores-choice fixed inset-0 z-40 flex items-center justify-center overflow-auto bg-black bg-opacity-50" style="height: calc(100vh + 53px);display: none;"><div class="bg-white flex flex-col md:flex-row-reverse md:items-start md:max-w-product-container md:mx-auto relative md:h-[550px] mx-5 my-5 md:mx-20"><button type="button" class="z-50 absolute top-2 right-2 cursor-pointer hover:bg-anthracite hover:text-white rounded-full bg-white p-1.5" @click="storeMenuMobile('close');"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" fill="white" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" d="M6 18L18 6M6 6l12 12"/></svg></button> <div class="max-w-[575px] md:w-[45%] h-[250px] md:h-full"><img class="z-41 h-full w-full object-cover" loading="lazy" src="https://adopt.twic.pics/media/adopt/modal/welcome/default/SM_PERF_BESTOF.jpg?twic=v1/output=preview" data-twic-src="image:media/adopt/modal/welcome/default/SM_PERF_BESTOF.jpg" data-twic-transform="cover-max=575" alt=""></div> <div class="flex-1 flex flex-col items-center pt-4 md:justify-center md:h-full"><div class="w-5/6 md:w-2/3 flex flex-col aspect-square items-center justify-center text-center"><div class="flex justify-center text-lg leading-tightened tracking-[1.5px] w-full uppercase z-10 font-semibold text-anthracite-600"><span x-html="translatedWordings.modalTitle[userLanguageCode] ?? translatedWordings.modalTitle['en']"></span></div><div class="flex px-3 py-4 z-10 w-full justify-center"><span x-html="translatedWordings.modalDescription[userLanguageCode] ?? translatedWordings.modalDescription['en']"></span></div><form class="items-center justify-between z-10 w-full" id="store-switcher-form" action="https://www.adopt.com/fr/inter/store/switcher" @submit.prevent="submitForm()" ><div class="field w-full pb-4"><div x-data="{ open: false }" class="relative"><button x-on:click="open = true" class="flex items-center bg-white focus:bg-gray-400 text-gray-700 focus:text-gray-900 font-semibold rounded focus:outline-none focus:shadow-inner w-full form-select py-2 px-4" type="button"><span class="mr-1"><template x-if="selectedStore"><span class="flex"><span class="pt-1" x-html="svgTemplate.replace('%1', selectedStore.country_code.toLowerCase()).replace('%2', (selectedStore.country_label[userLanguageCode] ?? selectedStore.country_label['en']) + ' flag')"></span> <span class="pl-2" x-html="(selectedStore.country_label[userLanguageCode] ?? selectedStore.country_label['en']) + ' (' + selectedStore.locale_label + ')'"></span></span></template><span x-show="!selectedStore" x-html="translatedWordings.selectTitle[userLanguageCode] ?? translatedWordings.selectTitle['en']"></span></span></button> <ul x-show="open" x-on:click.away="open = false" class="bg-white text-gray-700 rounded shadow-lg absolute py-2 mt-1 max-h-60 overflow-y-auto z-50 w-full" style="min-width:15rem"><template x-for="(website, index) in websites" :key="index"><li :value="website.store_code" :data-country-code="website.country_code"><div @click.prevent="selectStore(website); open = false" class="flex cursor-pointer hover:bg-gray-200 whitespace-no-wrap py-2 px-4"><img :alt="website.country_label + ' flag'" :src="svgBaseUrl + '/' + website.country_code.toLowerCase() + '.svg'" loading="lazy" height="20" width="20"><span class="pl-2" x-html="(website.country_label[userLanguageCode] ?? website.country_label['en']) + ' (' + website.locale_label + ')'"></span></div></li></template></ul></div></div><template x-if="selectedStore"><div><input type="hidden" name="store_code" :value="selectedStore.store_code"><input type="hidden" name="country" :value="selectedStore.country_code"><input type="hidden" name="destination_url" :value="destinationUrl"></div></template><button class="btn btn-primary btn-size-sm w-full md:py-4 py-3 md:px-30 px-6 justify-center"><span x-html="translatedWordings.modalButton[userLanguageCode] ?? translatedWordings.modalButton['en']"></span></button></form></div></div></div></div></div></div><script>
function initStoreSwitcherForm_693003ffc26a3() {
return {
currentCountrySvg: null,
currentStoreCountryCode: 'FR',
currentStoreCountryName: '',
currentStoreLanguageCode: 'fr',
currentStoreSvg: null,
destinationUrl: null,
directoryData: null,
geoIpCountryCode: hyva.getCookie('select-store-user-country-code'),
isFromMobileMenu: 0,
selectedStore: null,
svgBaseUrl: 'https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/Hyva_Theme/svg/flag',
svgTemplate: '<img loading="lazy" src="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/Hyva_Theme/svg/flag/%1.svg" alt="%2" height="20" width="20">',
translatedWordings: {"modalTitle":{"fr":"Bienvenue sur Adopt.com","en":"Welcome on Adopt.com","es":"Bienvenido a Adopt.com","it":"Benvenuto su Adopt.com","nl":"Welkom op Adopt.com"},"selectTitle":{"fr":"Pays de livraison","en":"Shipping country","es":"Pa\u00eds de entrega","nl":"Land van levering","it":"Paese di consegna"},"modalDescription":{"fr":"Veuillez choisir votre <b>pays de livraison<\/b>","en":"Please choose your <b>delivery country<\/b>","es":"Elija su pa\u00eds de <b>entrega<\/b>","it":"Scegli il <b>paese di consegna<\/b>","nl":"Kies het <b>land van levering<\/b>"},"modalButton":{"fr":"Appliquer","en":"Apply","es":"Solicitar","it":"Applicare","nl":"Toepassen"}},
userLanguageCode: window.navigator.language.indexOf("-") > 0 ? window.navigator.language.substring(0, window.navigator.language.indexOf("-")) : window.navigator.language,
websites: [{"country_code":"FR","country_label":{"fr":"France","es":"Francia","en":"France","nl":"Frankrijk"},"locale_code":"default","locale_label":"fr","store_code":"fr","destinationUrl":"https:\/\/www.adopt.com\/fr\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"FR","locale_label":"fr","store_code":"be-fr","destinationUrl":"https:\/\/www.adopt.com\/be-fr\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"NL","locale_label":"nl","store_code":"be-nl","destinationUrl":"https:\/\/www.adopt.com\/be-nl\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"CA","country_label":{"fr":"Canada","es":"Canad\u00e1","en":"Canada","nl":"Canada"},"locale_code":"default","locale_label":"fr","store_code":"ca-fr","destinationUrl":"https:\/\/www.adopt.com\/ca-fr\/"},{"country_code":"DE","country_label":{"fr":"Allemagne","es":"Alemania","en":"Germany","nl":"Duitsland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"AT","country_label":{"fr":"Autriche","es":"Austria","en":"Austria","nl":"Oostenrijk"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"HR","country_label":{"fr":"Croatie","es":"Croacia","en":"Croatia","nl":"Kroati\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"DK","country_label":{"fr":"Danemark","es":"Dinamarca","en":"Denmark","nl":"Denemarken"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"ES","country_label":{"fr":"Espagne","es":"Espa\u00f1a","en":"Spain","nl":"Spanje"},"locale_code":"default","locale_label":"es","store_code":"es","destinationUrl":"https:\/\/www.adopt.com\/es\/"},{"country_code":"EE","country_label":{"fr":"Estonie","es":"Estonia","en":"Estonia","nl":"Estland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"FI","country_label":{"fr":"Finlande","es":"Finlandia","en":"Finland","nl":"Finland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"GR","country_label":{"fr":"Gr\u00e8ce","es":"Grecia","en":"Greece","nl":"Griekenland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"HU","country_label":{"fr":"Hongrie","es":"Hungr\u00eda","en":"Hungary","nl":"Hongarije"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"IE","country_label":{"fr":"Irlande","es":"Irlanda","en":"Ireland","nl":"Ierland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"IT","country_label":{"fr":"Italie","es":"Italia","en":"Italy","nl":"Itali\u00eb"},"locale_code":"default","locale_label":"it","store_code":"it","destinationUrl":"https:\/\/www.adopt.com\/it\/"},{"country_code":"LV","country_label":{"fr":"Lettonie","es":"Letonia","en":"Latvia","nl":"Letland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"LT","country_label":{"fr":"Lituanie","es":"Lituania","en":"Lithuania","nl":"Litouwen"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"LU","country_label":{"fr":"Luxembourg","es":"Luxemburgo","en":"Luxembourg","nl":"Luxemburg"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"NL","country_label":{"fr":"Pays-Bas","es":"Pa\u00edses Bajos","en":"Netherlands","nl":"Nederland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"PL","country_label":{"fr":"Pologne","es":"Polonia","en":"Poland","nl":"Polen"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"PT","country_label":{"fr":"Portugal","es":"Portugal","en":"Portugal","nl":"Portugal"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"RO","country_label":{"fr":"Roumanie","es":"Ruman\u00eda","en":"Romania","nl":"Roemeni\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SK","country_label":{"fr":"Slovaquie","es":"Eslovaquia","en":"Slovakia","nl":"Slowakije"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SI","country_label":{"fr":"Slov\u00e9nie","es":"Eslovenia","en":"Slovenia","nl":"Sloveni\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SE","country_label":{"fr":"Su\u00e8de","es":"Suecia","en":"Sweden","nl":"Zweden"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"CZ","country_label":{"fr":"Tch\u00e9quie","es":"Chequia","en":"Czechia","nl":"Tsjechi\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"}],
initComponent() {
this.$watch('geoIpCountryCode', (value) => {
this.openModaleIfNeeded(value);
});
this.initDefaultValues();
if (!this.hasUserChoice() && !this.geoIpCountryCode) {
this.getCountryFromHeader();
}
this.openModaleIfNeeded(this.geoIpCountryCode);
},
onPrivateContentLoaded(data) {
if (data['directory-data']) {
this.directoryData = data['directory-data'];
this.initComponent()
}
},
openModaleIfNeeded(geoIpCountryCode) {
if (!geoIpCountryCode) {
return;
}
if (!this.hasUserChoice() && (geoIpCountryCode != this.currentStoreCountryCode)) {
this.selectStoreBasedOnUser(geoIpCountryCode);
if (this.selectedStore) {
this.storeMenuMobile();
}
}
},
selectStoreBasedOnUser(geoIpCountryCode) {
let defaultStoreForCountry = null;
this.websites.forEach(element => {
if (element.country_code.toLowerCase() == geoIpCountryCode.toLowerCase()) {
if (element.locale_code.toLowerCase() == 'default') {
defaultStoreForCountry = element;
}
if (element.locale_code.toLowerCase() == this.userLanguageCode.toLowerCase()) {
this.selectedStore = element;
}
}
})
if (!this.selectedStore) {
this.selectedStore = defaultStoreForCountry;
}
if (this.selectedStore) {
const hrefElement = document.getElementById('alternate-url-' + this.selectedStore.store_code);
this.destinationUrl = hrefElement ? hrefElement.getAttribute('href') : this.selectedStore.destinationUrl;
}
},
selectStore(website) {
this.selectedStore = website;
const hrefElement = document.getElementById('alternate-url-' + this.selectedStore.store_code);
this.destinationUrl = hrefElement ? hrefElement.getAttribute('href') : this.selectedStore.destinationUrl;
},
initDefaultValues() {
const selectedCountry = hyva.getCookie('selected_country');
if (selectedCountry) {
this.currentStoreCountryCode = selectedCountry;
}
if (this.directoryData) {
this.currentStoreCountryName = this.directoryData[this.currentStoreCountryCode].name;
this.currentStoreSvg = this.svgTemplate
.replace('%1', this.currentStoreCountryCode.toLowerCase())
.replace('%2', this.currentStoreCountryName + ' flag');
}
},
remindUserChoice() {
hyva.setCookie('select-store-user-choice', true, 365, true);
},
hasUserChoice() {
return hyva.getCookie('select-store-user-choice') !== null;
},
getCountryFromHeader() {
const client = new XMLHttpRequest();
client.open("HEAD", window.location, true);
client.send(null);
client.onreadystatechange = () => {
if (client.readyState === client.HEADERS_RECEIVED) {
const disCountry = client.getResponseHeader("X-Dis-Country");
if (disCountry) {
hyva.setCookie('select-store-user-country-code', disCountry, 7, true);
this.geoIpCountryCode = disCountry;
}
client.abort();
}
};
},
submitForm() {
const $form = document.querySelector('#store-switcher-form');
window.dataLayer?.push({
'event': 'selectionPaysLivraison',
'pays': this.selectedStore.country_label['en'],
'langue': this.selectedStore.store_code.toUpperCase(),
});
this.remindUserChoice();
$form.submit();
},
storeMenuMobile($close) {
const storeSelectorModale = document.querySelector('.stores-choice');
if (storeSelectorModale) {
if ($close) {
this.remindUserChoice();
storeSelectorModale.style.display = 'none';
} else {
storeSelectorModale.style.display = 'flex';
}
}
}
}
}</script></div></div></div> <div class="footer-seo bg-[#FFE0E6] px-7.5 py-12 text-sm"> Créateur de parfums depuis 40 ans, Adopt développe une gamme de fragrances de qualité, uniques, addictives, accessibles à toutes et à tous à partir de 11.95€, exclusivement créées et fabriquées en France. Plus de 150 eaux de parfums joyeuses, féminines, masculines ou mixtes, fruitées, florales, boisées ou chyprées, qui répondent à votre humeur, à vos envies, à votre style, et à tous les moments de la journée. Avec Adopt parfums, c’est tout un univers de parfums aux ingrédients nobles et précieux qui s’ouvre à vous !
Pour prolonger l’expérience, Adopt parfums propose des rituels de soins végans, soins corps, soins visage, soins cheveux, aux formules gorgées d’ingrédients naturels. Et pourquoi pas opter pour un coffret parfumé, combinant parfums et soins coordonnés ?
Idées cadeaux pour faire ou se faire plaisir, best-sellers, parfums iconiques, nouveautés, visitez l’univers Adopt parfums. </div></div><script>
'use strict';
function initFooterSocialComponent() {
return {
clickSocialLinkEvent(url, label) {
window.dataLayer?.push({
'event': 'clicSociauxRéseaux',
'text': label
});
window.open(url, '_blank').focus();
},
}
}</script> </div></footer> <script type="text/x-magento-init">
{
"body": {
"awRbsliderAjax": {"url":"https:\/\/www.adopt.com\/fr\/aw_rbslider\/statistic\/view\/id\/1472"} }
}</script> <script>
let pendingLoyaltyPromise = null;
const LOYALTY_CONFIG = {
storageKey: 'loyalty_data',
errorCacheDuration: 300000
};
function loadCustomerLoyaltyData() {
if (hyva.getCookie('refresh_loyalty_data')) {
clearLoyaltyCache();
document.cookie = 'refresh_loyalty_data=; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Path=/;';
pendingLoyaltyPromise = null;
}
const cachedData = getCachedLoyaltyData();
if (cachedData) {
return handleCachedData(cachedData);
}
if (pendingLoyaltyPromise) {
return pendingLoyaltyPromise;
}
pendingLoyaltyPromise = fetchLoyaltyData()
.then(data => {
pendingLoyaltyPromise = null;
return data;
})
.catch(error => {
pendingLoyaltyPromise = null;
cacheError(error);
throw error;
});
return pendingLoyaltyPromise;
}
function getCachedLoyaltyData() {
const storage = hyva.getBrowserStorage();
if (!storage) return null;
const dataStr = storage.getItem(LOYALTY_CONFIG.storageKey);
if (!dataStr) return null;
try {
const cachedItem = JSON.parse(dataStr);
const now = Date.now();
if (now > cachedItem.expiry) {
storage.removeItem(LOYALTY_CONFIG.storageKey);
return null;
}
return cachedItem;
} catch (error) {
console.error('Error parsing loyalty data from storage:', error);
storage.removeItem(LOYALTY_CONFIG.storageKey);
return null;
}
}
function handleCachedData(cachedItem) {
return Promise.resolve().then(() => {
if (cachedItem.isError) {
const error = new Error(cachedItem.errorMessage);
window.dispatchEvent(
new CustomEvent("loyalty-data-error", {
detail: { error: true, message: cachedItem.errorMessage }
})
);
return Promise.reject(error);
}
window.dispatchEvent(
new CustomEvent("loyalty-data-loaded", {
detail: cachedItem.data
})
);
return cachedItem.data;
});
}
function fetchLoyaltyData() {
return fetch('https://www.adopt.com/fr/loyalty/customer/info', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
},
body: JSON.stringify({
form_key: hyva.getFormKey()
}),
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(json => {
if (json.error === true || json.success === false) {
throw new Error(json.message || 'Loyalty services error');
}
const loyaltyData = json.data || json;
cacheData(loyaltyData);
window.dispatchEvent(
new CustomEvent("loyalty-data-loaded", {
detail: loyaltyData
})
);
return loyaltyData;
})
.catch(error => {
console.error('Loyalty API Error:', error);
window.dispatchEvent(
new CustomEvent("loyalty-data-error", {
detail: { error: true, message: error.message }
})
);
throw error;
});
}
function cacheData(data) {
const storage = hyva.getBrowserStorage();
if (!storage) return;
const cacheItem = {
data: data,
isError: false,
timestamp: Date.now(),
expiry: Date.now() + (20 * 60 * 1000)
};
try {
storage.setItem(LOYALTY_CONFIG.storageKey, JSON.stringify(cacheItem));
} catch (error) {
console.error('Error caching loyalty data:', error);
}
}
function cacheError(error) {
const storage = hyva.getBrowserStorage();
if (!storage) return;
const errorItem = {
isError: true,
errorMessage: error.message,
timestamp: Date.now(),
expiry: Date.now() + LOYALTY_CONFIG.errorCacheDuration
};
try {
storage.setItem(LOYALTY_CONFIG.storageKey, JSON.stringify(errorItem));
} catch (error) {
console.error('Error caching loyalty error:', error);
}
}
function clearLoyaltyCache() {
const storage = hyva.getBrowserStorage();
if (storage) {
storage.removeItem(LOYALTY_CONFIG.storageKey);
}
}
function isLoyaltyInErrorState() {
const cachedData = getCachedLoyaltyData();
return cachedData && cachedData.isError;
}
function showHiddenComponentForLoggedInAdmin() {
const adminCookie = hyva.getCookie('admin_store_restricted_access');
if (adminCookie) {
document.querySelectorAll('.visible-only-admin')
.forEach(function (element) {
element.classList.remove('visible-only-admin');
});
}
}
window.addEventListener("private-content-loaded", (event) => {
showHiddenComponentForLoggedInAdmin();
});
showHiddenComponentForLoggedInAdmin();
window.loyaltyModule = {
load: loadCustomerLoyaltyData,
clear: clearLoyaltyCache,
isInErrorState: isLoyaltyInErrorState
};</script> <script>
const storeApi = {};
storeApi.getProducts = (productIdentifier) => {
return fetch('https://www.adopt.com/fr/bambuser/products/load' + '/skus/' + productIdentifier, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}).then(
res => res.json()
).then(data => {
return data;
});
};
storeApi.addToCart = (data) => {
let formData = new FormData();
let url;
formData.append('uenc', hyva.getUenc());
formData.append('form_key', hyva.getFormKey());
formData.append('qty', 1);
if (data.is_configurable) {
url = 'https://www.adopt.com/fr/checkout/cart/add' + '/uenc/' + hyva.getUenc() + '/product/' + data.parent_id
formData.append('product', data.parent_id);
formData.append('item', data.parent_id);
formData.append('super_attribute[' + data.attribute_id + ']', data.option_id);
} else {
url = 'https://www.adopt.com/fr/checkout/cart/add' + '/uenc/' + hyva.getUenc() + '/product/' + data.product_id
formData.append('product', data.product_id);
}
formData = new URLSearchParams(formData);
return fetch(url, {
method: 'POST',
body: formData,
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest'
}
}).then(res => {
window.dispatchEvent(new CustomEvent('product-addtocart-success'));
}).catch(err => {
return Promise.resolve({
success: false,
reason: 'out-of-stock',
message: "Le produit que vous essayez d'ajouter n'est pas disponible."
});
}).finally(() => {
try {
let messages = hyva.getCookie('mage-messages');
messages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
document.cookie = 'mage-messages=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
setTimeout(() => {
messages.forEach(message => {
setMessage(message);
});
}, 1000);
window.dispatchEvent(
new CustomEvent(
'reload-customer-section-data',
{
detail: {
sections: ['cart', 'cart-tagging', 'messages']
}
}
)
);
} catch (error) {
console.warn('Error parsing Cookie Messages:', error);
}
});
};
storeApi.updateItemInCart = (data) => {
let formData = new FormData();
formData.append('uenc', hyva.getUenc());
formData.append('form_key', hyva.getFormKey());
formData = new URLSearchParams(formData);
return fetch('https://www.adopt.com/fr/bambuser/cart/update' + '/uenc/' + hyva.getUenc() + '/product/' + data.sku + '/qty/' + data.quantity, {
method: 'POST',
body: formData,
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest'
}
}).catch(err => {
return Promise.resolve({
success: false,
reason: 'error',
message: ""
});
}).finally(() => {
try {
let messages = hyva.getCookie('mage-messages');
messages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
document.cookie = 'mage-messages=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
setTimeout(() => {
messages.forEach(message => {
setMessage(message);
});
}, 1000);
window.dispatchEvent(
new CustomEvent(
'reload-customer-section-data',
{
detail: {
sections: ['cart', 'cart-tagging', 'messages']
}
}
)
);
} catch (error) {
console.warn('Error parsing Cookie Messages:', error);
}
});
};
storeApi.removeItemFromCart = (data) => {
let formData = new FormData();
formData.append('uenc', hyva.getUenc());
formData.append('form_key', hyva.getFormKey());
formData = new URLSearchParams(formData);
return fetch('https://www.adopt.com/fr/bambuser/cart/delete' + '/uenc/' + hyva.getUenc() + '/product/' + data.sku, {
method: 'POST',
body: formData,
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest'
}
}).catch(err => {
return Promise.resolve({
success: false,
reason: 'erro',
message: ""
});
}).finally(() => {
try {
let messages = hyva.getCookie('mage-messages');
messages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
document.cookie = 'mage-messages=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
setTimeout(() => {
messages.forEach(message => {
setMessage(message);
});
}, 1000);
window.dispatchEvent(
new CustomEvent(
'reload-customer-section-data',
{
detail: {
sections: ['cart', 'cart-tagging', 'messages']
}
}
)
);
} catch (error) {
console.warn('Error parsing Cookie Messages:', error);
}
});
};
storeApi.getCartState = () => {
return new Promise((resolve) => {
const browserStorage = hyva.getBrowserStorage();
const sectionData = JSON.parse(browserStorage.getItem('mage-cache-storage'));
resolve(sectionData?.cart?.summary_count);
});
};
window.onBambuserLiveShoppingReady = (player) => {
player.configure({
currency: 'EUR',
locale: 'fr-FR',
buttons: {
dismiss: player.BUTTON.MINIMIZE,
checkout: player.BUTTON.MINIMIZE,
},
minimizedPosition: player.MINIMIZED_POSITION.BOTTOM_LEFT,
});
player.on(player.EVENT.PROVIDE_PRODUCT_DATA, (event) => {
if (!event.context || event.context !== 'pre-load') {
return;
}
let productArray = [];
let skuString = '';
event.products.forEach(({ ref: sku, url, id: bambuserId }) => {
productArray[sku] = bambuserId;
skuString += sku + ',';
});
storeApi.getProducts(skuString).then((data) => {
Object.entries(data).forEach((entry) => {
const [sku, product] = entry;
player.updateProduct(productArray[sku], (productFactory) =>
productFactory
.inheritFromPlaceholder()
.product((productDetailFactory) =>
productDetailFactory
.name(product.title)
.description(product.description)
.sku(product.id)
.brandName(product.vendor)
.variations((variationFactory) =>
product.variants?.map((variation) =>
variationFactory()
.attributes(
(attributeFactory) => attributeFactory
.colorName(variation.sizes.name)
)
.imageUrls([
...variation.images
])
.name(variation.name)
.sku(variation.variationId)
.sizes((sizeFactory) => [
sizeFactory()
.name(variation.sizes.name)
.sku(variation.variationId)
.inStock(variation.sizes.quantityInStock > 0)
.price(priceFactory =>
priceFactory
.currency(variation.sizes.currency)
.original(variation.sizes.original)
.current(variation.sizes.current)
)
])
)
)
)
);
})
});
});
player.on(player.EVENT.ADD_TO_CART, (addedItem, callback) => {
const data = JSON.parse(addedItem.sku);
storeApi.addToCart(data)
.then(() => callback(true))
.catch(error => {
callback(false);
});
});
player.on(player.EVENT.UPDATE_ITEM_IN_CART, (updatedItem, callback) => {
if (updatedItem.quantity > 0) {
storeApi.updateItemInCart({
sku: updatedItem.sku,
quantity: updatedItem.quantity,
})
.then(() => {
callback(true);
})
.catch(function(error) {
callback(false);
});
}
if (updatedItem.quantity === 0) {
storeApi.removeItemFromCart({sku: updatedItem.sku})
.then(() => {
callback(true);
})
.catch(() => {
callback(false);
});
}
})
player.on(player.EVENT.CHECKOUT, () => {
player.showCheckout(window.location.origin + "/checkout/cart");
});
player.on(player.EVENT.SYNC_CART_STATE, () => {
storeApi.getCartState().then((response) => {
if (response == 0) {
player.updateCart({
items: []
});
}
});
});
};</script> <script>
window.addEventListener('init-external-scripts', () => {
(function(d, t, i, w) {
window.__bfwId = w;
if (d.getElementById(i) && window.__bfwInit) return window.__bfwInit();
if (d.getElementById(i)) return;
var s, ss = d.getElementsByTagName(t)[0];
s = d.createElement(t); s.id = i;
s.src = 'https://lcx-widgets-eu.bambuser.com/embed.js';
ss.parentNode.insertBefore(s, ss);
})(document, 'script', 'bambuser-liveshopping-widget', 'uVdF1jExri5CwRQ2vyHc');
}, {once: true, passive: false});</script> <script>
(() => {
function src_default(Alpine) {
Alpine.directive("intersect", (el, { value, expression, modifiers }, { evaluateLater, cleanup }) => {
let evaluate = evaluateLater(expression);
let options = {
rootMargin: getRootMargin(modifiers),
threshold: getThreshhold(modifiers)
};
let observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting === (value === "leave"))
return;
evaluate();
modifiers.includes("once") && observer.disconnect();
});
}, options);
observer.observe(el);
cleanup(() => {
observer.disconnect();
});
});
}
function getThreshhold(modifiers) {
if (modifiers.includes("full"))
return 0.99;
if (modifiers.includes("half"))
return 0.5;
if (!modifiers.includes("threshold"))
return 0;
let threshold = modifiers[modifiers.indexOf("threshold") + 1];
if (threshold === "100")
return 1;
if (threshold === "0")
return 0;
return Number(`.${threshold}`);
}
function getLengthValue(rawValue) {
let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/);
return match ? match[1] + (match[2] || "px") : void 0;
}
function getRootMargin(modifiers) {
const key = "margin";
const fallback = "0px 0px 0px 0px";
const index = modifiers.indexOf(key);
if (index === -1)
return fallback;
let values = [];
for (let i = 1; i < 5; i++) {
values.push(getLengthValue(modifiers[index + i] || ""));
}
values = values.filter((v) => v !== void 0);
return values.length ? values.join(" ").trim() : fallback;
}
document.addEventListener("alpine:init", () => {
window.Alpine.plugin(src_default);
});
})();</script> <script>
for (const [selector, deferUntil] of Object.entries({".product-slider section[x-data]":"intersect",".product-info [x-data]":"intersect","#filters-content [x-data]":"intersect","#review_form":"intersect","section[x-data^=initRecentlyViewedProductsComponent]":"intersect","#notice-cookie-block":"intersect"})) {
document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`));
}</script> <script>
(function () {
"use strict";
const hasAlpine = new Promise(resolve => {
window.addEventListener('alpine:initialized', resolve, {once: true, passive: true});
});
const hasInteract = new Promise(resolve => {
(events => {
const onInteract = () => {
resolve();
events.forEach(type => window.removeEventListener(type, onInteract));
}
events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true}))
})(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown'])
});
const onIntersect = (el) => {
return new Promise(resolve => {
const observer = new IntersectionObserver(entries => {
for (const entry of entries) {
if (entry.isIntersecting) {
observer.disconnect()
resolve();
}
}
}, {});
observer.observe(el);
});
}
function runComponent(el) {
hasAlpine.then(() => {
el.removeAttribute('x-ignore');
queueMicrotask(() => Alpine.initTree(el));
});
}
function initDeferredComponents() {
document.querySelectorAll('[x-data][x-defer]').forEach(el => {
el.setAttribute('x-ignore', '');
const deferUntil = (el.getAttribute('x-defer') || '').trim();
switch (deferUntil) {
case 'interact':
hasInteract.then(() => runComponent(el));
break;
case 'intersect':
onIntersect(el).then(() => runComponent(el))
break;
case 'idle':
window.requestIdleCallback
? window.requestIdleCallback(() => runComponent(el), {timeout: 4000})
: setTimeout(() => runComponent(el), 4000);
break;
case 'eager':
runComponent(el);
break;
default:
if (deferUntil.startsWith('event:') && deferUntil.length > 6) {
window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true});
}
}
});
}
window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true});
})()</script> <script type="module"
src="https://www.adopt.com/static/version6851/frontend/Adopt/hyva/fr_FR/Hyva_Theme/js/alpine3.min.js"
defer
crossorigin
></script> <script>
'use strict';
function dispatchMessages(messages, hideAfter) {
const messagesEvent = new CustomEvent("messages-loaded", {
detail: {
messages: messages,
hideAfter: hideAfter
}
});
window.dispatchEvent(messagesEvent);
}
if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
}
(function( hyva, undefined ) {
hyva.initFormKey = () => {
const inputSelector = 'input[name="form_key"]',
formKey = hyva.getFormKey();
Array.from(document.querySelectorAll(inputSelector)).map(function (input) {
input.value = formKey
});
}
hyva.initMessages = () => {
try {
const messages = hyva.getCookie('mage-messages');
window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
dispatchMessages(window.mageMessages);
const skipSetDomain = true;
hyva.setCookie('mage-messages','', -1, skipSetDomain);
} catch (error) {
console.warn('Error parsing Cookie Messages:', error);
}
}
window.addEventListener('DOMContentLoaded', hyva.initFormKey);
hyva.alpineInitialized(hyva.initMessages)
}( window.hyva = window.hyva || {} ));</script> <script>
'use strict';
{
const private_content_key = 'mage-cache-storage';
const private_content_expire_key = 'mage-cache-timeout';
const private_content_version_key = 'private_content_version';
const section_data_ids_key = 'section_data_ids';
const mage_cache_session_id_key = 'mage-cache-sessid';
const last_visited_store_key = 'last_visited_store';
const ttl = 3600;
if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
}
function loadSectionData (sections = []) {
if (typeof sections == 'object' && typeof sections.target != 'undefined') {
sections = [];
}
const browserStorage = hyva.getBrowserStorage();
if (!browserStorage) {
typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
[{
type: "warning",
text: "Please enable LocalStorage in your browser."
}]
);
return;
}
try {
let isInvalid = false;
if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) {
isInvalid = true;
}
hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false);
if (!hyva.getCookie(mage_cache_session_id_key)) {
isInvalid = true;
browserStorage.removeItem(private_content_key);
const skipSetDomain = true;
const days = false;
hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain)
}
const cookieVersion = hyva.getCookie(private_content_version_key);
const storageVersion = browserStorage.getItem(private_content_version_key);
if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) {
isInvalid = true;
}
const privateContentExpires = browserStorage.getItem(private_content_expire_key);
if (privateContentExpires && new Date(privateContentExpires) < new Date()) {
browserStorage.removeItem(private_content_key);
}
if (isInvalid && cookieVersion) {
fetchPrivateContent(sections);
} else if (cookieVersion && storageVersion && cookieVersion === storageVersion) {
const privateContent = JSON.parse(browserStorage.getItem(private_content_key));
if (
privateContent &&
privateContentExpires &&
privateContent.cart &&
privateContent.customer
) {
dispatchPrivateContent(privateContent);
} else {
fetchPrivateContent(sections);
}
} else {
if (document.getElementById('default-section-data')) {
const privateContent = JSON.parse(document.getElementById('default-section-data').innerText.trim());
dispatchPrivateContent(privateContent);
} else {
dispatchPrivateContent({});
}
}
} catch (error) {
console.warn('Error retrieving Private Content:', error);
}
}
hyva.alpineInitialized(loadSectionData)
window.addEventListener('reload-customer-section-data', (event) => {
loadSectionData(event?.detail?.sections || [])
});
function dispatchPrivateContent(data) {
const privateContentEvent = new CustomEvent("private-content-loaded", {
detail: {
data: data
}
});
window.dispatchEvent(privateContentEvent);
}
function fetchPrivateContent(sections) {
fetch(`${BASE_URL}customer/section/load?sections=${encodeURIComponent(sections.join(','))}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
})
.then(response => response.json())
.then(
data => {
if (data) {
try {
const browserStorage = hyva.getBrowserStorage();
const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {};
if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) {
delete oldSectionData['checkout-data'];
}
const newSectionData = Object.assign(oldSectionData, data);
dispatchPrivateContent(newSectionData);
if (newSectionData.messages && newSectionData.messages.messages ) {
newSectionData.messages.messages = [];
}
browserStorage.setItem(private_content_key, JSON.stringify(newSectionData));
const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString();
browserStorage.setItem(private_content_expire_key, expiresAt);
const newCookieVersion = hyva.getCookie(private_content_version_key);
browserStorage.setItem(private_content_version_key, newCookieVersion);
hyva.setCookie(
section_data_ids_key,
JSON.stringify(
Object.keys(data).reduce((sectionDataIds, sectionKey) => {
sectionDataIds[sectionKey] = data[sectionKey]['data_id'];
return sectionDataIds;
}, {})
),
false,
true
);
} catch (error) {
console.warn("Couldn't store privateContent", error);
}
}
}
);
}
}</script><script>
(() => {
document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc()));
})()</script> <script>
(events => {
const dispatchUserInteractionEvent = () => {
events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent))
window.dispatchEvent(new Event('init-external-scripts'))
};
events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true}))
})(['touchstart', 'mousemove', 'wheel', 'scroll', 'keydown'])</script> <script>
function initWishlist() {
return {
isInWishlist(productId) {
productId = productId.toString();
let browserStorage = hyva.getBrowserStorage().getItem('mage-cache-storage');
browserStorage = JSON.parse(browserStorage);
if (browserStorage) {
if ((typeof browserStorage.customer !== 'undefined') && typeof browserStorage.customer.fullname !== 'undefined'){
let wishlistItemIds = [];
let wishlistItems = browserStorage.wishlist.items;
wishlistItems.forEach(function(item){
wishlistItemIds.push(item.product_id);
});
return wishlistItemIds.includes(productId);
}
}
let cookieValue = hyva.getCookie('guest_wishlist');
if (cookieValue !== null) {
cookieValue = decodeURIComponent(cookieValue);
let cookieWishlistIds = cookieValue.split(',');
if (cookieWishlistIds) {
return cookieWishlistIds.includes(productId);
}
}
return false
},
toggleWishlist(productId, productData) {
if (!this.isInWishlist(productId)) {
this.addToWishlist(productId, productData);
} else {
this.removeFromWishlist(productId);
}
},
addToWishlist(productId, productData) {
const self = this;
let wishlistIcon = document.querySelectorAll('[data-wishlist="' + productId + '"]');
wishlistIcon.forEach((arrayElement, index) => {
wishlistIcon[index].classList.add('in-favorite');
wishlistIcon[index].querySelector('svg').classList.add('in-favorite');
})
const formKey = hyva.getFormKey();
fetch(BASE_URL + "wishlist/index/add?ajax=1", {
"headers": {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
"body": "form_key="+ formKey + "&product="+productId+"&uenc="+btoa(window.location.href),
"method": "POST",
"mode": "cors",
"credentials": "include"
}).then(function (response) {
if (response.ok) {
return response.json();
} else if (response.redirected) {
window.location.href = response.url;
} else {
typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
[{
type: "warning",
text: "Could not add item to wishlist."
}], 5000
);
}
}).then(function (response) {
if (!response) { return }
self.sendAddToWishlistEvent(productData);
let cookieValue = hyva.getCookie('guest_wishlist');
if (cookieValue !== null) {
if (typeof response.success !== "undefined") {
typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
[{
type: (response.success) ? "success" : "error",
text: (response.success)
? "Le produit a été ajouté à votre liste de souhaits."
: ''
}], 5000
);
}
}
const reloadCustomerDataEvent = new CustomEvent(
'reload-customer-section-data',
{
detail: {
sections: ['wishlist', 'messages']
}
}
);
window.dispatchEvent(reloadCustomerDataEvent);
}).catch(function (error) {
typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
[{
type: "error",
text: error
}], 5000
);
});
},
getItemId(productId) {
productId = productId.toString();
let browserStorage = hyva.getBrowserStorage().getItem('mage-cache-storage');
browserStorage = JSON.parse(browserStorage);
if (browserStorage) {
let wishlistItems = browserStorage.wishlist.items;
let itemToDelete;
wishlistItems.forEach(function (item) {
if (item.product_id == productId) {
itemToDelete = item.item_id;
}
});
return itemToDelete;
}
},
sendAddToWishlistEvent(productData) {
window.dataLayer?.push({
'event': 'productAddWishlist',
'productAddWishlist': [productData]
})
},
removeFromWishlist(productId) {
let wishlistIcon = document.querySelectorAll('[data-wishlist="' + productId + '"]');
wishlistIcon.forEach((arrayElement, index) => {
wishlistIcon[index].classList.remove('in-favorite');
wishlistIcon[index].querySelector('svg').classList.remove('in-favorite');
})
let itemId = this.getItemId(productId);
const formKey = hyva.getFormKey();
fetch(BASE_URL + "wishlist/index/remove?ajax=1", {
"headers": {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
"body": "form_key=" + formKey + "&productId=" + productId + "&uenc=" + btoa(window.location.href) + '&item=' + itemId,
"method": "POST",
"mode": "cors",
"credentials": "include"
}).then(function (response) {
if (response.ok) {
return response.json();
} else if (response.redirected) {
window.location.href = response.url;
}
}).then(function (response) {
if (!response) { return }
const reloadCustomerDataEvent = new CustomEvent(
'reload-customer-section-data',
{
detail: {
sections: ['wishlist', 'messages']
}
}
);
window.dispatchEvent(reloadCustomerDataEvent);
}).catch(function (error) {
typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
[{
type: "error",
text: error
}], 5000
);
});
}
}
}</script> <script async defer src="https://adopt.twic.pics/?v1"></script> <script>
function initWishlist() {
return {
isInWishlist(productId) {
productId = productId.toString();
let browserStorage = hyva.getBrowserStorage().getItem('mage-cache-storage');
browserStorage = JSON.parse(browserStorage);
if (browserStorage) {
if ((typeof browserStorage.customer !== 'undefined') && typeof browserStorage.customer.fullname !== 'undefined'){
let wishlistItemIds = [];
let wishlistItems = browserStorage.wishlist.items;
wishlistItems.forEach(function(item){
wishlistItemIds.push(item.product_id);
});
return wishlistItemIds.includes(productId);
}
}
let cookieValue = hyva.getCookie('guest_wishlist');
if (cookieValue !== null) {
cookieValue = decodeURIComponent(cookieValue);
let cookieWishlistIds = cookieValue.split(',');
if (cookieWishlistIds) {
return cookieWishlistIds.includes(productId);
}
}
return false
},
toggleWishlist(productId, productData) {
if (!this.isInWishlist(productId)) {
this.addToWishlist(productId, productData);
} else {
this.removeFromWishlist(productId);
}
},
addToWishlist(productId, productData) {
const self = this;
let wishlistIcon = document.querySelectorAll('[data-wishlist="' + productId + '"]');
wishlistIcon.forEach((arrayElement, index) => {
wishlistIcon[index].classList.add('in-favorite');
wishlistIcon[index].querySelector('svg').classList.add('in-favorite');
})
const formKey = hyva.getFormKey();
fetch(BASE_URL + "wishlist/index/add?ajax=1", {
"headers": {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
"body": "form_key="+ formKey + "&product="+productId+"&uenc="+btoa(window.location.href),
"method": "POST",
"mode": "cors",
"credentials": "include"
}).then(function (response) {
if (response.ok) {
return response.json();
} else if (response.redirected) {
window.location.href = response.url;
} else {
typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
[{
type: "warning",
text: "Could not add item to wishlist."
}], 5000
);
}
}).then(function (response) {
if (!response) { return }
self.sendAddToWishlistEvent(productData);
let cookieValue = hyva.getCookie('guest_wishlist');
if (cookieValue !== null) {
if (typeof response.success !== "undefined") {
typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
[{
type: (response.success) ? "success" : "error",
text: (response.success)
? "Le produit a été ajouté à votre liste de souhaits."
: ''
}], 5000
);
}
}
const reloadCustomerDataEvent = new CustomEvent(
'reload-customer-section-data',
{
detail: {
sections: ['wishlist', 'messages']
}
}
);
window.dispatchEvent(reloadCustomerDataEvent);
}).catch(function (error) {
typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
[{
type: "error",
text: error
}], 5000
);
});
},
getItemId(productId) {
productId = productId.toString();
let browserStorage = hyva.getBrowserStorage().getItem('mage-cache-storage');
browserStorage = JSON.parse(browserStorage);
if (browserStorage) {
let wishlistItems = browserStorage.wishlist.items;
let itemToDelete;
wishlistItems.forEach(function (item) {
if (item.product_id == productId) {
itemToDelete = item.item_id;
}
});
return itemToDelete;
}
},
sendAddToWishlistEvent(productData) {
window.dataLayer?.push({
'event': 'productAddWishlist',
'productAddWishlist': [productData]
})
},
removeFromWishlist(productId) {
let wishlistIcon = document.querySelectorAll('[data-wishlist="' + productId + '"]');
wishlistIcon.forEach((arrayElement, index) => {
wishlistIcon[index].classList.remove('in-favorite');
wishlistIcon[index].querySelector('svg').classList.remove('in-favorite');
})
let itemId = this.getItemId(productId);
const formKey = hyva.getFormKey();
fetch(BASE_URL + "wishlist/index/remove?ajax=1", {
"headers": {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
"body": "form_key=" + formKey + "&productId=" + productId + "&uenc=" + btoa(window.location.href) + '&item=' + itemId,
"method": "POST",
"mode": "cors",
"credentials": "include"
}).then(function (response) {
if (response.ok) {
return response.json();
} else if (response.redirected) {
window.location.href = response.url;
}
}).then(function (response) {
if (!response) { return }
const reloadCustomerDataEvent = new CustomEvent(
'reload-customer-section-data',
{
detail: {
sections: ['wishlist', 'messages']
}
}
);
window.dispatchEvent(reloadCustomerDataEvent);
}).catch(function (error) {
typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
[{
type: "error",
text: error
}], 5000
);
});
}
}
}</script> <script>
function initConfigurableOptions(productId, optionConfig) {
function findPathParam(key) {
const baseUrl = (BASE_URL.substr(0, 2) === '//' ? 'http:' : '') + BASE_URL;
const baseUrlParts = (new URL(baseUrl)).pathname.replace(/\/$/, '').split('/');
const pathParts = window.location.pathname.split('/').slice(baseUrlParts.length + 3);
for (let i = 0; i < pathParts.length; i += 2) {
if (pathParts[i] === key && pathParts.length > i) {
return pathParts[i + 1];
}
}
}
return {
optionConfig,
productId,
itemId: (new URLSearchParams(window.location.search)).get('id') || findPathParam('id'),
allowedAttributeOptions: [],
selectedValues: [],
attribueOptionsLength: 0,
attributeMapping: {"contenance":{" ":"","14 ml":"6970","180 g":"6756","181 g":"6971","200g":"6715","250ml":"6713","32 g":"6683","400 g":"6994","400ml":"6714","8 ml":"6755","8ml":"6678","9 g":"6761","5 ml":"6525","10 ml":"349","15 ml":"914","30 ml":"350","40 ml":"5382","50 ml":"913","60 ml":"5383","75 ml":"912","100 ml":"351","125 ml":"707","150 ml":"911","200 ml":"706","250 ml":"466","290 ml":"705","400 ml":"5384","9 ml":"6568","4,5 ml":"6569","12 ml":"6570","26,5 ml":"6571","5,5 ml":"6572","16 ml":"6595","8 g":"6614","3,5 g":"6746","1,5 ml":"6969"}},
isProductPage: document.body.classList.contains('catalog-product-view'),
isCategoryPage: document.body.classList.contains('catalog-category-view'),
isCmsPage: document.body.classList.contains('cms-page-view'),
init() {
this.findAllowedAttributeOptions();
this.preselectQuerystringItems();
this.preselectLocationHashItems();
this.$nextTick(() => {
if (typeof this.optionConfig.defaultValues === 'object') {
for (const [optionId, value] of Object.entries(this.optionConfig.defaultValues)) {
this.changeOption(optionId, value + '');
}
}
});
},
findSimpleIndex() {
this.productIndex = this.calculateSimpleIndexForPartialSelection(this.selectedValues);
},
calculateSimpleIndexForPartialSelection(selectedValues) {
if (selectedValues.length === 0) return 0;
let productIndexIds = Object.keys(this.optionConfig.index);
Object.keys(this.optionConfig.attributes).forEach((attribute) => {
const productsWithAttributeMatch = selectedValues[attribute]
? productIndexIds.filter((productIndex) => {
return this.optionConfig.index[productIndex][attribute] === this.selectedValues[attribute]
})
: [];
productIndexIds = productsWithAttributeMatch.length ? productsWithAttributeMatch : productIndexIds
})
return productIndexIds[0];
},
calculateSimpleIndexForFullSelection(selectedValues) {
const productIndexes = this.optionConfig.index;
return Object.keys(productIndexes).find(productIndex => {
const productCandidateOptions = productIndexes[productIndex];
for (const productOption in productCandidateOptions) {
if (
!selectedValues[productOption] ||
selectedValues[productOption] !== productCandidateOptions[productOption]
) {
return false;
}
}
return productIndex;
});
},
productIndex: 0,
findAllowedAttributeOptions() {
this.allowedAttributeOptions = this.calculateAllowedAttributeOptions(this.selectedValues);
this.attribueOptionsLength = this.allowedAttributeOptions[Object.keys(this.allowedAttributeOptions)[0]]?.length
},
calculateAllowedAttributeOptions(selectedValues) {
const allAttributes = this.optionConfig.attributes;
const allAttributesSorted = Object.values(allAttributes).sort((a, b) => {
return a.position - b.position
});
const productIndexes = this.optionConfig.index;
let previousOption = false;
let availableIndexes = Object.keys(productIndexes);
const newAllowedAttributeOptions = [];
allAttributesSorted.forEach(attribute => {
if (previousOption && selectedValues[previousOption]) {
availableIndexes = availableIndexes.filter(availableIndex => {
return productIndexes[availableIndex][previousOption] ===
selectedValues[previousOption]
})
}
newAllowedAttributeOptions[attribute.id] =
allAttributes[attribute.id].options.filter(option => {
return !!option.products.find(product => {
return availableIndexes.includes(product);
})
});
previousOption = attribute.id;
});
return newAllowedAttributeOptions;
},
findAttributeByOptionId(optionId) {
for (const attributeId in this.optionConfig.attributes) {
const attributeOptions = this.optionConfig.attributes[attributeId].options || [];
if (attributeOptions.find(option => option.id === optionId)) {
return attributeId;
}
}
},
getAllowedAttributeOptions(attributeId) {
return this.allowedAttributeOptions[attributeId] || []
},
getProductIdsForOption(option) {
const attributeId = this.findAttributeByOptionId(option.id);
const allOptions = this.optionConfig.attributes[attributeId];
const opt = (allOptions && allOptions.options || []).find(o => o.id === option.id);
return opt && opt.products
? opt.products
: [];
},
findProductIdsForPartialSelection(optionSelection) {
const candidateProducts = Object.values(optionSelection).reduce((candidates, optionId) => {
const newCandidates = this.getProductIdsForOption({id: optionId});
return candidates === null
? newCandidates
: candidates.filter(productId => newCandidates.includes(productId));
}, null);
return candidateProducts || [];
},
findCheapestProductForPartialSelection(optionSelection) {
const candidateProducts = this.findProductIdsForPartialSelection(optionSelection);
return candidateProducts.reduce((cheapest, simpleIdx) => {
if (!this.optionConfig.optionPrices[cheapest]) return simpleIdx;
const knownCheapestPrice = this.optionConfig.optionPrices[cheapest].finalPrice.amount;
return knownCheapestPrice > this.optionConfig.optionPrices[simpleIdx].finalPrice.amount
? simpleIdx
: cheapest;
}, 0)
},
findProductIdToUseForOptionPrice(option) {
const attributeId = this.findAttributeByOptionId(option.id);
const optionSelection = Object.assign({}, this.selectedValues, {[attributeId]: option.id});
const matchingSimpleIndex = this.calculateSimpleIndexForFullSelection(optionSelection);
return matchingSimpleIndex || this.findCheapestProductForPartialSelection(optionSelection);
},
getAttributeOptionLabel(option) {
const optionProduct = this.findProductIdToUseForOptionPrice(option);
if ((!optionProduct) || (optionProduct === this.productIndex)) {
return option.label;
}
const currentPrice = this.getOptionPriceAdjustmentBasePrice();
if (this.optionConfig.optionPrices[optionProduct]) {
const optionPrice = this.optionConfig.optionPrices[optionProduct].finalPrice.amount;
if (optionPrice !== currentPrice) {
return option.label + ' ' + hyva.formatPrice(optionPrice - currentPrice, true);
}
}
return option.label;
},
getOptionPriceAdjustmentBasePrice() {
if (this.optionConfig.optionPrices[this.productIndex]) {
return this.optionConfig.optionPrices[this.productIndex].finalPrice.amount
}
const cheapestForSelection = this.findCheapestProductForPartialSelection(this.selectedValues);
return this.optionConfig.optionPrices[cheapestForSelection]
? this.optionConfig.optionPrices[cheapestForSelection].finalPrice.amount
: this.optionConfig.prices.finalPrice.amount;
},
changeDisabledOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) {
if (value === '') {
this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => {
if (opt !== optionId) {
newSelection[opt] = val;
}
return newSelection;
}, []);
} else {
this.selectedValues[optionId] = value;
}
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
this.updateShortDescription();
this.updateGallery();
if (updateUrl) {
this.updateCurrentUrl(value, optionLabel);
}
this.$nextTick(() => {
window.dispatchEvent(
new CustomEvent(
'configurable-selection-changed',
{
detail: {
productId: this.productId,
sku: this.optionConfig.sku[this.productId],
optionId: this.optionId,
value: this.value,
productIndex: this.productIndex,
selectedValues: this.selectedValues,
flagsData: this.optionConfig.flags_data
? this.optionConfig.flags_data[this.productIndex]
: false,
}
}
)
);
window.dispatchEvent(new CustomEvent('stock-alert-modal-open-' + parentId, {detail: {productId: this.productIndex}}));
});
},
changeOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) {
if (value === '') {
this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => {
if (opt !== optionId) {
newSelection[opt] = val;
}
return newSelection;
}, []);
} else {
this.selectedValues[optionId] = value;
}
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
this.updateShortDescription();
this.updateGallery();
if (updateUrl) {
this.updateCurrentUrl(value, optionLabel);
}
this.$nextTick(() => {
window.dispatchEvent(
new CustomEvent(
'configurable-selection-changed',
{
detail: {
productId: this.productId,
sku: this.optionConfig.sku[Number(this.productIndex)],
optionId: this.optionId,
value: this.value,
productIndex: this.productIndex,
selectedValues: this.selectedValues,
flagsData: this.optionConfig.flags_data
? this.optionConfig.flags_data[this.productIndex]
: false,
shortDescription: this.optionConfig.short_description
? this.optionConfig.short_description[this.productIndex]
: false,
}
}
)
);
window.dispatchEvent(new CustomEvent('stock-alert-modal-close-' + parentId, {productId: this.productIndex}));
});
},
calculateIsMinimalPrice() {
return (
this.selectedValues.filter(value => !!value).length <
Object.keys(this.optionConfig.attributes).length
);
},
updateCurrentUrl(value, optionLabel) {
let newParamValue = false;
let currentAttributeCode = false;
Object.values(this.optionConfig.attributes).map(attribute => {
attribute.options.map(option => {
if (option.id === value) {
currentAttributeCode = attribute.code;
newParamValue = option.label;
}
});
});
if (newParamValue && currentAttributeCode && typeof optionLabel !== 'undefined' && !optionLabel.includes('30 ')) {
const url = new URL(window.location.href);
const params = new URLSearchParams(url.search);
params.set(currentAttributeCode, newParamValue);
url.search = params.toString();
window.history.replaceState({}, '', url.toString());
}
if (typeof optionLabel !== 'undefined' && optionLabel.includes('30 ')) {
const url = new URL(window.location.href);
const params = new URLSearchParams(url.search);
params.delete(currentAttributeCode);
url.search = params.toString();
window.history.replaceState({}, '', url.toString());
}
},
updatePrices() {
const value = this.productIndex ?
this.optionConfig.optionPrices[this.productIndex] :
this.optionConfig.prices;
this.$nextTick(() => {
window.dispatchEvent(
new CustomEvent(
"update-prices-" + this.productId,
{
detail: Object.assign(
value,
{isMinimalPrice: this.calculateIsMinimalPrice()}
)
}
)
);
})
},
updateShortDescription() {
const value = this.optionConfig.short_description
? this.optionConfig.short_description[this.productIndex]
: false;
if (value) {
this.$nextTick(() => {
window.dispatchEvent(
new CustomEvent(
"update-short-description-" + this.productId,
{
detail: Object.assign(
value
)
}
)
);
});
}
},
updateGallery() {
if (this.productIndex) {
const images = this.optionConfig.images
? this.optionConfig.images[this.productIndex]
: false;
if (images) {
window.dispatchEvent(new CustomEvent(
"update-gallery",
{detail: this.sortImagesByPosition(images)}
));
return
}
}
window.dispatchEvent(new Event("reset-gallery"));
},
sortImagesByPosition(images) {
return images.sort((x, y) => {
return x.position === y.position ? 0 : (parseInt(x.position) > parseInt(y.position) ? 1 : -1)
});
},
preselectQuerystringItems() {
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
Object.values(attribute.options).map(option => {
if (option.label === urlQueryParams.get(attribute.code)) {
if (option.disabled === true) {
this.changeDisabledOption(attribute.id, option.id, false, attribute.code, option.label, true, this.productId);
} else {
this.changeOption(attribute.id, option.id);
}
}
});
});
},
preselectLocationHashItems() {
const urlHashParams = new URLSearchParams(window.location.hash.replace('#', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
urlHashParams.get(attribute.id) &&
this.changeOption(attribute.id, urlHashParams.get(attribute.id));
});
}
}
}</script> <script>
function initSwatchOptions(swatchConfig) {
return {
swatchConfig,
getAttributeSwatchData(attributeId) {
const swatchConfig = Object.assign({}, this.swatchConfig[attributeId]);
swatchConfig['details'] = JSON.parse(swatchConfig['additional_data']);
return swatchConfig;
},
getAllAttributeOptions(attributeId) {
return (
this.optionConfig.attributes[attributeId] &&
this.optionConfig.attributes[attributeId].options
) || []
},
optionIsActive(attributeId, optionId) {
return !!this.getAllowedAttributeOptions(attributeId).find(
option => option.id === optionId
)
},
optionIsEnabled(attributeId, optionId) {
for (const productId in this.optionConfig.index) {
if (this.optionConfig.index[productId][attributeId] === optionId) {
return true;
}
}
return false;
},
mapSwatchTypeNumberToTypeCode(typeNumber) {
switch ("" + typeNumber) {
case "1":
return "color"
case "2":
return "image"
case "3":
return "empty"
case "0":
default:
return "text"
}
},
getTypeOfFirstOption(attributeId) {
for (const optionId in this.swatchConfig[attributeId]) {
const option = this.swatchConfig[attributeId][optionId];
if (typeof option.type !== 'undefined') {
return this.mapSwatchTypeNumberToTypeCode(option.type);
}
}
},
getVisualSwatchType(attributeId, targetOptionId) {
const config = this.swatchConfig[attributeId];
if (config[targetOptionId] && typeof config[targetOptionId].type !== 'undefined') {
return this.mapSwatchTypeNumberToTypeCode(config[targetOptionId].type);
}
return this.getTypeOfFirstOption(attributeId);
},
getSwatchType(attributeId, optionId) {
if (this.swatchConfig[attributeId] && ! this.swatchConfig[attributeId].details) {
this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
}
const type = this.swatchConfig[attributeId] &&
this.swatchConfig[attributeId].details &&
this.swatchConfig[attributeId].details.swatch_input_type ||
"empty";
return type === 'visual' ? this.getVisualSwatchType(attributeId, optionId) : type;
},
isTextSwatch(attributeId, optionId) {
return this.getSwatchType(attributeId, optionId) === 'text';
},
isVisualSwatch(attributeId, optionId) {
const type = this.getSwatchType(attributeId, optionId);
return ['image', 'color'].includes(type);
},
getSwatchBackgroundStyle(attributeId, optionId) {
const config = this.getSwatchConfig(attributeId, optionId);
const type = this.getSwatchType(attributeId, optionId);
if (type === "color") {
return 'background-color:' + config.value;
} else if (type === "image") {
return "background: #ffffff url('" + config.value + "') no-repeat center; background-size: cover;";
} else {
return '';
}
},
getSwatchText(attributeId, optionId) {
const config = this.getSwatchConfig(attributeId, optionId);
return config.label || config.value || this.getOptionLabelFromOptionConfig(attributeId, optionId);
},
getOptionLabelFromOptionConfig(attributeId, optionId) {
const option = this.getAllAttributeOptions(attributeId).filter(option => option.id === optionId);
return option && option[0] && option[0].label ||'';
},
getSwatchConfig(attributeId, optionId) {
return this.swatchConfig[attributeId] && this.swatchConfig[attributeId][optionId]
? this.swatchConfig[attributeId][optionId]
: false;
},
activeTooltipItem: false,
tooltipPositionElement: false,
isTooltipVisible() {
return this.activeTooltipItem &&
this.getSwatchConfig(
this.activeTooltipItem.attribute,
this.activeTooltipItem.item
);
},
getTooltipImageStyle(attributeId, optionId) {
const config = this.getSwatchConfig(attributeId, optionId);
const type = this.getSwatchType(attributeId, optionId);
if (type === "color") {
return 'background-color:' + config.value + '; width: 104px; height: 62px;';
} else if (type === "image") {
return "background: #ffffff url('" + config.thumb +
"') center center no-repeat; width: 104px; height: 62px;";
} else {
return 'display:none';
}
},
getTooltipPosition() {
return this.tooltipPositionElement ?
`top: ${this.tooltipPositionElement.offsetTop}px;` +
`left: ${
this.tooltipPositionElement.offsetLeft - (
this.tooltipPositionElement.closest('.snap') &&
this.tooltipPositionElement.closest('.snap').scrollLeft ||
0
)
}px;` : ''
},
getTooltipLabel() {
return this.getSwatchConfig(this.activeTooltipItem.attribute, this.activeTooltipItem.item).label
},
focusedLabel: false,
focusLabel(optionId) {
this.focusedLabel = optionId;
},
blurLabel() {
this.focusedLabel = false;
},
showSwatches: false,
initShowSwatchesIntersect() {
if ('IntersectionObserver' in window && !window.scrollY) {
const io = new IntersectionObserver(
entries => {
entries.map(entry => {
if (entry.isIntersecting) {
this.showSwatches = true;
io.unobserve(this.$el);
}
})
}
);
io.observe(this.$el);
} else {
this.showSwatches = true
}
}
}
}</script> <!-- Account type: 'Google Tag Manager' is not supported --> <script>
'use strict';
(function () {
const modals = [];
const excludedFromFocusTrapping = new Set();
function trapFocusInNextModalWithOverlay() {
for (let idx = modals.length -1; idx >= 0; idx--) {
const nextOnStack = modals[idx];
const nextDialogElement = nextOnStack.instance.$refs[nextOnStack.name];
if (! isOverlayDisabled(nextDialogElement)) {
hyva.trapFocus(nextDialogElement);
break;
}
}
}
function focusables(dialogElement) {
const selector = 'button, [href], input, textarea, select, details, [tabindex]:not([tabindex="-1"])';
return Array.from(dialogElement.querySelectorAll(selector))
.filter(el => !el.hasAttribute('disabled'));
}
function firstVisible(elements) {
const a = Array.from(elements);
for (let i = 0; i < a.length; i++) {
if (a[i].offsetWidth || a[i].offsetHeight || a[i].getClientRects().length) return a[i];
}
return null;
}
function isInViewport(element) {
const rect = element && element.getBoundingClientRect();
return rect &&
rect.top >= 0 &&
rect.left >= 0 &&
rect.right <= window.innerWidth &&
rect.bottom <= window.innerHeight;
}
function setFocusAfterTransition(dialogElement, duration) {
const nested = Array.from(dialogElement.querySelectorAll('[role="dialog"]'));
const candidates = Array.from(dialogElement.querySelectorAll('[x-focus-first]'));
next: for (let candidate of candidates) {
for (let child of nested) {
if (child.contains(candidate)) continue next;
}
setTimeout(() => candidate.focus(), 50);
break;
}
window.setTimeout(() => {
const focusElement = firstVisible(dialogElement.querySelectorAll('[x-focus-first]')) ||
focusables(dialogElement)[0] ||
null;
focusElement && isInViewport(focusElement) && focusElement.focus();
}, Math.max(1, duration));
}
function determineTrigger($refs, dialog, trigger) {
if (typeof trigger === 'undefined' && typeof dialog === 'object' && dialog.target instanceof HTMLElement) {
return dialog.target;
}
if (typeof dialog === 'string' && typeof trigger === 'object' && trigger.target instanceof HTMLElement) {
return trigger.target;
}
if (typeof trigger === 'string') {
try {
return $refs[trigger] || document.querySelector(trigger)
} catch (e) {}
}
if (trigger instanceof Element) {
return trigger;
}
return null;
}
function isOverlayDisabled(dialog) {
return dialog && dialog.hasAttribute('x-no-overlay')
}
function areRemainingModalsWithoutOverlay(modals)
{
const overflowDisabled = modals.map(modal => modal.instance.$refs[modal.name]).filter(isOverlayDisabled);
return overflowDisabled.length === modals.length;
}
window.hyva.modal = function(options) {
const config = Object.assign({
dialog: 'dialog', duration: 300, transitionEnter: 'transition ease-out duration-300',
transitionEnterStart: 'opacity-0',
transitionEnterEnd: 'opacity-100',
transitionLeave: 'transition ease-in duration-300',
transitionLeaveStart: 'opacity-100',
transitionLeaveEnd: 'opacity-0',
}, options);
let lastHide = 0;
return {
opened: {},
show(dialog, trigger) {
const focusTargetAfterHide = determineTrigger(this.$refs, dialog, trigger);
const name = typeof dialog === 'string' ? dialog : config.dialog;
const dialogElement = this.$refs[name];
if (! dialogElement) {
return;
}
const useOverlay = ! dialogElement.hasAttribute('x-no-overlay');
dialogElement.scrollTop = 0;
if (this.opened[name]) {
return;
}
if (focusTargetAfterHide) {
focusTargetAfterHide.setAttribute('aria-expanded', 'true');
}
this.opened[name] = true;
useOverlay && this.$nextTick(() => hyva.trapFocus(dialogElement));
setFocusAfterTransition(dialogElement, config.duration);
const frame = {name, instance: this, focusTarget: focusTargetAfterHide, time: Date.now()};
modals.push(frame);
if (useOverlay) {
document.body.classList.add('overflow-hidden');
}
return new Promise(resolve => frame.resolve = resolve);
},
cancel() {
this.hide(false);
},
ok() {
this.hide(true);
},
hide(value) {
if (Date.now() - lastHide < config.duration) {
return;
}
lastHide = Date.now();
const modal = modals.pop() || {};
const name = modal.name;
this.opened[name] = false;
hyva.releaseFocus(modal.instance.$refs[modal.name])
trapFocusInNextModalWithOverlay();
const nextFocusAfterHide = modal.focusTarget;
nextFocusAfterHide && setTimeout(() => {
nextFocusAfterHide.setAttribute('aria-expanded', 'false');
nextFocusAfterHide.focus()
}, config.duration);
if (modals.length === 0 || areRemainingModalsWithoutOverlay(modals)) {
document.body.classList.remove('overflow-hidden');
}
modal.resolve(value);
},
overlay(dialog) {
const name = typeof dialog === 'string' ? dialog : config.dialog;
return {
['x-show']() {
return this.opened[name]
},
['x-transition:enter']: config.transitionEnter,
['x-transition:enter-start']: config.transitionEnterStart,
['x-transition:enter-end']: config.transitionEnterEnd,
['x-transition:leave']: config.transitionLeave,
['x-transition:leave-start']: config.transitionLeaveStart,
['x-transition:leave-end']: config.transitionLeaveEnd,
['@hyva-modal-show.window'](event) {
event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide)
}
};
}
};
}
window.hyva.modal.peek = () => modals.length > 0 && modals[modals.length -1]
window.hyva.modal.pop = function () {
if (modals.length > 0) {
const modal = modals[modals.length -1];
modal.instance.hide();
}
}
window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) {
typeof selectors === 'string' || selectors instanceof String
? excludedFromFocusTrapping.add(selectors)
: selectors.map(selector => excludedFromFocusTrapping.add(selector));
}
window.hyva.modal.eventListeners = {
keydown: event => {
if (event.key === 'Escape') {
window.hyva.modal.pop();
}
},
click: event => {
let onetrustDarkFilter = document.querySelector('#onetrust-consent-sdk > div.onetrust-pc-dark-filter')
if (modals.length > 0 && (!onetrustDarkFilter || onetrustDarkFilter.style.display === 'none')) {
const modal = modals[modals.length -1];
const dialog = modal.instance.$refs[modal.name];
if (modal.time + 50 < Date.now() &&
! isOverlayDisabled(dialog) &&
! dialog.contains(event.target)) {
modal.instance.hide();
}
}
}
};
document.addEventListener('keydown', window.hyva.modal.eventListeners.keydown);
document.addEventListener('click', window.hyva.modal.eventListeners.click);
})();</script><script>
document.addEventListener('alpine:init', () => {
Alpine.data("initIncentiveCart", () => ({
isLoading: true,
cartDatas: '',
amount: '',
step1Reached: false,
step2Reached: false,
freeShippingValue: '',
freeGift2Amount: '',
freeGift3Amount: '',
labelShippingStep: '',
currentAmountCart: '',
amountStep: '',
amountStep1: '',
amountStep2: '',
amountStep3: '',
cartDatasLocalStorage() {
let browserStorage = hyva.getBrowserStorage().getItem('mage-cache-storage');
let cart = "";
browserStorage = JSON.parse(browserStorage);
if (browserStorage) {
cart = browserStorage.cart;
} else {
cart = undefined;
}
this.cartDatas = cart;
},
calcFreeShipping(data) {
let subtotalAmount;
if (typeof data !== 'undefined') {
subtotalAmount = data.subtotalAmount
this.cartDatas = data
} else {
subtotalAmount = this.cartDatas.subtotalAmount
}
this.freeShippingValue = this.cartDatas.freeShippingAmount
let amount = this.freeShippingValue - subtotalAmount;
amount = amount.toFixed(2);
if (amount > 0) {
amount = amount.replace('.', ',');
} else {
amount = 0
}
this.amount = amount;
this.isLoading = false;
return amount;
},
calcBarSize(step) {
this.cartDatasLocalStorage();
if (typeof this.cartDatas === 'undefined') {
return;
}
this.calcFreeShipping();
this.freeShippingValue = this.cartDatas.freeShippingAmount;
this.freeGift2Amount = this.cartDatas.freeGift2Amount;
this.freeGift3Amount = this.cartDatas.freeGift3Amount;
this.currentAmountCart = this.cartDatas.subtotalAmount;
this.amountStep1 = this.freeShippingValue - this.currentAmountCart;
this.amountStep2 = this.freeGift2Amount - this.currentAmountCart;
this.amountStep3 = this.freeGift3Amount - this.currentAmountCart;
let widthBar = 100;
if (step === 'step1') {
if (this.amountStep1 > 0) {
widthBar = 100 - (this.amountStep1 * 100 / this.freeShippingValue);
widthBar = this.getWidthBar(widthBar);
this.step1Reached = false;
} else {
widthBar = 100;
this.step1Reached = true;
}
this.amountStep = this.amountStep1.toFixed(2);
this.labelShippingStep = "Livraison offerte"
}
if (step === 'step2' && this.freeGift2Amount) {
if (this.amountStep2 > 0) {
widthBar = 100 - (this.amountStep2 * 100 / (this.freeGift2Amount - this.freeShippingValue));
widthBar = this.getWidthBar(widthBar);
this.step2Reached = false;
} else {
widthBar = 100;
this.step2Reached = true;
}
if(this.amountStep1 < 0) {
this.amountStep = this.amountStep2.toFixed(2);
this.labelShippingStep = this.cartDatas.freeGift2Label;
}
if (!this.step1Reached) {
widthBar = 0;
}
}
if (step === 'step3' && this.freeGift3Amount) {
if (this.amountStep3 > 0) {
widthBar = 100 - (this.amountStep3 * 100 / (this.freeGift3Amount - this.freeGift2Amount));
widthBar = this.getWidthBar(widthBar);
} else {
widthBar = 100;
}
if(this.amountStep2 < 0) {
this.amountStep = this.amountStep3.toFixed(2);
this.labelShippingStep = this.cartDatas.freeGift3Label;
}
if (!this.step2Reached) {
widthBar = 0;
}
}
return 'width: ' + widthBar + '%';
},
getWidthBar(widthBar) {
if (widthBar >= 0 && widthBar < 20) {
widthBar = 20;
} else if (widthBar >= 20 && widthBar < 40) {
widthBar = 40;
} else if (widthBar >= 40 && widthBar < 66) {
widthBar = 66;
} else if (widthBar >= 66 && widthBar < 100) {
widthBar = 90;
}
return widthBar;
}
}));
});</script> <style> .is-loading > :not(.loader) { visibility: hidden; }</style><script>
window.setAjaxCart = (
selectors = '.product_addtocart_form, #product_addtocart_form, .item-widget-add-to-cart, .ritual-addtocart, .category-add-to-cart-form-product, .add-to-cart-form-product-wishlist',
recursive = true
) => {
const addToCartForms = document.querySelectorAll(selectors);
const delay = parseInt('1500', 10);
addToCartForms.forEach(form => {
if (!form.hasEventListener) {
form.hasEventListener = true;
form.addEventListener('submit', e => {
e.preventDefault();
const data = new URLSearchParams(new FormData(form)),
buttons = form.querySelectorAll('.added-to-cart');
let cancelSubmit = false;
buttons.forEach(button => {
let backUrl = false;
let swatchAttributeWrapper = form.querySelector('.swatch-attribute-wrapper');
let checkedInput = swatchAttributeWrapper ? swatchAttributeWrapper.querySelector('input:checked') : false;
if (swatchAttributeWrapper && !checkedInput) {
cancelSubmit = true;
window.dispatchEvent(new CustomEvent('product-addtocart-error'));
setMessage({
text: 'Vous devez choisir des options pour votre article.',
type: 'error',
class: 'fixed'
});
}
if (!button.classList.contains('force-show')) {
button.classList.remove('hidden');
button.disabled = true;
}
if (!cancelSubmit) {
cancelSubmit = true;
fetch(e.currentTarget.action, {
method: 'POST',
body: data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest'
}
}).then(res => {
if (!res.ok) {
form.submit();
}
return res.json();
}).then(res => {
if (res.backUrl) {
backUrl = res.backUrl;
} else {
window.dispatchEvent(new CustomEvent('product-addtocart-success-' + data.get('product')));
window.dispatchEvent(new CustomEvent('product-addtocart-success'));
window.dispatchEvent(
new CustomEvent(
'reload-customer-section-data',
{
detail: {
sections: ['cart', 'cart-tagging', 'messages']
}
}
)
);
}
}).catch(err => {
console.log(err);
window.dispatchEvent(new CustomEvent('product-addtocart-error'));
setMessage({
text: 'There was a problem adding your item to the cart.',
type: 'error'
});
}).finally(() => {
try {
var messages = hyva.getCookie('mage-messages');
messages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
document.cookie = 'mage-messages=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
} catch (error) {
console.warn('Error parsing Cookie Messages:', error);
return;
}
setTimeout(() => {
buttons.forEach(button => {
if (!button.classList.contains('force-show')) {
button.classList.add('hidden');
button.disabled = false;
}
});
messages.forEach(message => {
setMessage(message);
});
if (backUrl && (window.location.href !== backUrl)) {
window.location.href = backUrl;
}
}, delay);
});
}
})
});
}
});
}
/**
* Set Message
*/
function setMessage(message) {
typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
[message], 5000
);
}
/** Init on pageload */
window.setAjaxCart();</script> <script>
'use strict';
(() => {
function _calculateStrength({elementID, valid}) {
const password = document.getElementById(elementID),
emailElm = document.getElementById('email_address');
let displayScore;
if (!password || !password.value) {
displayScore = 0;
} else {
if (emailElm && password.value && emailElm.value &&
password.value.toLowerCase() === emailElm.value.toLowerCase()) {
displayScore = 1;
} else {
const zxcvbnScore = zxcvbn(password.value).score;
displayScore = valid && zxcvbnScore > 0 ? zxcvbnScore : 1;
}
}
_displayStrength(displayScore);
}
function _displayStrength(displayScore) {
let strengthLabel = '',
className;
switch (displayScore) {
case 0:
strengthLabel = "Aucun\u0020mot\u0020de\u0020passe";
className = 'password-none';
break;
case 1:
strengthLabel = "Faible";
className = 'password-weak';
break;
case 2:
strengthLabel = "Moyen";
className = 'password-medium';
break;
case 3:
strengthLabel = "Elev\u00E9";
className = 'password-strong';
break;
case 4:
strengthLabel = "Tr\u00E8s\u0020\u00E9lev\u00E9";
className = 'password-very-strong';
break;
}
const meterElm = document.getElementById('password-strength-meter-container'),
meterLabelElm = document.getElementById('password-strength-meter-label');
meterElm.className = '';
meterElm.classList.add(className);
meterLabelElm.textContent = strengthLabel;
}
let loading = false;
const callbacks = [];
function loadZxcvbn(cb) {
callbacks.push(cb);
if (loading) return;
loading = true;
const script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https\u003A\u002F\u002Fwww.adopt.com\u002Fstatic\u002Fversion6851\u002Ffrontend\u002FAdopt\u002Fhyva\u002Ffr_FR\u002Fjs\u002Fzxcvbn.min.js';
script.async = true;
script.onload = () => callbacks.forEach(cb => cb());
document.head.appendChild(script);
}
window.addEventListener('password-validate', function (evt) {
const meterElm = document.getElementById('password-strength-meter-container'),
meterLabelElm = document.getElementById('password-strength-meter-label');
if (meterElm && meterLabelElm) {
if (evt.detail && evt.detail.elementID) {
const cb = () => _calculateStrength(evt.detail);
window.zxcvbn ? cb() : loadZxcvbn(cb)
}
}
});
document.addEventListener('DOMContentLoaded', () => {
hyva && hyva.formValidation && hyva.formValidation.addRule('password-strength', function(value, options, field, context) {
let counter = 0;
const minCharacterSets = options.minCharacterSets !== undefined ? options.minCharacterSets : 1;
if (value.match(/\d+/)) {
counter++;
}
if (value.match(/[a-z]+/)) {
counter++;
}
if (value.match(/[A-Z]+/)) {
counter++;
}
if (value.match(/[^a-zA-Z0-9]+/)) {
counter++;
}
queueMicrotask(() => {
window.dispatchEvent(new CustomEvent('password-validate', { detail: {
elementID: field.element.id || 'password',
valid: field.state.valid
}}));
});
if (counter < minCharacterSets) {
const missing = minCharacterSets - counter;
return hyva.str('The\u0020password\u0020must\u0020include\u0020at\u0020least\u0020\u00251\u0020or\u0020more\u0020of\u003A\u0020uppercase\u0020\u0028A\u002DZ\u0029,\u0020lowercase\u0020\u0028a\u002Dz\u0029,\u0020number\u0020and\u0020symbol.', missing);
}
return true;
});
})
})();</script> <script type="application/json" id="default-section-data">
{"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"cart":{"summary_count":0,"subtotalAmount":0,"originalSubtotalAmount":0,"subtotal":"<span class=\"price\">0,00\u00a0\u20ac<\/span>","possible_onepage_checkout":true,"items":[],"extra_actions":"","isGuestCheckoutAllowed":false,"website_id":"1","storeId":"1","freeShippingAmount":35,"freeGift2Amount":0,"freeGift2Label":null,"freeGift3Amount":0,"freeGift3Label":null,"minimumShippingAmount":"4.5","isKlarnaEnabled":"1","cartId":"","storeViewCode":"fr","cart_empty_message":"","subtotal_incl_tax":"<span class=\"price\">0,00\u00a0\u20ac<\/span>","subtotal_excl_tax":"<span class=\"price\">0,00\u00a0\u20ac<\/span>","data_id":1764761433},"directory-data":{"FR":{"name":"France","regions":{"182":{"code":"1","name":"Ain"},"183":{"code":"2","name":"Aisne"},"184":{"code":"3","name":"Allier"},"185":{"code":"4","name":"Alpes-de-Haute-Provence"},"187":{"code":"6","name":"Alpes-Maritimes"},"188":{"code":"7","name":"Ard\u00e8che"},"189":{"code":"8","name":"Ardennes"},"190":{"code":"9","name":"Ari\u00e8ge"},"191":{"code":"10","name":"Aube"},"192":{"code":"11","name":"Aude"},"193":{"code":"12","name":"Aveyron"},"249":{"code":"67","name":"Bas-Rhin"},"194":{"code":"13","name":"Bouches-du-Rh\u00f4ne"},"195":{"code":"14","name":"Calvados"},"196":{"code":"15","name":"Cantal"},"197":{"code":"16","name":"Charente"},"198":{"code":"17","name":"Charente-Maritime"},"199":{"code":"18","name":"Cher"},"200":{"code":"19","name":"Corr\u00e8ze"},"201":{"code":"2A","name":"Corse-du-Sud"},"203":{"code":"21","name":"C\u00f4te-d'Or"},"204":{"code":"22","name":"C\u00f4tes-d'Armor"},"205":{"code":"23","name":"Creuse"},"261":{"code":"79","name":"Deux-S\u00e8vres"},"206":{"code":"24","name":"Dordogne"},"207":{"code":"25","name":"Doubs"},"208":{"code":"26","name":"Dr\u00f4me"},"273":{"code":"91","name":"Essonne"},"209":{"code":"27","name":"Eure"},"210":{"code":"28","name":"Eure-et-Loir"},"211":{"code":"29","name":"Finist\u00e8re"},"212":{"code":"30","name":"Gard"},"214":{"code":"32","name":"Gers"},"215":{"code":"33","name":"Gironde"},"250":{"code":"68","name":"Haut-Rhin"},"202":{"code":"2B","name":"Haute-Corse"},"213":{"code":"31","name":"Haute-Garonne"},"225":{"code":"43","name":"Haute-Loire"},"234":{"code":"52","name":"Haute-Marne"},"252":{"code":"70","name":"Haute-Sa\u00f4ne"},"256":{"code":"74","name":"Haute-Savoie"},"269":{"code":"87","name":"Haute-Vienne"},"186":{"code":"5","name":"Hautes-Alpes"},"247":{"code":"65","name":"Hautes-Pyr\u00e9n\u00e9es"},"274":{"code":"92","name":"Hauts-de-Seine"},"216":{"code":"34","name":"H\u00e9rault"},"217":{"code":"35","name":"Ille-et-Vilaine"},"218":{"code":"36","name":"Indre"},"219":{"code":"37","name":"Indre-et-Loire"},"220":{"code":"38","name":"Is\u00e8re"},"221":{"code":"39","name":"Jura"},"222":{"code":"40","name":"Landes"},"223":{"code":"41","name":"Loir-et-Cher"},"224":{"code":"42","name":"Loire"},"226":{"code":"44","name":"Loire-Atlantique"},"227":{"code":"45","name":"Loiret"},"228":{"code":"46","name":"Lot"},"229":{"code":"47","name":"Lot-et-Garonne"},"230":{"code":"48","name":"Loz\u00e8re"},"231":{"code":"49","name":"Maine-et-Loire"},"232":{"code":"50","name":"Manche"},"233":{"code":"51","name":"Marne"},"235":{"code":"53","name":"Mayenne"},"236":{"code":"54","name":"Meurthe-et-Moselle"},"237":{"code":"55","name":"Meuse"},"1018":{"code":"98","name":"Monaco"},"238":{"code":"56","name":"Morbihan"},"239":{"code":"57","name":"Moselle"},"240":{"code":"58","name":"Ni\u00e8vre"},"241":{"code":"59","name":"Nord"},"242":{"code":"60","name":"Oise"},"243":{"code":"61","name":"Orne"},"1017":{"code":"OM","name":"Outre-Mer"},"257":{"code":"75","name":"Paris"},"244":{"code":"62","name":"Pas-de-Calais"},"245":{"code":"63","name":"Puy-de-D\u00f4me"},"246":{"code":"64","name":"Pyr\u00e9n\u00e9es-Atlantiques"},"248":{"code":"66","name":"Pyr\u00e9n\u00e9es-Orientales"},"251":{"code":"69","name":"Rh\u00f4ne"},"253":{"code":"71","name":"Sa\u00f4ne-et-Loire"},"254":{"code":"72","name":"Sarthe"},"255":{"code":"73","name":"Savoie"},"259":{"code":"77","name":"Seine-et-Marne"},"258":{"code":"76","name":"Seine-Maritime"},"275":{"code":"93","name":"Seine-Saint-Denis"},"262":{"code":"80","name":"Somme"},"263":{"code":"81","name":"Tarn"},"264":{"code":"82","name":"Tarn-et-Garonne"},"272":{"code":"90","name":"Territoire-de-Belfort"},"277":{"code":"95","name":"Val-d'Oise"},"276":{"code":"94","name":"Val-de-Marne"},"265":{"code":"83","name":"Var"},"266":{"code":"84","name":"Vaucluse"},"267":{"code":"85","name":"Vend\u00e9e"},"268":{"code":"86","name":"Vienne"},"270":{"code":"88","name":"Vosges"},"271":{"code":"89","name":"Yonne"},"260":{"code":"78","name":"Yvelines"}}},"LU":{"name":"Luxembourg"},"MC":{"name":"Monaco"},"data_id":1764761433},"captcha":[],"wishlist":{"items":[]},"instant-purchase":[],"loggedAsCustomer":[],"multiplewishlist":[],"persistent":[],"review":[],"browsing-data":{"env_work":"prod","locale":"fr_FR","env_country":"FR","env_currency":"EUR","env_language":"fr","user_logged":"not logged","user_identification_tool":"guest","data_id":1764761433},"beauty-profile-section":[],"ammessages":[],"customer-tagging":[],"cart-tagging":{"items":[],"restore_cart_url":""},"active-variation-tagging":[],"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[],"paypal-billing-agreement":[]}</script> </div></body></html>