Mudanças entre as edições de "Widget:Conquistas"

De Wiki Gla
Ir para navegação Ir para pesquisar
m
m
 
Linha 302: Linha 302:


         /* ─── Filtros ────────────────────────────────────────────────────────── */
         /* ─── Filtros ────────────────────────────────────────────────────────── */
         /* margin-left:auto empurra o grupo pra direita do controls, deixando
         /* Encostados na search via gap natural do .gla-conquistas-controls. */
          a search à esquerda e os filtros encostados na borda direita. */
         .gla-conquistas-filters {
         .gla-conquistas-filters {
             display: flex;
             display: flex;
             gap: 6px;
             gap: 6px;
             flex-wrap: wrap;
             flex-wrap: wrap;
            margin-left: auto;
         }
         }


Linha 1 279: Linha 1 277:
             });
             });


             // Reveal — click no card hidden remove a censura (anti-spoiler).
             // ─── Reveal + persistência ────────────────────────────────────────
             // Só ativa se data-reveal-mode no root estiver definido como
            // Click no card hidden remove a censura (anti-spoiler) e o estado
             // blur/redacted/placeholder/veil. Ignora clicks em interativos
            // é salvo no localStorage. Próxima visita à página, conquistas que
             // dentro do card (botão de spoiler, ícones de reward com tooltip,
            // o jogador já revelou voltam reveladas — não precisa clicar de novo.
            // links na descrição, chip "+N" de overflow).
            //
            // Chave: "glaConquistasRevealed" → JSON com array de data-id.
            // Robusto a localStorage indisponível (modo privado, cookies
            // bloqueados) — só falha silenciosamente.
            var REVEAL_STORAGE_KEY = "glaConquistasRevealed";
 
            function loadRevealed() {
                try {
                    var raw = window.localStorage.getItem(REVEAL_STORAGE_KEY);
                    if (!raw) return {};
                    var arr = JSON.parse(raw);
                    if (!Array.isArray(arr)) return {};
                    var set = {};
                    for (var i = 0; i < arr.length; i++) {
                        if (arr[i] != null) set[String(arr[i])] = true;
                    }
                    return set;
                } catch (e) {
                    return {};
                }
            }
 
            function saveRevealed(set) {
                try {
                    var arr = Object.keys(set);
                    window.localStorage.setItem(REVEAL_STORAGE_KEY, JSON.stringify(arr));
                } catch (e) { /* localStorage indisponível — ok */ }
            }
 
            var revealedSet = loadRevealed();
 
            // Re-aplica .is-revealed nos cards que já tavam revelados em
             // sessões anteriores. Roda agora (depois do JS já ter movido os
            // cards do source pros painéis).
            root.querySelectorAll('.gla-item[data-hidden="true"][data-id]').forEach(function (card) {
                if (revealedSet[card.getAttribute("data-id")]) {
                    card.classList.add("is-revealed");
                }
            });
 
            // Click — revela e persiste. Só ativa se data-reveal-mode no root
             // estiver definido como blur/redacted/placeholder/veil. Ignora
             // clicks em interativos dentro do card (botão de spoiler, ícones
            // de reward com tooltip, links na descrição, chip "+N" de overflow).
             root.addEventListener("click", function (e) {
             root.addEventListener("click", function (e) {
                 var mode = root.getAttribute("data-reveal-mode") || "none";
                 var mode = root.getAttribute("data-reveal-mode") || "none";
Linha 1 292: Linha 1 333:
                 if (e.target.closest(".gla-item-spoiler-toggle, .item-wrapper, a, .reward-more-chip, .reward-overflow-popover")) return;
                 if (e.target.closest(".gla-item-spoiler-toggle, .item-wrapper, a, .reward-more-chip, .reward-overflow-popover")) return;
                 card.classList.add("is-revealed");
                 card.classList.add("is-revealed");
                var id = card.getAttribute("data-id");
                if (id) {
                    revealedSet[id] = true;
                    saveRevealed(revealedSet);
                }
             });
             });



Edição atual tal como às 21h42min de 20 de maio de 2026