portal_publico/static/js/portal-reveal.js

36 lines
1.5 KiB
JavaScript

/*
* Revelação de entrada em portal.html após a animação de intro do login
* (ver login-intro.js/CLAUDE.md "Animação de intro do login"). Só dispara
* quando index.html marcou sessionStorage antes de navegar — acesso direto/
* recarregamento normal da página não passa por isso. A checagem roda como
* IIFE de topo (mesmo padrão de theme.js/applyStoredTheme) pra aplicar as
* classes antes da primeira pintura, evitando um flash do conteúdo já
* visível antes de escondê-lo.
*
* Duas classes, removidas em sequência (não juntas): primeiro
* `pid-entering-sidebar` sai (a sidebar desliza/aparece), só depois
* `pid-entering` sai (o resto do app aparece num fade) — pedido explícito
* do usuário pra ficar mais fluido, em vez das duas coisas surgirem juntas.
*/
(function pidRevealSetup() {
if (sessionStorage.getItem("pid_reveal_portal") !== "1") return;
sessionStorage.removeItem("pid_reveal_portal");
document.documentElement.classList.add("pid-entering", "pid-entering-sidebar");
})();
document.addEventListener("DOMContentLoaded", () => {
const html = document.documentElement;
if (!html.classList.contains("pid-entering")) return;
requestAnimationFrame(() => {
setTimeout(() => {
html.classList.remove("pid-entering-sidebar");
// Espera o slide da sidebar terminar (mesma duração de .sidebar em
// layout.css, 420ms) antes de revelar o resto — as duas entradas não
// devem se sobrepor.
setTimeout(() => {
html.classList.remove("pid-entering");
}, 420);
}, 120);
});
});