File: D:/HostingSpaces/SBogers10/carrot.komma.pro/resources/js/site/cookieHandler.js
/* ==========================================================================
Cookie handler
- Primary usage for toggling the cookie message and/or switch
========================================================================== */
const CookieHandler = {
cookieBar : null,
cookieOverlay : null,
cookieMessage : null,
cookieSwitch : null,
cookieFadeOutAnimationDuration : 400,
acceptTracking : false,
// Initialize cookie handler
init : function()
{
// Bind cookie bar or overlay to cookieMessage
CookieHandler.cookieMessage = document.querySelector('.js-cookie-bar, .js-cookie-overlay');
// Bind cookie bar to cookieBar
CookieHandler.cookieBar = document.querySelector('.js-cookie-bar');
// If isset init the functions for cookie bar
if(isset(CookieHandler.cookieBar)){
CookieHandler.initCookieBar();
}
else{
// Else try to connect cookie overlay with tracking to cookieOverlay
CookieHandler.cookieOverlay = document.querySelector('.js-cookie-overlay');
// If isset init the functions for cookie overlay
if(isset(CookieHandler.cookieOverlay)){
CookieHandler.initCookieOverlay();
}
}
// If either type of cookie has been found check if settings are defined
if(isset(CookieHandler.cookieMessage)){
CookieHandler.checkForCookieSettings();
}
// Bind cookie switch to Handler
CookieHandler.cookieSwitch = document.querySelector('.js-cookie-switch');
// If isset init the functions for cookie switch
if(isset(CookieHandler.cookieSwitch)){
CookieHandler.initCookieSwitch();
}
},
// Init the cookie bar actions
initCookieBar: function(){
const closeButton = CookieHandler.cookieBar.querySelector('.js-disable-cookie-bar');
if(isset(closeButton)){
closeButton.addEventListener('click', CookieHandler.closeCookieMessage);
}
},
// Init the cookie overlay actions
initCookieOverlay: function(){
// Open the cookie settings event
const openCookieSettingsButton = CookieHandler.cookieMessage.querySelector('.js-change-cookies-settings');
if(isset(openCookieSettingsButton)){
openCookieSettingsButton.addEventListener('click', CookieHandler.openCookieSettings);
}
// Toggle of the tracking input
const toggleTrackingInput = CookieHandler.cookieMessage.querySelector('.c-cookie-type__input--tracking');
if(isset(toggleTrackingInput)){
if(toggleTrackingInput.checked === true) {
CookieHandler.acceptTracking = true;
}
toggleTrackingInput.addEventListener('change', CookieHandler.toggleTrackingSetting);
}
// Accept / Save cookies button event
const acceptButton = CookieHandler.cookieMessage.querySelector('.js-accept-cookies');
if(isset(acceptButton)){
acceptButton.addEventListener('click', CookieHandler.setCookieSettings);
}
},
// Init the cookie switch actions
initCookieSwitch: function(){
// Toggle of the tracking input
const toggleTrackingInput = CookieHandler.cookieSwitch.querySelector('.c-cookie-type__input--tracking');
if(isset(toggleTrackingInput)){
// Force the state of the cookie switch input because the pop-up is forced on checked
// while the switch checks by php if the cookie really exist or not
if(toggleTrackingInput.checked === true) {
CookieHandler.acceptTracking = true;
}
else{
CookieHandler.acceptTracking = false;
}
toggleTrackingInput.addEventListener('change', CookieHandler.toggleTrackingSetting);
}
// Save cookies button event
const saveButton = CookieHandler.cookieSwitch.querySelector('.js-save-cookie-settings');
if(isset(saveButton)){
saveButton.addEventListener('click', function(){
CookieHandler.cookieFadeOutAnimationDuration = 0; // On the switch click we want no delay :)
CookieHandler.setCookieSettings();
});
}
},
checkForCookieSettings: function(){
if (Cookie.get('cookieMessage')) {
CookieHandler.cookieMessage.classList.add('is-accepted');
document.body.classList.add('is-cookies-accepted');
}
else {
CookieHandler.cookieMessage.classList.remove('is-accepted');
document.body.classList.remove('is-cookies-accepted');
}
},
closeCookieMessage: function (){
Cookie.set('cookieMessage', true, 90);
CookieHandler.cookieMessage.classList.add('is-transitioning-out');
document.body.classList.add('is-cookies-accepted');
},
openCookieSettings: function (){
CookieHandler.cookieOverlay.querySelector('.js-cookie-settings').classList.remove('is-hidden');
CookieHandler.cookieOverlay.querySelector('.js-cookie-info').classList.add('is-hidden');
},
toggleTrackingSetting: function(){
if(CookieHandler.acceptTracking){
CookieHandler.acceptTracking = false;
}
else{
CookieHandler.acceptTracking = true;
}
},
setCookieSettings: function () {
// Set tracking cookie or delete it if isset according to the desired settings
if(CookieHandler.acceptTracking){
Cookie.set('trackingCookieAccepted', 'true', 90);
}
else{
if(Cookie.get('trackingCookieAccepted')){
Cookie.erase('trackingCookieAccepted');
}
}
CookieHandler.closeCookieMessage();
// Reload after animation to automatically trigger the tracking after accepting it
setTimeout(function(){
location.reload()
}, CookieHandler.cookieFadeOutAnimationDuration);
},
};
CookieHandler.init();