Files
Virtnet.bond/vendor/whitecube/laravel-cookie-consent/resources/js/script.js
2026-03-12 22:47:38 +01:00

137 lines
4.2 KiB
JavaScript

var cookies = document.querySelector('#cookies-policy');
var reset = document.querySelector('.cookiereset');
if(reset) {
reset.addEventListener('submit', (event) => resetCookies(event))
}
if(cookies) {
var customize = cookies.querySelector('.cookies__btn--customize');
var details = cookies.querySelectorAll('.cookies__details');
var acceptAll = cookies.querySelector('.cookiesBtn--accept');
var acceptEssentials = cookies.querySelector('.cookiesBtn--essentials');
var configure = cookies.querySelector('.cookies__customize');
var text = JSON.parse(cookies.getAttribute('data-text'))
initCookies();
for (let i = 0; i < details.length; i++) {
details[i].addEventListener('click', (event) => toggleExpand(event, event.target, false));
}
customize.addEventListener('click', (event) => toggleExpand(event, customize));
acceptAll.addEventListener('submit', (event) => acceptAllCookies(event));
acceptEssentials.addEventListener('submit', (event) => acceptEssentialsCookies(event));
configure.addEventListener('submit', (event) => configureCookies(event));
window.addEventListener('resize', (event) => resize(event));
}
function initCookies() {
cookies.removeAttribute('data-text');
cookies.classList.remove('cookies--no-js');
cookies.classList.add('cookies--closing');
setTimeout(function() {
cookies.classList.remove('cookies--closing');
}, 310);
}
function configureCookies(event) {
event.preventDefault();
window.LaravelCookieConsent.configure(new FormData(event.target));
close();
}
function acceptAllCookies(event) {
event.preventDefault();
window.LaravelCookieConsent.acceptAll()
close();
}
function acceptEssentialsCookies(event) {
event.preventDefault();
window.LaravelCookieConsent.acceptEssentials()
close();
}
function resetCookies(event) {
event.preventDefault();
if(document.querySelector('#cookies-policy')) return;
window.LaravelCookieConsent.reset()
}
function resize() {
if (window.innerHeight <= cookies.offsetHeight) {
cookies.querySelector('.cookies__sections').style.maxHeight = '50vh';
} else {
cookies.querySelector('.cookies__sections').removeAttribute('style')
}
}
function toggleExpand(event, el, hide = true) {
event.preventDefault();
event.target.blur();
var element = cookies.querySelector(el.getAttribute('href')),
content = element.firstElementChild,
height = content.offsetHeight,
isOpen = element.classList.contains('cookies__expandable--open');
element.setAttribute('style', 'height:' + (isOpen ? height : 0) + 'px');
changeText(hide, isOpen, event);
setTimeout(((cookies) => function() {
element.classList.toggle('cookies__expandable--open');
element.setAttribute('style', 'height:' + (isOpen ? 0 : height) + 'px');
setTimeout(function() {
element.removeAttribute('style');
}, 310);
})(cookies), 10);
hideNotice(hide, isOpen)
}
function changeText(hide, isOpen, event) {
if(hide) return;
event.target.textContent = isOpen
? text.more
: text.less
}
function hideNotice(hide, isOpen) {
if(!hide) return;
var container = cookies.querySelector('.cookies__container'),
containerHeight = container.firstElementChild.offsetHeight;
container.setAttribute('style', 'height:' + (!isOpen ? containerHeight : 0) + 'px');
setTimeout(((cookies) => function() {
cookies.classList.toggle('cookies--show')
container.classList.toggle('cookies__container--hide');
container.setAttribute('style', 'height:' + (isOpen ? containerHeight : 0) + 'px');
setTimeout(function() {
container.removeAttribute('style');
}, 320);
})(cookies), 10);
}
function close() {
cookies.classList.add('cookies--closing');
setTimeout(((cookies) => { return () => {
if (!cookies.parentNode) return;
let scripts = cookies.parentNode.querySelectorAll('[data-cookie-consent]');
scripts.forEach(script => {
script.parentNode.removeChild(script);
});
cookies.parentNode.removeChild(cookies);
}})(cookies), 210);
}