3 changed files with 67 additions and 3 deletions
@ -0,0 +1,57 @@
|
||||
const cookieBannerEl = document.querySelector('.js-cookie-banner') |
||||
|
||||
if (cookieBannerEl) { |
||||
const cookieFormEl = document.querySelector('.js-cookie-form') |
||||
|
||||
cookieFormEl.addEventListener('click', (e) => { |
||||
if (e.target.tagName !== 'BUTTON') { |
||||
return |
||||
} |
||||
|
||||
const body = new FormData(cookieFormEl) |
||||
body.append('cookies_form[accept_analytics_cookies]', e.target.value) |
||||
|
||||
fetch(cookieFormEl.action, { |
||||
method: 'PUT', |
||||
headers: { |
||||
Accept: 'application/json', |
||||
}, |
||||
body, |
||||
}) |
||||
.then((res) => { |
||||
if (res.status >= 200 && res.status < 300) { |
||||
return res |
||||
} |
||||
|
||||
throw new Error(res) |
||||
}) |
||||
.then((res) => res.json()) |
||||
.then(({ message }) => { |
||||
const messageEl = cookieBannerEl.querySelector('.js-cookie-message') |
||||
messageEl.textContent = message |
||||
|
||||
cookieBannerEl |
||||
.querySelector('.js-cookie-banner__form') |
||||
.setAttribute('hidden', '') |
||||
cookieBannerEl |
||||
.querySelector('.js-cookie-banner__success') |
||||
.removeAttribute('hidden') |
||||
}) |
||||
|
||||
const gaSrc = window.analyticsScript |
||||
if (e.target.value === 'on' && gaSrc) { |
||||
const scriptEl = document.createElement('script') |
||||
scriptEl.src = gaSrc |
||||
document.body.appendChild(scriptEl) |
||||
} |
||||
|
||||
e.preventDefault() |
||||
}) |
||||
|
||||
const hideBannerEl = document.querySelector('.js-hide-cookie-banner') |
||||
hideBannerEl.addEventListener('click', (e) => { |
||||
e.preventDefault() |
||||
|
||||
cookieBannerEl.setAttribute('hidden', '') |
||||
}) |
||||
} |
||||
Loading…
Reference in new issue