COMMANDES • ADRESSES • INFORMATIONS
Tout retrouver au même endroit.
Consultez le suivi de vos commandes et mettez à jour vos coordonnées en quelques instants.
(() => {
if (window.bddAccountLiveNavigation) {
return;
}
window.bddAccountLiveNavigation = true;
document.documentElement.classList.add('bdd-account-live-ready');
document.documentElement.dataset.bddLivePageToken =
Date.now().toString(36) + Math.random().toString(36).slice(2);
let requestController = null;
const getAccountRoot = () => document.querySelector(
'body.page-id-14 .elementor-widget-shortcode .woocommerce'
);
const isAccountUrl = (href) => {
const url = new URL(href, window.location.href);
return url.origin === window.location.origin
&& url.searchParams.get('page_id') === '14'
&& !url.searchParams.has('customer-logout');
};
const loadAccountView = async (href, addHistory = true) => {
const root = getAccountRoot();
const currentContent = root?.querySelector('.woocommerce-MyAccount-content');
const currentNavigation = root?.querySelector('.woocommerce-MyAccount-navigation');
if (!root || !currentContent || !currentNavigation) {
window.location.assign(href);
return;
}
if (requestController) {
requestController.abort();
}
requestController = new AbortController();
root.classList.add('bdd-account-is-loading');
currentContent.setAttribute('aria-busy', 'true');
try {
const response = await fetch(href, {
credentials: 'same-origin',
headers: { 'X-Requested-With': 'XMLHttpRequest' },
signal: requestController.signal,
});
if (!response.ok) {
throw new Error('Account view unavailable');
}
const html = await response.text();
const nextDocument = new DOMParser().parseFromString(html, 'text/html');
const nextRoot = nextDocument.querySelector(
'body.page-id-14 .elementor-widget-shortcode .woocommerce'
);
const nextContent = nextRoot?.querySelector('.woocommerce-MyAccount-content');
const nextNavigation = nextRoot?.querySelector('.woocommerce-MyAccount-navigation');
if (!nextContent || !nextNavigation) {
throw new Error('Account view incomplete');
}
currentContent.replaceChildren(
...Array.from(nextContent.childNodes, (node) => document.importNode(node, true))
);
currentNavigation.innerHTML = nextNavigation.innerHTML;
currentContent.removeAttribute('aria-busy');
if (nextDocument.title) {
document.title = nextDocument.title;
}
if (addHistory && href !== window.location.href) {
window.history.pushState({ bddAccountView: true }, '', href);
}
if (window.jQuery) {
window.jQuery(document.body).trigger('updated_wc_div');
}
document.dispatchEvent(new CustomEvent('bdd:account-view-updated', {
detail: { url: href },
}));
} catch (error) {
if (error.name !== 'AbortError') {
window.location.assign(href);
}
} finally {
root.classList.remove('bdd-account-is-loading');
currentContent.removeAttribute('aria-busy');
}
};
document.addEventListener('click', (event) => {
const link = event.target.closest(
'body.page-id-14 .woocommerce-MyAccount-navigation a'
);
if (!link
|| link.closest('.woocommerce-MyAccount-navigation-link--customer-logout')
|| event.defaultPrevented
|| event.button !== 0
|| event.metaKey
|| event.ctrlKey
|| event.shiftKey
|| event.altKey
|| link.target
|| !isAccountUrl(link.href)) {
return;
}
event.preventDefault();
loadAccountView(link.href, true);
});
window.addEventListener('popstate', () => {
if (isAccountUrl(window.location.href)) {
loadAccountView(window.location.href, false);
}
});
})();