www.showroomprive.com
Open in
urlscan Pro
2606:2800:233:8fd2:a5ac:6d4d:b3df:ccc3
Public Scan
Submitted URL: http://akx8trk.com/7kb1xw/7sn9fhl/?sub1=1021730207772423411
Effective URL: https://www.showroomprive.com/landing.aspx?bg=generique1&v=opcb&t=3530&utm_goal=1&utm_channel=affiliate&utm_medium=affiliate&u...
Submission: On October 30 via api from US — Scanned from DE
Effective URL: https://www.showroomprive.com/landing.aspx?bg=generique1&v=opcb&t=3530&utm_goal=1&utm_channel=affiliate&utm_medium=affiliate&u...
Submission: On October 30 via api from US — Scanned from DE
Form analysis
1 forms found in the DOMPOST ./landing.aspx?bg=generique1&v=opcb&t=3530&utm_goal=1&utm_channel=affiliate&utm_medium=affiliate&utm_source=kwanko&utm_campaign=always-on&utm_content=email+marketing&utm_term=513313&s=2025&kwkuniv=P512CCF57D521100-v83bff4ri7w3mkyqmgxnmkzfss8us-71c96ghdk3&cible=v83bff4ri7w3mkyqmgxnmkzfss8us-71c96ghdk3&wiz_medium=email+marketing&wiz_source=cataloguedesr%c3%a9compenses&wiz_campaign=77007
<form method="post"
action="./landing.aspx?bg=generique1&v=opcb&t=3530&utm_goal=1&utm_channel=affiliate&utm_medium=affiliate&utm_source=kwanko&utm_campaign=always-on&utm_content=email+marketing&utm_term=513313&s=2025&kwkuniv=P512CCF57D521100-v83bff4ri7w3mkyqmgxnmkzfss8us-71c96ghdk3&cible=v83bff4ri7w3mkyqmgxnmkzfss8us-71c96ghdk3&wiz_medium=email+marketing&wiz_source=cataloguedesr%c3%a9compenses&wiz_campaign=77007"
id="ctl00">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="">
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="afq1lKm5QERzcj9Fm4tyqgp2Cu0gZpIpob9nTs4y88vEbWnnMJAmHRh+spQfrZzNIuiyIdYERuUQwsvQLDsjg0ZUAhsvdlwpOm7ktDwuB681bPDDfQAsOSco7ZuRc+kbSRBhiUWX4Lj8CavvuAKxruXxkY3mW+gvVCz7X7siHUP2h1Ixr4atAfY8VVKGG7Kp+gDl9lKB4UpoIHKqwHm8weDExKPNpG1jrPM334sWO/Qb04brQrO9sRGFeYw308JoDYhAud2I8IJF+Hf3kgypXoo/Nc/j6qAW8fqXMIfHBPOG55QbxOmG6rcT9Et/s39HywbAtaENY3pHbgJiLa/1+Tmsn6+JrrKBh6Id4QZ1Oe+p6qDI2tY9zYY18EgVjYCvXVlRfsRV0LNnm83vesUPbOUJA7/wVGtcihsttr+4lhf64Yae3ViZTbIn0Fq9ym9BReP1i6I64l4w/F+hOAw2E+OdSyXQbaIoaXPVRPsi4oY9UVRlAE16rfh67yx5ebxoHD/lhX30SKLwRUjJVIXt7dT7WXcZBlBx8JhFwXkCSCsf6Lz3JOQbMsn3UQyuA3BC2L34dgpbdZqO+MdIbeunA8ZvK5yayRjFUt9cvbCy9vCC/WJ4OCvgeBv1eOM8ndYrf2ve9tN75dBXxJwLoiZnkhzbOQ61oUoTcMbMSPP/OKMd0wbp0xc2SCxJIxVypaPq/iqf8gncGMnq3defSPzemlFvNSyQz6ALZ79rfIoFCEyt7MXPbawOHn2R3dMqrCS3Q7LzYPAjkCcFbp/9TbATCag4lMRXKae4NPMqwphE1r0Alyl3VyaI9M3ViLtE2/KU+ekHgZTeNTsLVuA4jDH481zz6KsPqZy17yonN6UrwO3eembvXq4cAgh+pVqdwQV8HquiqA==">
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['ctl00'];
if (!theForm) {
theForm = document.ctl00;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="318D363F">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION"
value="ehkfzpB/285c8tg2O1ziFhD8AU/0NySzW/CJxwkbVv9/sr973skwfZDqRNuiNRWkE5o7mXh3cZUTpb3HkHjNW57DNTrC25yiYU26dmtiPpUcKTJvs+HkWITQr+9mVU0HWkAFRSLbWOo7nkmDJvW73SBoZyF68C2pOdRwcWpTOW4tOEEgawDthX+6DVdtZr/57eDylHxhRUXgkP4O4bKapqYV71Zdx2wfEvIqr6kk9ziVj/NcdxyWfgQPRcPiFXu5Vc3Paz1QMoDQGWH79gtP+Qp/qlc0TnDneFXBmuCoivXZXLHjOL5O7Xicvm2oSdJzAQ3DygM2ixL1qMC9uvxHRyMV3HlH/a/0CAWI613giZJwSj35xv1jsqP+1cBHG58+JJ6COimOZ9FPH9TQqgMD5IxxyoQH3DkaZiipbMi23s2Hxafe">
</div>
<div id="PanelLogin">
<div class="main-header main-header__with-nav js-header_dyn bg-body js-headerFixe" style="width: 100%; position: fixed; top: 0px;">
<div class="main-header__first-raw__wrapper bg-header pt-1">
<div class="main-header__first-raw grid-wrapper d-flex jc-between ai-center">
<div class="main-header__first-raw__logo-wrapper d-flex ai-center">
<div class="main-header__first-raw__menu icon-burger js-toggleMenu"></div>
<a href="/accueilp.aspx" id="TopInscription_baseLink">
<picture>
<source srcset="//static.cedex.it.showroomprive.com/v4/0/_img/logo-srp_dark.svg" media="(prefers-color-scheme: dark)">
<img loading="lazy" class="main-header__first-raw__logo" src="//static.cedex.it.showroomprive.com/v4/0/_img/logo-srp.svg" alt="Showroomprive.com">
</picture>
</a>
</div>
<script type="text/javascript" src="//static.cedex.it.showroomprive.com/v4/js/Catalog/search_api.js?ver=1-1-23"></script>
<script type="text/javascript" src="//static.cedex.it.showroomprive.com/v4/js/Catalog/disclaimer.js?ver=1-0-9"></script>
<script type="text/javascript">
(function(publics) {
var privates = {};
publics.currentHost = 'www.showroomprive.com';
publics.configUrls = {
"templateProductUrl": "[BASEURL][SALEID]/products_[PRODUCTID]_image[INDEX]_[SIZE].jpg",
"urlCdn": "//cedex.it.showroomprive.com/v2/images_content_split/",
"urlMedia": "//media.showroomprive.com/v2/images_content_split/",
"urlArchive": "//archive.showroomprive.com/v2/images_content_split/",
"urlStatic": null
};
publics.srpSearchApi = null;
publics.srpDisclaimerApi = null;
publics.init = function() {
var configSearchApi = {
apiUrl: '/ajax/GetSearchProduct.aspx',
debug: GlobalJsVar.IsDebugMode,
wordWheelCount: 30
};
publics.srpSearchApi = new SrpApi(configSearchApi);
var configDisclaimerApi = {
apiUrl: '/ajax/GetDisclaimer.aspx',
debug: GlobalJsVar.IsDebugMode,
popupConfig: {
closeText: 'Fermer',
dialogClass: "popup_disclaimer"
}
};
publics.srpDisclaimerApi = new SrpDisclaimer(configDisclaimerApi);
};
}(SRP.TopSearch = {}));
</script>
<div class="m-popin-wrapper js-popin-wrapper" id="disclaimerAlgolia">
<div class="m-popin m-popin--medium js-popin">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@algolia/autocomplete-theme-classic">
<script type="text/template" class="templateDisclaimerPopin"> <div class="m-popin__title txt-primary bg-header rounded-lg p-6">
{{ content }}
<div class="d-flex jc-center ai-center mt-5">
<a id="acceptDisclaimer" class="btn btn-outline--dark col-3" onclick="DisclaimerPopin.AcceptDisclaimer('{{productId}}', '{{source}}')">{{ acceptButton }} </a>
<a id="rejectDisclaimer" class="btn btn--dark col-3 mr-4" onclick="DisclaimerPopin.RejectDisclaimer()">{{ rejectButton }} </a>
</div>
</div>
</script>
<div id="popupDisclaimer">
</div>
<script type="text/javascript">
const DisclaimerPopin = {
PopinData: undefined,
InitDisclaimerPopin: () => {
SrpPopinFactory.init("disclaimerAlgolia", {
closeOnOutside: true,
isDisplayed: false
});
},
CallDisclaimerService: (productId, disclaimerId, source) => {
fetch('/api/disclaimer/info?disclaimerId=' + disclaimerId).then(response => {
return response.json();
}).then(srpReply => {
if (srpReply.status.code >= 0 && srpReply.data) {
const templateContent = $('script.templateDisclaimerPopin').html();
const popinContent = _.template(templateContent, {
'content': srpReply.data.content,
'acceptButton': srpReply.data.acceptButton,
'rejectButton': srpReply.data.rejectButton,
'productId': productId,
'source': source
});
$('#popupDisclaimer').html(popinContent);
const disclaimerPopin = SrpPopinFactory.getPopin("disclaimerAlgolia");
disclaimerPopin.open();
}
}).catch((error) => {
console.log(error)
});
},
OpenPopin: (productId, disclaimerId, source) => {
DisclaimerPopin.CallDisclaimerService(productId, disclaimerId, source);
},
AcceptDisclaimer: (productId, source) => {
DisclaimerPopin.SetCookie("disclaimers", "true", 1);
if (source.toLowerCase() === "showroomprive") {
window.location.href = '/ficheproduit.aspx?produit=' + productId;
} else {
window.location.href = '/market/catalog/product.aspx?produit=' + productId;
}
},
RejectDisclaimer: () => {
const disclaimerPopin = SrpPopinFactory.getPopin("disclaimerAlgolia");
disclaimerPopin.close();
},
SetCookie(name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
},
};
if (document.readyState === "complete" || document.readyState === "loaded" || document.readyState === "interactive") {
/* DOM already loaded */
DisclaimerPopin.InitDisclaimerPopin();
} else {
window.addEventListener('DOMContentLoaded', DisclaimerPopin.InitDisclaimerPopin);
}
</script>
</div>
</div>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@algolia/autocomplete-theme-classic">
<div role="search" id="autocomplete" class="main-header__champRecherche border border--dark rounded">
<div class="aa-Autocomplete" role="combobox" aria-expanded="false" aria-haspopup="listbox" aria-labelledby="autocomplete-0-label">
<div class="aa-InputWrapperPrefix champ_mdr"><label class="aa-Label" aria-label="Submit" for="autocomplete-0-input" id="autocomplete-0-label"><button class="aa-SubmitButton" type="submit" title="Submit"><svg class="aa-SubmitIcon"
viewBox="0 0 24 24" width="20" height="20" fill="currentColor">
<path
d="M16.041 15.856c-0.034 0.026-0.067 0.055-0.099 0.087s-0.060 0.064-0.087 0.099c-1.258 1.213-2.969 1.958-4.855 1.958-1.933 0-3.682-0.782-4.95-2.050s-2.050-3.017-2.050-4.95 0.782-3.682 2.050-4.95 3.017-2.050 4.95-2.050 3.682 0.782 4.95 2.050 2.050 3.017 2.050 4.95c0 1.886-0.745 3.597-1.959 4.856zM21.707 20.293l-3.675-3.675c1.231-1.54 1.968-3.493 1.968-5.618 0-2.485-1.008-4.736-2.636-6.364s-3.879-2.636-6.364-2.636-4.736 1.008-6.364 2.636-2.636 3.879-2.636 6.364 1.008 4.736 2.636 6.364 3.879 2.636 6.364 2.636c2.125 0 4.078-0.737 5.618-1.968l3.675 3.675c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z">
</path>
</svg></button></label>
<div class="aa-LoadingIndicator" hidden=""><svg class="aa-LoadingIcon" viewBox="0 0 100 100" width="20" height="20">
<circle cx="50" cy="50" fill="none" r="35" stroke="currentColor" stroke-dasharray="164.93361431346415 56.97787143782138" stroke-width="6">
<animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s" values="0 50 50;90 50 50;180 50 50;360 50 50" keyTimes="0;0.40;0.65;1"></animateTransform>
</circle>
</svg></div>
</div>
<div class="aa-InputWrapper"><input class="aa-Input champ_mdr main-header__champRecherche__algolia js-input-rch txt-dark" aria-autocomplete="both" aria-labelledby="autocomplete-0-label" id="autocomplete-0-input" autocomplete="off"
autocorrect="off" autocapitalize="off" enterkeyhint="search" spellcheck="false" placeholder="Trouver le cadeau idéal" maxlength="512" type="search"></div>
<div class="aa-InputWrapperSuffix champ_mdr"><button class="aa-ClearButton" type="reset" title="Clear" hidden=""><svg class="aa-ClearIcon" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path
d="M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z">
</path>
</svg></button></div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/algoliasearch@4.24.0/dist/algoliasearch.umd.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@algolia/autocomplete-js"></script>
<script src="https://cdn.jsdelivr.net/npm/@algolia/autocomplete-plugin-redirect-url@1.17.4/dist/umd/index.production.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@algolia/autocomplete-plugin-recent-searches"></script>
<script src="https://cdn.jsdelivr.net/npm/@algolia/autocomplete-plugin-algolia-insights"></script>
<script src="https://cdn.jsdelivr.net/npm/@algolia/autocomplete-plugin-query-suggestions@1.17.4/dist/umd/index.production.js"></script>
<script>
const algoliasearch = window['algoliasearch'];
const {
autocomplete,
getAlgoliaResults
} = window['@algolia/autocomplete-js'];
const {
createRedirectUrlPlugin
} = window['@algolia/autocomplete-plugin-redirect-url'];
const {
createRecentSearchesPlugin,
createLocalStorageRecentSearchesPlugin
} = window['@algolia/autocomplete-plugin-recent-searches'];
const {
createAlgoliaInsightsPlugin
} = window['@algolia/autocomplete-plugin-algolia-insights'];
const {
createQuerySuggestionsPlugin
} = window['@algolia/autocomplete-plugin-query-suggestions'];
const algoliaApiKey = '9627c7d92b37dd5a5b7598b323a3cdb7';
const algoliaAppId = '6NMNDPDXJX';
const isSaleSuggestionsActive = 'true' == 'true';
const isQuerySuggestionsActive = 'true' == 'true';
const algoliaClient = algoliasearch(algoliaAppId, algoliaApiKey);
const searchClient = {
...algoliaClient,
search(requests) {
// if no query is provided, do not fetch search results
if (requests.every(({
query,
params
}) => (!query || query === '') && (!params.query || params.query === ''))) {
return Promise.resolve({
results: requests.map(() => ({
hits: [],
nbHits: 0,
nbPages: 0,
page: 0,
processingTimeMS: 0,
hitsPerPage: 0,
exhaustiveNbHits: false,
query: "",
params: ""
}))
});
}
return algoliaClient.search(requests);
}
};
const productsIndexName = 'srp_products_fr';
const salesIndexName = 'srp_sales_fr';
const querySuggestionsIndexName = 'srp_products_fr_query_suggestions';
const recentSearchesPlugin = createLocalStorageRecentSearchesPlugin({
key: 'RECENT_SEARCH',
limit: 5,
transformSource({
source,
onRemove
}) {
return {
...source,
onSelect: (params) => {
const {
state
} = params;
// Tracking in events.js
EVENTS_TC.algoliaAutocomplete.selectHistoryACAlgolia(productsIndexName, state.query);
window.location.href = createUrl(productsIndexName, state.query);
},
templates: {
...source.templates,
item(params) {
const {
item,
components,
html,
} = params;
return html`<div className="aa-ItemWrapper jc-start px-3 py-1">
<div className="aa-ItemActions">
<button
className="aa-ItemActionButton"
title="Remove this search"
onClick=${(event) => {
event.preventDefault();
event.stopPropagation();
onRemove(item.id)
}}>
<div><i class="icon-croix txt-dark fs-3 mr-1"></i></div>
</button>
</div>
<div className="aa-ItemContent">
<div className="aa-ItemContentBody">
<div className="aa-ItemContentTitle txt-dark">
${components.Highlight({
hit: item,
attribute: 'label',
})}
</div>
</div>
</div>
</div>`;
},
header({
items,
html
}) {
if (items.length === 0) {
return "";
}
return html`
<div class="d-flex jc-between">
<div class="aa-SourceHeaderTitle fs-2 txt-dark bg-header">Vos dernières recherches</div>
<div class="txt-link d-block d-m-none">Effacer</div>
</div>`;
},
},
};
},
});
const redirectUrlPlugin = createRedirectUrlPlugin({
onRedirect(redirects, {
event,
navigator,
state
}) {
const item = redirects.find(({
sourceId
}) => sourceId === "products");
if (item) {
const itemUrl = item && item.urls ? item.urls[0] : '';
if (itemUrl) {
// Tracking in events.js
EVENTS_TC.algoliaAutocomplete.redirectFromAlgoliaSearch(item.indexName || "", state.query, itemUrl || "");
navigator.navigate({
itemUrl,
item,
state
});
}
} else {
return;
}
},
});
function createUrl(index, query) {
return `/catalog/search?${index}[query]=${query}`;
}
function getQS(item) {
let hl = item._highlightResult;
let isHighlighted = hl.query && hl.query.value != '';
if (!isHighlighted) {
return item.query
}
return getQSHighlight(hl);
}
function getQSHighlight(highlight) {
let query = '';
if (highlight.query && highlight.query.value) {
let query = highlight.query.value;
if (query && query.length > 0) {
var startHighlight = "__aa-highlight__";
var endHighlight = "__/aa-highlight__";
var startIndex = query.indexOf(startHighlight);
if (startIndex == 0) { // the highlighted word is the first one in the query
var n = startIndex + startHighlight.length; //position of the first letter to upper case
query = query.substring(0, n) + query[n].toUpperCase() + query.substring(n + 1); // upper case first letter
} else {
query = query[0].toUpperCase() + query.substring(1);
}
query = query.replaceAll(startHighlight, "<strong>").replaceAll(endHighlight, "</strong>");
}
return {
__html: query
};
} else return {
__html: ''
};
}
function getQuerySuggestionTemplate(index, item, html) {
return html`
<i class="icon icon-loupe mr-2 txt-dark"></i><a href=${createUrl(index, item.query)} class="d-inblock" dangerouslySetInnerHTML=${getQS(item)}></a>
`;
}
var querySuggestionsPlugin = null;
if (isQuerySuggestionsActive) {
querySuggestionsPlugin = createQuerySuggestionsPlugin({
searchClient,
indexName: querySuggestionsIndexName,
transformSource({
source,
onTapAhead
}) {
return {
...source,
onSelect({
item
}) {
EVENTS_TC.algoliaAutocomplete.selectQuerySuggestionACAlgolia(querySuggestionsIndexName, item.query);
},
getItemUrl({
item
}) {
return createUrl(productsIndexName, item.query);
},
templates: {
...source.templates,
item(params) {
const {
item,
html
} = params;
return getQuerySuggestionTemplate(productsIndexName, item, html);
},
header({
items,
html
}) {
if (items.length === 0) {
return "";
}
return html`
<div class="d-flex jc-between">
<div class="aa-SourceHeaderTitle fs-2 txt-dark bg-header">Suggestions de recherche</div>
</div>`;
}
},
};
}
})
}
function submitSearch(query, isSeeAll) {
let type = !isSeeAll ? 'submit' : 'suggestion';
let value = !isSeeAll ? 'search' : 'all_items';
// Tracking in events.js
EVENTS_TC.algoliaAutocomplete.submitAlgoliaSearch(productsIndexName, query, type, value);
window.location.href = createUrl(productsIndexName, query);
}
function sendEvent(productId, disclaimerId, source) {
// if disclaimer id = 0 or disclaimers already accepted, workflow continue
const disclaimerCookie = $.cookie("disclaimers");
if ((!disclaimerId || disclaimerId === 0) || (disclaimerCookie && disclaimerCookie === "true")) {
if (source.toLowerCase() === "showroomprive") {
return `/ficheproduit.aspx?produit=${productId}`;
} else {
return `/market/catalog/product.aspx?produit=${productId}`;
}
} else {
DisclaimerPopin.OpenPopin(productId, disclaimerId, source);
}
}
function getPriceTemplate(hit, html) {
if (hit.discount) {
var price = srpFormat.FormatPrice(hit.price);
var publicPrice = srpFormat.FormatPrice(hit.publicPrice);
return html`<div class="hit-prices mb-2">
<div class="d-flex jc-between">
<div class="d-s-flex flex-wrap">
<div class="txt-primary fw-bold mr-2">${price}</div>
<div class="txt-muted">
<strike class="fs-tiny1 mt-1">${publicPrice}</strike>
<span class="js-tooltip icon-aide ml-1 cursor-pointer" data-tooltip-content="En savoir plus"></span>
</div>
</div>
<div>
<div class="fw-bold bg-lvl2 p-1 txt-primary">-${hit.discount}%</div>
</div>
</div>
</div>`
} else {
var price = srpFormat.FormatPrice(hit.price);
return html`<div class="hit-prices mb-2">
<div class="d-flex ai-center">
<div class="fw-bold mr-2">${price}</div>
</div>
</div>`
}
}
function handleRedirectFp(disclaimerId, productId, source) {
const disclaimerCookie = $.cookie("disclaimers");
if (!disclaimerId || disclaimerId === 0 || (disclaimerCookie && disclaimerCookie === "true")) {
if (source.toLowerCase() === "showroomprive") {
return `/ficheproduit.aspx?produit=${productId}`;
} else {
return `/market/catalog/product.aspx?produit=${productId}`;
}
} else {
return '#'
}
}
function mapInsightEventsItemsToProducts(items) {
let products = [];
for (let i = 0; i < items.length; i++) {
let product = {
"name": items[i].label,
"variantsId": items[i].variants,
"id": items[i].objectID,
"brand": items[i].brand.label,
"saleId": items[i].sale ? items[i].sale.id : null,
"price": items[i].price,
"position": items[i].__position
}
products.push(product);
}
return products;
}
function mapInsightEventsItemsToSales(items) {
let sales = [];
for (let i = 0; i < items.length; i++) {
let sale = {
label: items[i].label,
id: items[i].objectID
}
sales.push(sale);
}
return sales;
}
const algoliaInsightsPlugin = createAlgoliaInsightsPlugin({
onItemsChange({
insights,
insightsEvents,
state
}) {
const events = [];
insightsEvents.forEach((insightsEvent) => {
let index = insightsEvent.index;
if (index) {
if (index === productsIndexName) {
const event = {
...insightsEvent,
eventName: 'Items Viewed from Autocomplete',
};
events.push(event);
let products = mapInsightEventsItemsToProducts(insightsEvent.items);
EVENTS_TC.algoliaAutocomplete.onSearchItemACAlgolia(productsIndexName, state.query, products);
}
if (index === salesIndexName) {
const event = {
...insightsEvent,
eventName: 'Sales Viewed from Autocomplete',
};
events.push(event);
let sales = mapInsightEventsItemsToSales(insightsEvent.items);
EVENTS_TC.algoliaAutocomplete.onSearchSaleACAlgolia(salesIndexName, state.query, sales);
}
}
});
insights.viewedObjectIDs(...events);
},
onSelect({
insights,
insightsEvents,
state
}) {
const events = [];
insightsEvents.forEach((insightsEvent) => {
let index = insightsEvent.index;
if (index) {
if (index === productsIndexName) {
const event = {
...insightsEvent,
eventName: 'Item Selected from Autocomplete',
queryId: insightsEvent.queryID
};
events.push(event);
let itemToTrack = insightsEvent.items.length > 0 ? insightsEvent.items[0] : null;
EVENTS_TC.algoliaAutocomplete.onClickItemACAlgolia(productsIndexName, state.query, itemToTrack);
}
if (index === salesIndexName) {
const event = {
...insightsEvent,
eventName: 'Sale Selected from Autocomplete',
queryId: insightsEvent.queryID
};
events.push(event);
let saleToTrack = insightsEvent.items.length > 0 ? insightsEvent.items[0] : null;
EVENTS_TC.algoliaAutocomplete.onClickSaleACAlgolia(salesIndexName, state.query, saleToTrack);
}
}
});
insights.clickedObjectIDsAfterSearch(...events);
}
});
var plugins = [algoliaInsightsPlugin, redirectUrlPlugin, recentSearchesPlugin];
if (isQuerySuggestionsActive) {
plugins.push(querySuggestionsPlugin);
}
autocomplete({
container: '#autocomplete',
placeholder: 'Trouver le cadeau idéal',
plugins: plugins,
openOnFocus: true,
insights: true,
getSources({
query
}) {
const sources = [getAlgoliaProducts(query)];
if (isSaleSuggestionsActive) {
sources.push(getAlgoliaSales(query));
}
return sources;
},
render({
state,
elements,
render,
html
}, root) {
const {
recentSearchesPlugin,
products,
sales,
querySuggestionsPlugin
} = elements;
const currentQuery = state.query;
render(html`<div class="aa-PanelLayout aa-Panel--scrollable ">
<div class="aa-PanelSections grid-row">
<div class="aa-PanelSection aa-PanelSection--left ${currentQuery !== '' ? `col-4` : `col-12`}">
${currentQuery !== '' && isSaleSuggestionsActive ? sales : ''}
${currentQuery !== '' && isQuerySuggestionsActive ? querySuggestionsPlugin : ''}
${currentQuery === '' ? recentSearchesPlugin : ''}
</div>
<div class="aa-PanelSection aa-PanelSection--right panel-autocomplete-right col-8">
${products}
</div>
</div>
</div>`, root);
},
onSubmit: (params) => {
const {
state
} = params;
submitSearch(state.query, false)
},
classNames: {
detachedCancelButton: '',
detachedFormContainer: '',
detachedContainer: '',
detachedOverlay: '',
detachedSearchButton: '',
detachedSearchButtonIcon: '',
detachedSearchButtonPlaceholder: '',
detachedSearchButtonQuery: '',
form: 'bg-lvl2 js-algolia-form',
input: 'champ_mdr main-header__champRecherche__algolia js-input-rch txt-dark',
inputWrapper: '',
inputWrapperPrefix: 'champ_mdr',
inputWrapperSuffix: 'champ_mdr',
item: 'd-block col-6 col-l-3',
label: '',
list: 'grid-row',
loadingIndicator: '',
panel: 'bg-header',
panelLayout: '',
clearButton: '',
root: '',
source: '',
sourceFooter: '',
sourceHeader: '',
sourceNoResults: '',
submitButton: '',
}
});
function getAlgoliaProducts(query) {
return {
sourceId: 'products',
getItems() {
return getAlgoliaResults({
searchClient,
queries: [{
indexName: productsIndexName,
query,
params: {
ruleContexts: ['enable-redirect-url'],
hitsPerPage: 4,
clickAnalytics: true,
},
}, ],
});
},
templates: {
item({
item,
html
}) {
let redirectToFP = handleRedirectFp(item.disclaimerId, item.objectID, item.source);
let priceTemplate = getPriceTemplate(item, html);
return html`<div class="d-flex flex--col h-100 border rounded-large overflow-hidden bg-header pos-relative">
<div class="search-container">
<div>
<a href=${redirectToFP} data-product-id=${item.objectID}
data-product-disclaimer-id=${item.disclaimerId}
data-source=${item.source} class="js-image-swiper" onclick="${() => { sendEvent(item.objectID, item.disclaimerId, item.source); }}">
<picture>
<source srcset="${item.images[0]}?width=318&quality=90&output=webp, ${item.images[0]}?width=636&quality=90&output=webp 2x" type="image/webp" />
<source srcset="${item.images[0]}?width=318&quality=90&output=jpg, ${item.images[0]}?width=636&quality=90&output=jpg 2x" type="image/jpeg" />
<img class="d-block of-contain" style="aspect-ratio:298/349" src="${item.images[0]}?width=318&quality=90&output=jpg" alt="${item.label}" />
</picture>
</a>
</div>
</div>
<div class="p-3 d-flex flex--col jc-between h-100">
<div class="mb-2">
<div class="fs-small fw-bold txt-dark">${item.brand.label}</div>
<a class="hit-description txt-decoration-none mt-2" data-product-disclaimer-id="${item.disclaimerId}" data-product-id="${item.objectID}" href="${redirectToFP}"> ${item.label}</a>
</div>
<div>
${priceTemplate}
</div>
</div>
</div>`;
},
header({
items,
html
}) {
if (items.length === 0) {
return "";
}
return html`
<div class="d-flex jc-between">
<div class="aa-SourceHeaderTitle fs-2 txt-dark bg-header">Suggestion de produits</div>
<div class="txt-link txt-dark" onclick="${() => { submitSearch(query, true); }}">Voir tout</div>
</div>`;
},
}
}
};
function getAlgoliaSales(query) {
return {
sourceId: 'sales',
getItems() {
return getAlgoliaResults({
searchClient,
queries: [{
indexName: salesIndexName,
query,
params: {
ruleContexts: ['enable-redirect-url'],
hitsPerPage: 5,
clickAnalytics: true
},
}, ],
});
},
templates: {
item({
item,
html,
components
}) {
return html`<div class="txt-white"><a href="/vente.aspx?vente=${item.objectID}" class="d-inblock">${item._highlightResult.label.value ? components.Highlight({ hit: item, attribute: 'label', tagName: "strong" }) : item.label}</a></div>`;
},
header({
items,
html
}) {
if (items.length === 0) {
return "";
}
return html`
<div class="d-flex jc-between">
<div class="aa-SourceHeaderTitle fs-2 txt-dark bg-header">Nos ventes en cours</div>
</div>`;
},
}
}
}
</script>
<div id="top-btn-member">
<div class="txt-link btn-already-member-tag js-btn-membre cursor-pointer" style="text-wrap: nowrap">Déjà membre ?</div>
<div class="txt-link btn-not-member-tag js-btn-pas-membre cursor-pointer" style="display: none;">Pas encore membre ? Inscrivez-vous</div>
</div>
</div>
</div>
</div>
</div>
</form>
Text Content
Déjà membre ? Pas encore membre ? Inscrivez-vous LES GRANDES MARQUES EN VENTE PRIVÉE 12 € DÈS 50€ D’ACHAT POUR VOTRE INSCRIPTION Connectez-vous pour commencer votre Shopping ! * champs obligatoires Email * Veuillez indiquer un e-mail valide (exemple@mail.com) Mot de passe * Veuillez saisir votre mot de passe. Mot de passe oublié ? Mémoriser ou Facebook Apple LES GRANDES MARQUES EN VENTE PRIVÉE 12 € DÈS 50€ D’ACHAT POUR VOTRE INSCRIPTION Inscrivez-vous pour commencer votre Shopping ! * champs obligatoires Femme Homme Prénom * Cette information est obligatoire. Nom * Cette information est obligatoire. Email * Veuillez indiquer un e-mail valide (exemple@mail.com) Mot de passe * Pour votre sécurité remplissez les conditions suivantes : * 9 caractères minimum * Au moins un chiffre * Ne doit pas contenir ' et = J'accepte sans réserve les conditions générales de vente.* Cette information est obligatoire. ou Facebook Apple Shopping h24, 7/7, avec nos applis mobiles Livraison en 24h Pour changer d’avis Achats 100% sécurisés ACCESSIBILITÉ Site web accessible Assistance dédiée aux sourds et malentendants ACHAT 100% SECURISE En toute sérénité ! 4,36/5sur 2202807 avis Politique de confidentialitéGérer mes cookiesTous nos produits © Showroomprive.com 2024 Showroomprive adhère au Code déontologique de la FEVAD Les informations collectées vous concernant font l’objet d’un traitement informatique par Showroomprive.com, et sont notamment nécessaires à la gestion de vos commandes, ou pourront être utilisées dans le cadre de notre système de lutte contre la fraude à la carte bancaire. Conformément à la réglementation en vigueur sur la protection des données personnelles, vous disposez d’un droit d’accès, de rectification et d’opposition de vos données. Vous pouvez exercer ces droits en envoyant votre demande via ce formulaire. Showroomprivé se soucie de votre vie privée Showroomprive.com utilise des cookies et technologies similaires afin d’analyser la navigation, mesurer l’audience du site et ses performances ainsi que pour vous proposer, avec nos partenaires, des publicités adaptées à vos centres d’intérêts. En cliquant sur « J’accepte », vous consentez au dépôt de ces cookies et notamment à ce que ces informations soient partagées avec nos partenaires. Vous pouvez choisir de cliquer sur « Je refuse » et dans ce cas, vous ne pourrez pas recevoir de contenu personnalisé et seuls les cookies nécessaires au fonctionnement du site seront utilisés. En cliquant sur « Je paramètre mes choix » vous pourrez paramétrer vos préférences et obtenir plus d’informations. Vous pourrez également modifier vos préférences à tout moment (à partir de l’onglet « Gérer mes cookies »). Pour en savoir plus sur la collecte des informations et la manière dont celle-ci sont utilisées rendez-vous ici. Je paramètre mes choix J'accepte Je refuse Je paramètre mes choix Nous conservons vos choix pendant 6 mois. Vous pouvez changer d’avis à tout moment en cliquant sur l’onglet « Gérer mes cookies ». Je refuse tout J'accepte tout Fonctionnement du site Il s'agit des cookies nécessaires au fonctionnement de notre site. Ils vous permettent d'utiliser les principales fonctionnalités de notre site (par exemple utilisation du panier d'achat ou l'accès à votre compte). Sans ces cookies, vous ne pourrez pas utiliser notre site normalement. Il s'agit de cookies déposés par Showroomprive.com qui ne concernent que le fonctionnement de notre site et qui ne requièrent pas l’accord préalable de l’internaute pour être déposés sur son terminal. En savoir plus Performance et analyse Il s’agit de cookies et traceurs permettant à Showroomprivé d’analyser la navigation, l’audience du site ainsi que ses performances. Ils permettent notamment à Showroomprivé d’améliorer l’intérêt, l’ergonomie et le fonctionnement du site. En savoir plus Publicité personnalisée Il s’agit de cookies et traceurs permettant à Showroomprivé et ses partenaires de vous proposer des publicités personnalisées adaptées à vos centres d’intérêts. Ils sont notamment utilisés pour limiter le nombre de fois où vous voyez une publicité et aider à mesurer l’efficacité d’une campagne publicitaire. En savoir plus Consulter la politique de confidentialité J'accepte