basic-business-template/assets/js/components/cookies-consent.js

77 lines
3.0 KiB
JavaScript

document.addEventListener('DOMContentLoaded', function () {
const modalCookieSettingsElement = document.querySelector('#modal-cookie-settings');
let cookieSettings = document.getElementById("cookie-settings");
if (document.cookie.indexOf('cookies-consent') === -1) {
cookieSettings.style.bottom = '0%';
setTimeout(() => { cookieSettings.style.bottom = '0%'; }, 0);
}
document.querySelectorAll('.btn-cookies-consent').forEach(button => {
button.addEventListener('click', function (event) {
event.preventDefault();
let cookiesLevel = this.getAttribute('data-cookies');
if (cookiesLevel !== null) {
document.cookie = `cookies-consent=${cookiesLevel};max-age=${365 * 24 * 60 * 60}`;
} else {
cookiesLevel = "";
const checkFunctionalCookies = document.getElementById('functional-cookies');
const checkAnalyticsCookies = document.getElementById('analytics-cookies');
const checkProfileCookies = document.getElementById('profile-cookies');
if (checkFunctionalCookies.checked) cookiesLevel += "1";
else cookiesLevel += "0";
if (checkAnalyticsCookies.checked) cookiesLevel += "1";
else cookiesLevel += "0";
if (checkProfileCookies.checked) cookiesLevel += "1";
else cookiesLevel += "0";
document.cookie = `cookies-consent=${cookiesLevel};max-age=${365 * 24 * 60 * 60}`;
}
const modal = bootstrap.Modal.getInstance(modalCookieSettingsElement);
if (modal) modal.hide();
if (cookieSettings) setTimeout(() => {
cookieSettings.style.transition = "bottom 1s";
cookieSettings.style.bottom = '-100%';
}, 1000);
});
});
modalCookieSettingsElement.addEventListener('shown.bs.modal', event => {
const checkFunctionalCookies = document.getElementById('functional-cookies');
const checkAnalyticsCookies = document.getElementById('analytics-cookies');
const checkProfileCookies = document.getElementById('profile-cookies');
let cookiesConsent = getCookie('cookies-consent');
if (cookiesConsent[0] == 1) checkFunctionalCookies.checked = true;
else checkFunctionalCookies.checked = false;
if (cookiesConsent[1] == 1) checkAnalyticsCookies.checked = true;
else checkAnalyticsCookies.checked = false;
if (cookiesConsent[2] == 1) checkProfileCookies.checked = true;
else checkProfileCookies.checked = false;
});
});
function getCookie(cookieName) {
const cookies = document.cookie;
const cookiesArray = cookies.split('; ');
for (let i = 0; i < cookiesArray.length; i++) {
const cookie = cookiesArray[i];
const [cookieKey, cookieValue] = cookie.split('=');
if (cookieKey.trim() === cookieName) return decodeURIComponent(cookieValue);
}
return null;
}