julienmonnerie/public/assets/js/app.js

85 lines
2.4 KiB
JavaScript
Raw Normal View History

2022-06-17 17:51:59 +02:00
// ----------------------------------------------------------------------------
// DATA
// ----------------------------------------------------------------------------
2022-07-22 17:53:26 +02:00
// SIDEBAR ANIMATION
const sidebar = document.querySelector('.sidebar');
2022-07-28 18:59:14 +02:00
const sidebarNavLinks = document.querySelectorAll('.sidebar__nav-link--internal');
const logoIcon = document.querySelector('.logo__icon');
const exhibitionIframe = document.querySelector('.exhibition');
2022-07-22 17:53:26 +02:00
2022-06-17 17:51:59 +02:00
// ----------------------------------------------------------------------------
2022-07-28 18:59:14 +02:00
// LOGIC
2022-06-17 17:51:59 +02:00
// ----------------------------------------------------------------------------
2022-07-28 18:59:14 +02:00
// UTILS
// Enable CSS :active pseudo-class in Safari Mobile
function enableActivePseudoClass() {
document.addEventListener("touchstart", function() {},false);
}
2022-06-17 17:51:59 +02:00
// Convert rem to pixels by getting font-size CSS property
function convertRemToPixels(rem) {
let fontSize = parseFloat(window.getComputedStyle(document.body).getPropertyValue('font-size'));
return rem * fontSize;
2022-06-17 17:51:59 +02:00
}
2022-07-22 17:53:26 +02:00
// SIDEBAR ANIMATION
function slimDownSidebar() {
2022-07-28 18:59:14 +02:00
if (sidebar && !sidebar.classList.contains('sidebar--slimmed')) {
2022-07-22 17:53:26 +02:00
sidebar.classList.add('sidebar--slimmed');
}
}
2022-07-28 18:59:14 +02:00
function enableLogoIconRotation() {
if (logoIcon) {
if (logoIcon.classList.contains('logo__icon--vertical')) {
logoIcon.classList.add('logo__icon--rotate-vertical-left');
} else {
logoIcon.classList.add('logo__icon--rotate-horizontal-bottom');
}
}
}
function disableLogoIconRotation() {
if (logoIcon) {
if (logoIcon.classList.contains('logo__icon--vertical')) {
logoIcon.classList.remove('logo__icon--rotate-vertical-left');
} else {
logoIcon.classList.remove('logo__icon--rotate-horizontal-bottom');
}
}
}
function loadExhibitionIframe() {
if (sidebarNavLinks.length > 0 && exhibitionIframe) {
2022-07-22 17:53:26 +02:00
for (let i = 0; i < sidebarNavLinks.length; i++) {
2022-07-28 18:59:14 +02:00
sidebarNavLinks[i].addEventListener('click', function(e) {
enableLogoIconRotation();
exhibitionIframe.classList.remove('exhibition--visible');
exhibitionIframe.addEventListener('load', function(e) {
slimDownSidebar();
disableLogoIconRotation();
exhibitionIframe.classList.add('exhibition--visible');
});
});
2022-07-22 17:53:26 +02:00
}
}
}
2022-06-17 17:51:59 +02:00
// ----------------------------------------------------------------------------
// PROGRAM
// ----------------------------------------------------------------------------
2022-07-28 18:59:14 +02:00
// UTILS
enableActivePseudoClass();
2022-07-22 17:53:26 +02:00
// SIDEBAR ANIMATION
2022-07-28 18:59:14 +02:00
loadExhibitionIframe();