Mudanças entre as edições de "Widget:Conquistas"
Ir para navegação
Ir para pesquisar
m |
m |
||
| Linha 33: | Linha 33: | ||
<span class="gla-conquistas-tab" data-tab="celular">Celular</span> | <span class="gla-conquistas-tab" data-tab="celular">Celular</span> | ||
<span class="gla-conquistas-tab" data-tab="bossrush">Boss Rush</span> | <span class="gla-conquistas-tab" data-tab="bossrush">Boss Rush</span> | ||
</div> | |||
<div class="gla-conquistas-controls"> | |||
<input type="text" class="gla-conquistas-search" placeholder="Buscar conquista..."> | |||
<div class="gla-conquistas-filters" id="gla-filter-default"> | |||
<span class="gla-conquistas-filter is-active" data-filter="all">Todas</span> | |||
<span class="gla-conquistas-filter" data-filter="normal">Normal</span> | |||
<span class="gla-conquistas-filter" data-filter="hidden">Oculta</span> | |||
</div> | |||
<div class="gla-conquistas-filters" id="gla-filter-coliseu" style="display:none"> | |||
<span class="gla-conquistas-filter is-active" data-filter="all">Todas</span> | |||
<span class="gla-conquistas-filter" data-filter="onemany">One Man Army</span> | |||
<span class="gla-conquistas-filter" data-filter="corrida">Corrida Colosseum</span> | |||
</div> | |||
</div> | </div> | ||
</div> | </div> | ||
| Linha 159: | Linha 173: | ||
} | } | ||
/* ITEM */ | /* ITEM — normal = acento azul */ | ||
.gla-item { | .gla-item { | ||
display: flex; | |||
flex-direction: column; | |||
border-radius: 12px; | |||
border: 2px solid #93c5fd; | |||
background: #f0f7ff; | |||
} | |||
.gla-item-main { | |||
display: flex; | display: flex; | ||
align-items: center; | align-items: center; | ||
| Linha 166: | Linha 188: | ||
gap: 16px; | gap: 16px; | ||
padding: 12px 14px; | padding: 12px 14px; | ||
border-radius: | min-height: 72px; | ||
border: 1px solid # | } | ||
/* SPOILER */ | |||
.gla-item-spoiler { | |||
display: none; | |||
border-top: 1px solid #bfdbfe; | |||
padding: 14px 16px; | |||
gap: 16px; | |||
flex-direction: row; | |||
align-items: flex-start; | |||
} | |||
.gla-item.is-open .gla-item-spoiler { | |||
display: flex; | |||
} | |||
.gla-item.is-hidden .gla-item-spoiler, | |||
.gla-item[data-hidden="true"] .gla-item-spoiler { | |||
border-top-color: #e2e8f0; | |||
} | |||
.gla-item-spoiler-info { | |||
flex: 1; | |||
font-size: 13px; | |||
color: #475569; | |||
line-height: 1.6; | |||
min-width: 0; | |||
} | |||
.gla-item-spoiler-media { | |||
flex-shrink: 0; | |||
max-width: 400px; | |||
} | |||
.gla-item-spoiler-media img, | |||
.gla-item-spoiler-media video { | |||
max-width: 100%; | |||
border-radius: 8px; | |||
border: none !important; | |||
} | |||
/* Chevron indicador de expansão */ | |||
.gla-item-chevron { | |||
font-size: 20px; | |||
color: #93c5fd; | |||
line-height: 1; | |||
flex-shrink: 0; | |||
display: inline-block; | |||
transition: transform .2s; | |||
user-select: none; | |||
} | |||
.gla-item.is-hidden .gla-item-chevron, | |||
.gla-item[data-hidden="true"] .gla-item-chevron { | |||
color: #cbd5e1; | |||
} | |||
.gla-item.has-spoiler { | |||
cursor: pointer; | |||
} | |||
.gla-item.has-spoiler.is-open .gla-item-chevron { | |||
transform: rotate(90deg); | |||
} | |||
/* CONTROLES — busca + filtros */ | |||
.gla-conquistas-controls { | |||
display: flex; | |||
align-items: center; | |||
gap: 10px; | |||
flex-wrap: wrap; | |||
margin-top: 14px; | |||
} | |||
.gla-conquistas-search { | |||
flex: 1; | |||
min-width: 180px; | |||
padding: 7px 14px; | |||
border: 1px solid #cbd5e1; | |||
border-radius: 999px; | |||
font-size: 13px; | |||
outline: none; | |||
color: #0f172a; | |||
background: #f8fafc; | |||
font-family: inherit; | |||
} | |||
.gla-conquistas-search:focus { | |||
border-color: #93c5fd; | |||
background: #fff; | |||
} | |||
.gla-conquistas-filters { | |||
display: flex; | |||
gap: 6px; | |||
flex-wrap: wrap; | |||
} | |||
.gla-conquistas-filter { | |||
display: inline-block; | |||
padding: 6px 13px; | |||
border-radius: 999px; | |||
border: 1px solid #cbd5e1; | |||
background: #f8fafc; | background: #f8fafc; | ||
cursor: pointer; | |||
font-size: 12px; | |||
font-weight: 600; | |||
color: #0f172a; | |||
} | } | ||
/* OCULTAS — | .gla-conquistas-filter:hover { | ||
background: #e2e8f0; | |||
} | |||
.gla-conquistas-filter.is-active { | |||
background: #3b82f6; | |||
color: #fff; | |||
border-color: #3b82f6; | |||
} | |||
/* OCULTAS — acento cinza */ | |||
.gla-item.is-hidden, | .gla-item.is-hidden, | ||
.gla-item[data-hidden="true"] { | .gla-item[data-hidden="true"] { | ||
border-color: # | border-color: #cbd5e1; | ||
background: # | background: #f8fafc; | ||
} | } | ||
.gla-item.is-hidden .gla-item-title, | .gla-item.is-hidden .gla-item-title, | ||
.gla-item[data-hidden="true"] .gla-item-title { | .gla-item[data-hidden="true"] .gla-item-title { | ||
color: # | color: #475569; | ||
} | } | ||
.gla-item.is-hidden .gla-item-desc, | .gla-item.is-hidden .gla-item-desc, | ||
.gla-item[data-hidden="true"] .gla-item-desc { | .gla-item[data-hidden="true"] .gla-item-desc { | ||
color: # | color: #94a3b8; | ||
} | } | ||
| Linha 193: | Linha 331: | ||
align-items: center; | align-items: center; | ||
gap: 12px; | gap: 12px; | ||
flex: 1; | |||
min-width: 0; | |||
} | } | ||
| Linha 220: | Linha 360: | ||
font-weight: 700; | font-weight: 700; | ||
font-size: 15px; | font-size: 15px; | ||
color: # | color: #1d4ed8; | ||
} | } | ||
| Linha 229: | Linha 369: | ||
} | } | ||
/* RECOMPENSA */ | /* RECOMPENSA — bloco vertical de largura fixa, label centrado em cima */ | ||
.gla-item-reward { | .gla-item-reward { | ||
flex-shrink: 0; | |||
width: 224px; | |||
display: flex; | display: flex; | ||
flex-direction: column; | |||
align-items: center; | align-items: center; | ||
gap: 6px; | gap: 6px; | ||
padding: 0 14px; | |||
} | |||
.gla-item-reward-label { | |||
font-size: 12px; | |||
font-weight: 700; | |||
letter-spacing: .05em; | |||
text-transform: uppercase; | |||
white-space: nowrap; | |||
text-align: center; | |||
width: 100%; | |||
color: #3b82f6; | |||
} | |||
.gla-item.is-hidden .gla-item-reward-label, | |||
.gla-item[data-hidden="true"] .gla-item-reward-label { | |||
color: #94a3b8; | |||
} | } | ||
.gla-item-reward .reward-wrapper { | .gla-item-reward .reward-wrapper { | ||
display: | width: 100%; | ||
display: block; | |||
} | |||
/* override do .reward-items do Widget:Item — linha única, sem quebra */ | |||
.gla-item-reward .reward-items { | |||
display: flex !important; | |||
flex-wrap: nowrap !important; | |||
justify-content: center; | |||
gap: 4px; | |||
width: 100%; | |||
} | } | ||
</style> | </style> | ||
| Linha 250: | Linha 416: | ||
if (!root) return; | if (!root) return; | ||
setTimeout(function () { | setTimeout(function () { | ||
var probe = document.querySelector(".item-wrapper"); | var probe = document.querySelector(".item-wrapper"); | ||
if (probe) { | if (probe) { | ||
var cs = window.getComputedStyle(probe); | var cs = window.getComputedStyle(probe); | ||
if (cs && cs.position | if (cs && cs.position !== "relative" && console && console.warn) { | ||
console.warn("[Widget:Conquistas] Widget:Item não detectado. Adicione {{#widget:Item}} antes de {{#widget:Conquistas}}."); | |||
} | |||
} | } | ||
}, 200); | }, 200); | ||
| Linha 272: | Linha 429: | ||
var panels = root.querySelectorAll(".gla-conquistas-panel"); | var panels = root.querySelectorAll(".gla-conquistas-panel"); | ||
var validTabs = {}; | var validTabs = {}; | ||
panels.forEach(function (p) { | panels.forEach(function (p) { | ||
var name = p.getAttribute("data-tab-content"); | var name = p.getAttribute("data-tab-content"); | ||
if (name) | if (name) validTabs[name] = p.querySelector(".gla-list"); | ||
}); | }); | ||
// | // Move cards do invoke source para os painéis corretos | ||
document.querySelectorAll(".gla-item[data-tab]").forEach(function (card) { | document.querySelectorAll(".gla-item[data-tab]").forEach(function (card) { | ||
if (root.contains(card)) return; | if (root.contains(card)) return; | ||
var tag = (card.getAttribute("data-tab") || "").toLowerCase(); | var tag = (card.getAttribute("data-tab") || "").toLowerCase(); | ||
var list = validTabs[tag] || validTabs["geral"]; | var list = validTabs[tag] || validTabs["geral"]; | ||
| Linha 291: | Linha 443: | ||
}); | }); | ||
document.querySelectorAll(".gla-conquistas-source").forEach(function (src) { | document.querySelectorAll(".gla-conquistas-source").forEach(function (src) { | ||
if (src.parentNode) src.parentNode.removeChild(src); | if (src.parentNode) src.parentNode.removeChild(src); | ||
}); | |||
// Estado global | |||
var currentSearch = ""; | |||
var currentFilter = "all"; | |||
var currentTab = "geral"; | |||
var searchTimeout = null; | |||
var filterDefault = root.querySelector("#gla-filter-default"); | |||
var filterColiseu = root.querySelector("#gla-filter-coliseu"); | |||
var searchInput = root.querySelector(".gla-conquistas-search"); | |||
function applyVisibility() { | |||
var panel = root.querySelector('.gla-conquistas-panel[data-tab-content="' + currentTab + '"]'); | |||
if (!panel) return; | |||
var search = currentSearch.toLowerCase(); | |||
panel.querySelectorAll(".gla-item").forEach(function (card) { | |||
var titleEl = card.querySelector(".gla-item-title"); | |||
var descEl = card.querySelector(".gla-item-desc"); | |||
var titleText = titleEl ? titleEl.textContent : ""; | |||
var descText = descEl ? descEl.textContent : ""; | |||
var matchSearch = !search || | |||
titleText.toLowerCase().indexOf(search) >= 0 || | |||
descText.toLowerCase().indexOf(search) >= 0; | |||
var hidden = card.getAttribute("data-hidden") === "true"; | |||
var subtype = (card.getAttribute("data-subtype") || "").toLowerCase(); | |||
var matchFilter = true; | |||
if (currentFilter === "normal") matchFilter = !hidden; | |||
else if (currentFilter === "hidden") matchFilter = hidden; | |||
else if (currentFilter === "onemany") matchFilter = subtype === "onemany"; | |||
else if (currentFilter === "corrida") matchFilter = subtype === "corrida"; | |||
card.style.display = (matchSearch && matchFilter) ? "" : "none"; | |||
}); | |||
} | |||
// Busca com debounce | |||
if (searchInput) { | |||
searchInput.addEventListener("input", function () { | |||
clearTimeout(searchTimeout); | |||
searchTimeout = setTimeout(function () { | |||
currentSearch = searchInput.value.trim(); | |||
applyVisibility(); | |||
}, 240); | |||
}); | |||
} | |||
// Filtros (normal / oculta / subtype) | |||
root.querySelectorAll(".gla-conquistas-filter").forEach(function (pill) { | |||
pill.addEventListener("click", function () { | |||
pill.parentNode.querySelectorAll(".gla-conquistas-filter").forEach(function (p) { | |||
p.classList.remove("is-active"); | |||
}); | |||
pill.classList.add("is-active"); | |||
currentFilter = pill.getAttribute("data-filter"); | |||
applyVisibility(); | |||
}); | |||
}); | |||
// Spoiler — abre/fecha ao clicar no card | |||
root.addEventListener("click", function (e) { | |||
var card = e.target.closest(".gla-item.has-spoiler"); | |||
if (!card) return; | |||
if (e.target.closest(".gla-item-spoiler")) return; | |||
if (e.target.closest(".item-wrapper")) return; | |||
var isOpen = card.classList.contains("is-open"); | |||
root.querySelectorAll(".gla-item.is-open").forEach(function (c) { | |||
c.classList.remove("is-open"); | |||
}); | |||
if (!isOpen) card.classList.add("is-open"); | |||
}); | }); | ||
function abrirAba(nome) { | function abrirAba(nome) { | ||
currentTab = nome; | |||
currentFilter = "all"; | |||
// Troca entre filtros padrão e filtros do Coliseu | |||
if (filterDefault) filterDefault.style.display = nome === "coliseu" ? "none" : ""; | |||
if (filterColiseu) filterColiseu.style.display = nome === "coliseu" ? "" : "none"; | |||
// Reseta pill ativa para "Todas" | |||
root.querySelectorAll(".gla-conquistas-filter").forEach(function (p) { | |||
p.classList.toggle("is-active", p.getAttribute("data-filter") === "all"); | |||
}); | }); | ||
panels.forEach(function (p) { | tabs.forEach(function (t) { t.classList.remove("is-active"); }); | ||
panels.forEach(function (p) { p.classList.remove("is-active"); }); | |||
var tab = root.querySelector('.gla-conquistas-tab[data-tab="' + nome + '"]'); | var tab = root.querySelector('.gla-conquistas-tab[data-tab="' + nome + '"]'); | ||
var panel = root.querySelector('.gla-conquistas-panel[data-tab-content="' + nome + '"]'); | var panel = root.querySelector('.gla-conquistas-panel[data-tab-content="' + nome + '"]'); | ||
if (tab) tab.classList.add("is-active"); | if (tab) tab.classList.add("is-active"); | ||
if (panel) panel.classList.add("is-active"); | if (panel) panel.classList.add("is-active"); | ||
applyVisibility(); | |||
} | } | ||