pages/assets/js/scripts.js
2024-01-30 20:31:47 +01:00

117 lines
No EOL
3.1 KiB
JavaScript
Executable file

// Off canvas menu
let container = document.querySelector('.js-container')
let toggleButton = document.querySelector('.js-menu-toggle')
toggleButton.addEventListener('click', (e) => {
e.preventDefault();
container.classList.toggle('is-menu');
document.body.classList.toggle("no-scroll");
toggleButton.classList.toggle('is-active');
if (toggleButton.getAttribute("aria-expanded") == "false") {
toggleButton.setAttribute("aria-expanded", "true");
} else {
toggleButton.setAttribute("aria-expanded", "false");
}
});
// Share buttons pop-up
(function () {
// share popup
let shareButton = document.querySelector('.js-post__share-button');
let sharePopup = document.querySelector('.js-post__share-popup');
if (shareButton) {
sharePopup.addEventListener('click', function (e) {
e.stopPropagation();
});
shareButton.addEventListener('click', function (e) {
e.preventDefault();
e.stopPropagation();
sharePopup.classList.toggle('is-visible');
});
document.body.addEventListener('click', function () {
sharePopup.classList.remove('is-visible');
});
}
// link selector and pop-up window size
var Config = {
Link: ".js-share",
Width: 500,
Height: 500
};
// add handler links
var slink = document.querySelectorAll(Config.Link);
for (var a = 0; a < slink.length; a++) {
slink[a].onclick = PopupHandler;
}
// create popup
function PopupHandler(e) {
e = (e ? e : window.event);
var t = (e.target ? e.target : e.srcElement);
// hide share popup
if (sharePopup) {
sharePopup.classList.remove('is-visible');
}
// popup position
var px = Math.floor(((screen.availWidth || 1024) - Config.Width) / 2),
py = Math.floor(((screen.availHeight || 700) - Config.Height) / 2);
// open popup
var link_href = t.href ? t.href : t.parentNode.href;
var popup = window.open(link_href, "social",
"width=" + Config.Width + ",height=" + Config.Height +
",left=" + px + ",top=" + py +
",location=0,menubar=0,toolbar=0,status=0,scrollbars=1,resizable=1");
if (popup) {
popup.focus();
if (e.preventDefault) e.preventDefault();
e.returnValue = false;
}
return !!popup;
}
})();
// Responsive embeds script
(function () {
let wrappers = document.querySelectorAll('.post__video, .post__iframe');
for (let i = 0; i < wrappers.length; i++) {
let embed = wrappers[i].querySelector('iframe, embed, video, object');
if (!embed) {
continue;
}
if (embed.getAttribute('data-responsive') === 'false') {
continue;
}
let w = embed.getAttribute('width');
let h = embed.getAttribute('height');
let ratio = false;
if (!w || !h) {
continue;
}
if (w.indexOf('%') > -1 && h.indexOf('%') > -1) { // percentage mode
w = parseFloat(w.replace('%', ''));
h = parseFloat(h.replace('%', ''));
ratio = h / w;
} else if (w.indexOf('%') === -1 && h.indexOf('%') === -1) { // pixels mode
w = parseInt(w, 10);
h = parseInt(h, 10);
ratio = h / w;
}
if (ratio !== false) {
let ratioValue = (ratio * 100) + '%';
wrappers[i].setAttribute('style', '--embed-aspect-ratio:' + ratioValue);
}
}
})();