jQuery(function($) { function closeAllOffCanvas(exceptID = null) { let anyOpen = false; // Track if another Off-Canvas remains open $(".e-off-canvas").each(function() { let canvasID = $(this).attr("id"); if (!exceptID || canvasID !== exceptID) { $(this).removeClass("e-off-canvas-visible") .addClass("e-off-canvas-hidden") .attr("aria-hidden", "true") .css({ "z-index": "10", "visibility": "hidden", "opacity": "0" }); // Full removal delay set to 0ms setTimeout(() => { if ($(this).attr("aria-hidden") === "true") { $(this).css("display", "none"); } }, 0); } else { anyOpen = true; // At least one Off-Canvas is still open } }); } function openOffCanvas(targetID) { let targetCanvas = $(targetID); if (targetCanvas.length) { // Close all others EXCEPT the one we're opening closeAllOffCanvas(targetID); // Open immediately with delay set to 0ms setTimeout(() => { targetCanvas.removeClass("e-off-canvas-hidden") .addClass("e-off-canvas-visible") .attr("aria-hidden", "false") .css({ "z-index": "9999", "visibility": "visible", "opacity": "1", "display": "block" }); // Ensure the White Background Stays Visible $("body").addClass("off-canvas-active"); // Force repaint after opening forceRepaint(); }, 0); } } // Decode Base64 function decodeBase64(str) { try { return atob(str); } catch (e) { return null; } } // Handle Elementor Off-Canvas OPEN clicks $(document).on('click', '[href*="elementor-action%3Aaction%3Doff_canvas%3Aopen"]', function(event) { event.preventDefault(); let href = decodeURIComponent($(this).attr("href")); let base64Match = href.match(/settings=([^&]+)/); if (base64Match) { let decodedSettings = decodeBase64(base64Match[1]); try { let settingsObj = JSON.parse(decodedSettings); if (settingsObj.id) { let offCanvasID = "#off-canvas-" + settingsObj.id; openOffCanvas(offCanvasID); } } catch (e) {} } }); // Handle Elementor Off-Canvas CLOSE clicks $(document).on('click', '[href*="elementor-action%3Aaction%3Doff_canvas%3Aclose"]', function(event) { event.preventDefault(); closeAllOffCanvas(); }); // Ensure all Off-Canvas elements start hidden (ONLY if NOT in Elementor Editor) function initializeOffCanvasVisibility() { // Check if the body does NOT have the Elementor edit mode class if (!$('body').hasClass('elementor-element-edit-mode')) { $(".e-off-canvas").each(function() { $(this).attr("aria-hidden", "true").css({ "z-index": "10", "visibility": "hidden", "opacity": "0", "display": "none" }); }); } } // Call the initialization function $(window).on('load', initializeOffCanvasVisibility); // Utility function to force repaint function forceRepaint() { if ($('body').length) { $('body')[0].style.display = 'none'; $('body')[0].offsetHeight; $('body')[0].style.display = ''; } } });

Jouvoli @ ELEC EXPO 2025 : Se connecter sur l'efficacité énergétique

Le 26 novembre, notre équipe a eu le plaisir de participer à l'ELEC EXPO 2025 à Casablanca, où nous avons représenté notre plateforme numérique de gestion de l'énergie Jouvoli. L'événement a rassemblé des acteurs clés des secteurs électrique, industriel et énergétique, offrant de précieuses opportunités de se connecter avec les innovateurs qui conduisent la transition énergétique du Maroc. Tout au long de la journée, nous avons [&hellip ;]

FR