window.onReady = window.onReady || []; window.onReady.push(function () { const container = document.querySelector( "header > .container.hidden-sm-down" ); if (!container) return; /* ===================================================== ELEMENTOS ORIGINAIS ===================================================== */ const logo = container.querySelector(".logo"); const busca = container.querySelector(".searchContainer"); const user = container.querySelector(".userInfo"); const cart = container.querySelector(".cartInfo"); const menu = document.querySelector(".menuBar"); if (!logo || !busca || !user || !cart || !menu) return; /* ===================================================== CRIA ÁREA DA DIREITA ===================================================== */ let right = container.querySelector(".header-right"); if (!right) { right = document.createElement("div"); right.className = "header-right"; /* * Move os elementos existentes para dentro * da nova área. */ right.appendChild(user); right.appendChild(cart); container.appendChild(right); } /* ===================================================== LOGO CENTRALIZADA ===================================================== */ logo.style.position = "absolute"; logo.style.left = "50%"; logo.style.top = "50%"; logo.style.transform = "translate(-50%, -50%)"; /* ===================================================== AJUSTE DO HEADER ===================================================== */ function ajustarHeader() { const larguraLogo = logo.offsetWidth; const larguraDireita = right.offsetWidth; const larguraContainer = container.offsetWidth; /* * Mantém o logo exatamente no centro. */ logo.style.left = "50%"; logo.style.top = "50%"; logo.style.transform = "translate(-50%, -50%)"; /* * Espaço necessário para o menu. */ menu.style.paddingLeft = (larguraLogo / 2 + 40) + "px"; menu.style.paddingRight = (larguraLogo / 2 + 40) + "px"; /* * Garante que a área direita não * encoste no logo. */ right.style.maxWidth = "calc(50% - " + (larguraLogo / 2 + 40) + "px)"; } /* ===================================================== BUSCA ===================================================== */ const input = busca.querySelector("#buscaGlobal"); if (input) { input.placeholder = "Encontre o móvel ideal para seu lar"; } /* ===================================================== ÍCONE DE FAVORITOS ===================================================== */ let favorite = right.querySelector(".header-favorite"); if (!favorite) { favorite = document.createElement("a"); favorite.className = "header-favorite"; favorite.href = "https://www.vistato.com.br/minha-conta/lista-produtos"; favorite.innerHTML = ` `; right.insertBefore( favorite, cart ); } /* ===================================================== ÍCONE DE USUÁRIO (usa o link já existente em .userInfo) ===================================================== */ if (!right.querySelector(".header-user")) { const userIcon = document.createElement("a"); userIcon.className = "header-user"; userIcon.innerHTML = ` `; function atualizarLinkUsuario() { const link = user.querySelector("a"); userIcon.href = link ? link.getAttribute("href") : "https://www.vistato.com.br/login"; } atualizarLinkUsuario(); // Quando a sessão carregar (visitante -> logado), o link do // .userInfo muda de /login para /minha-conta. Este observer // mantém o ícone sempre apontando pro link certo. const userObserver = new MutationObserver(atualizarLinkUsuario); userObserver.observe(user, { childList: true, subtree: true }); right.insertBefore(userIcon, favorite); // Esconde o texto original visualmente, mas mantém no DOM: // o script de sessão (Panorama.get) continua escrevendo nele. user.style.display = "none"; } /* ===================================================== CONTADOR DO CARRINHO ===================================================== */ const cartCount = cart.querySelector(".countItens"); if (cartCount) { function atualizarContador() { const valor = cartCount.textContent.trim(); if ( valor === "00" || valor === "0" || valor === "" ) { cartCount.style.display = "none"; } else { cartCount.style.display = "flex"; } } atualizarContador(); const observer = new MutationObserver( atualizarContador ); observer.observe( cartCount, { childList: true, characterData: true, subtree: true } ); } /* ===================================================== INICIALIZA ===================================================== */ ajustarHeader(); /* ===================================================== RESPONSIVO ===================================================== */ let resizeTimer; window.addEventListener( "resize", function () { clearTimeout(resizeTimer); resizeTimer = setTimeout( ajustarHeader, 100 ); } ); });