portal_publico/static/js/login-logo-blink.js

50 lines
2.2 KiB
JavaScript

/*
* Ícone "P.I.D." do card de login (`#login-logo-btn`). Fora de qualquer tema
* sazonal: clicar faz os olhos do disquete piscarem
* (`.pid-icon-eye`/`pidIconBlink` em base.css, mesmo mecanismo da logo da
* sidebar em sidebar-brand.js). Durante o Halloween
* (`pidIsHalloweenActive()`, seasonal-theme.js): o ícone vira o vampiro
* (`pidApplyVampireIcon`) e o clique dispara a animação de "susto"
* (`pidTriggerVampireScare`, `.is-scaring` em base.css) em vez da piscada.
* Durante o Aniversário (`pidIsAniversarioActive()`, só 15/10): o ícone
* ganha os balões (`pidApplyAniversarioIcon`) e o clique dispara o "clique
* de festa" (`pidTriggerAniversarioParty`, pula + joga confete + língua-de-
* sogra) ALÉM da piscada normal — a cara de repouso não muda nesse tema,
* então a piscada continua fazendo sentido (os dois efeitos convivem, ver
* base.css). Sem navegação nenhuma aqui — já estamos na tela de login, é só
* um toque de graça ao clicar no mascote.
*/
document.addEventListener("DOMContentLoaded", () => {
const btn = document.getElementById("login-logo-btn");
if (!btn) return;
const halloween = typeof pidIsHalloweenActive === "function" && pidIsHalloweenActive();
const aniversario = !halloween && typeof pidIsAniversarioActive === "function" && pidIsAniversarioActive();
if (halloween) {
pidApplyVampireIcon(btn.querySelector(".login-card__logo"));
if (typeof pidApplySeasonalFavicon === "function") pidApplySeasonalFavicon("pid-halloween-icone-escuro.svg");
if (typeof pidApplyHalloweenCobwebs === "function") pidApplyHalloweenCobwebs("pw-cobwebs-login");
} else if (aniversario) {
pidApplyAniversarioIcon(btn.querySelector(".login-card__logo"));
if (typeof pidApplySeasonalFavicon === "function") pidApplySeasonalFavicon("pid-aniversario-icone-escuro.svg");
}
btn.addEventListener("click", () => {
if (halloween) {
pidTriggerVampireScare(btn);
return;
}
if (aniversario) {
pidTriggerAniversarioParty(btn);
}
btn.querySelectorAll(".pid-icon-eye").forEach((eye) => {
eye.classList.remove("is-blinking");
void eye.getBoundingClientRect();
eye.classList.add("is-blinking");
});
});
});