/* eslint-disable no-unused-vars */ const { protocol, host } = window.location; /** * Fonction permettant d'afficher un message dans un toastr * @param {String} message */ function showToastr(message, success = false) { const x = document.getElementById("toastr"); if (message) { x.getElementsByTagName("SPAN")[0].innerHTML = message; } x.className = `${x.className} show`.replace("sucess", ""); if (success) { x.className = `${x.className} success`; } setTimeout(() => { x.className = x.className.replace("show", ""); }, 3000); } /** * Fonction permettant de masquer le toastr */ function hideToastr() { const x = document.getElementById("toastr"); x.className = x.className.replace("show", ""); x.getElementsByTagName("SPAN")[0].innerHTML = ""; } /** * Fonction permettant de récupérer la valeur d'un cookie * @param {String} cname * @param {String} defaultValue * * @return {String} */ function getCookie(cname, defaultValue = "false") { const name = `${cname}=`; const decodedCookie = decodeURIComponent(document.cookie); const ca = decodedCookie.split(";"); for (let i = 0; i < ca.length; i += 1) { let c = ca[i]; while (c.charAt(0) === " ") { c = c.substring(1); } if (c.indexOf(name) === 0) { return c.substring(name.length, c.length); } } return defaultValue; } /** * Fonction permettant de créer un cookie * @param {String} cname * @param {String} cvalue * @param {Number} exdays */ function setCookie(cname, cvalue, exdays = 30) { const d = new Date(); d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000); const expires = `expires=${d.toUTCString()}`; document.cookie = `${cname}=${cvalue};${expires};path=/`; } /** * Fonction de (dé)charger le thème accessible * @param {String} value */ function setAriaTheme(value) { const { body } = document; if (value === "true") { const classesString = body.className || ""; if (classesString.indexOf("is-accessible") === -1) { body.classList.add("is-accessible"); } } else { body.classList.remove("is-accessible"); } } /** * Fonction de (dé)charger le thème accessible */ function switchAriaTheme() { const { body } = document; body.classList.toggle("is-accessible"); setCookie("ariatheme", body.classList.contains("is-accessible")); } /** * Fonction permettant de switcher de thème clair/sombre * @param {Object} e */ function switchTheme(e) { const theme = e.target.checked ? "dark" : "light"; document.documentElement.setAttribute("data-theme", theme); setCookie("theme", theme); } /** * Ensemble d'actions effectuées au chargement de la page */ document.addEventListener("DOMContentLoaded", () => { const $navbarBurgers = Array.prototype.slice.call( document.querySelectorAll(".navbar-burger"), 0 ); if ($navbarBurgers.length > 0) { $navbarBurgers.forEach((el) => { el.addEventListener("click", () => { const { target } = el.dataset; const $target = document.getElementById(target); el.classList.toggle("is-active"); $target.classList.toggle("is-active"); }); }); } const switchAriaThemeBtn = document.querySelector("#switchAriaTheme"); if (switchAriaThemeBtn) { switchAriaThemeBtn.addEventListener("click", switchAriaTheme); } setAriaTheme(getCookie("ariatheme")); const toggleSwitch = document.querySelector( '.theme-switch input[type="checkbox"]' ); if (toggleSwitch) { toggleSwitch.addEventListener("change", switchTheme, false); } let currentThemeIsDark = getCookie("theme"); if (currentThemeIsDark === "false" && window.matchMedia) { currentThemeIsDark = window.matchMedia("(prefers-color-scheme: dark)") .matches ? "dark" : "light"; } switchTheme({ target: { checked: currentThemeIsDark === "dark" } }); if (toggleSwitch) { toggleSwitch.checked = currentThemeIsDark === "dark"; } });