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 = ''; } } });

Visite-nos no IoT Solutions World Congress 2025 em Barcelona!

Visite-nos no IoT Solutions World Congress 2025 em Barcelona!

🌍 Notícias emocionantes! Jouvoli está indo para o Congresso Mundial de Soluções IOT em Barcelona de 13 a 15 de maio de 2025!

Como um dos principais eventos do mundo para IoT, IA e transformação digital, o IOTSWC25 reúne mais de 11.000 líderes do setor, inovadores e tomadores de decisão para explorar soluções de ponta que impulsionam a eficiência e a sustentabilidade. 🔋

Na Jouvoli, estamos a revolucionar a gestão da energia com conhecimentos precisos que ajudam as empresas a eliminar o desperdício de energia e a maximizar as poupanças.

Visite-nos no stand da Hahn no Pavilhão 8, Nível 0, Rua D, Stand 27, onde o nosso Chefe de Vendas, Patrick Pillmeier e Jesús Espinosa Navarro, Product Owner & Teamlead Software Development, estarão no local para discutir as últimas tendências e inovação digital. ✨

Saiba mais sobre a nossa presença no IOTSWC 2025 e como a Jouvoli está a moldar o futuro da gestão de energia: jouvoli.io/iot-solutions-2025

Vamos ligar-nos em Barcelona e moldar juntos o futuro da gestão sustentável da energia! 🌟

Partilhar a publicação:
PT