|
|
|
|
@@ -302,7 +302,44 @@ watch(
|
|
|
|
|
async (tab) => {
|
|
|
|
|
if (tab === 'game-admin' && selectedGameId.value && !selectedGame.value?.game?.id) {
|
|
|
|
|
await loadGame()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (tab === 'items') {
|
|
|
|
|
customItemQuery.value = ''
|
|
|
|
|
customItemOrphanOnly.value = false
|
|
|
|
|
customItemPage.value = 1
|
|
|
|
|
customItemModalGameQuery.value = ''
|
|
|
|
|
await refreshCustomItems()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (tab === 'tierlists') {
|
|
|
|
|
if (tierlistsMode.value === 'requests') await refreshTemplateRequests()
|
|
|
|
|
else await refreshAdminTierLists()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (tab === 'users') {
|
|
|
|
|
await refreshUsers()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
watch(
|
|
|
|
|
() => tierlistsMode.value,
|
|
|
|
|
async (mode) => {
|
|
|
|
|
if (activeTab.value !== 'tierlists') return
|
|
|
|
|
if (mode === 'requests') await refreshTemplateRequests()
|
|
|
|
|
else await refreshAdminTierLists()
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
watch(
|
|
|
|
|
() => auth.user?.id,
|
|
|
|
|
async (userId) => {
|
|
|
|
|
if (!userId || !auth.user?.isAdmin) return
|
|
|
|
|
await Promise.all([refreshGames(), refreshCustomItems(), refreshAdminTierLists(), refreshUsers(), refreshTemplateRequests(), refreshImageDiagnostics()])
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
@@ -2243,7 +2280,7 @@ async function saveFeaturedOrder() {
|
|
|
|
|
<div v-if="previewTierList?.requestPreview" class="requestPreview">
|
|
|
|
|
<div class="requestPreview__frame">
|
|
|
|
|
<div class="requestPreview__header">
|
|
|
|
|
<div class="requestPreview__title">{{ previewTierList.title || '티어표 미리보기' }}</div>
|
|
|
|
|
<div class="requestPreview__heroTitle">{{ previewTierList.title || '티어표 미리보기' }}</div>
|
|
|
|
|
<div v-if="previewTierList.description" class="requestPreview__desc">{{ previewTierList.description }}</div>
|
|
|
|
|
<div class="requestPreview__meta">
|
|
|
|
|
{{ previewRequestHasColumns(previewTierList) ? (previewRequestColumns(previewTierList).length + '열 구성') : '단일 열 구성' }} ·
|
|
|
|
|
@@ -3457,7 +3494,8 @@ async function saveFeaturedOrder() {
|
|
|
|
|
align-content: start;
|
|
|
|
|
gap: 18px;
|
|
|
|
|
overflow: auto;
|
|
|
|
|
padding-right: 6px;
|
|
|
|
|
padding-right: 0;
|
|
|
|
|
overscroll-behavior: contain;
|
|
|
|
|
scrollbar-width: none;
|
|
|
|
|
-ms-overflow-style: none;
|
|
|
|
|
}
|
|
|
|
|
@@ -3880,23 +3918,23 @@ async function saveFeaturedOrder() {
|
|
|
|
|
display: grid;
|
|
|
|
|
gap: 18px;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__summary {
|
|
|
|
|
.requestPreview__frame {
|
|
|
|
|
display: grid;
|
|
|
|
|
grid-template-columns: minmax(0, 1fr) 220px;
|
|
|
|
|
gap: 16px;
|
|
|
|
|
align-items: start;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__summaryBody {
|
|
|
|
|
display: grid;
|
|
|
|
|
gap: 8px;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__summaryThumb {
|
|
|
|
|
width: 100%;
|
|
|
|
|
aspect-ratio: 16 / 9;
|
|
|
|
|
object-fit: cover;
|
|
|
|
|
border-radius: 18px;
|
|
|
|
|
gap: 26px;
|
|
|
|
|
padding: 28px;
|
|
|
|
|
border-radius: 24px;
|
|
|
|
|
border: 1px solid var(--theme-border);
|
|
|
|
|
background: var(--theme-surface-soft);
|
|
|
|
|
background: color-mix(in srgb, var(--theme-main-bg) 92%, transparent);
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__header {
|
|
|
|
|
display: grid;
|
|
|
|
|
gap: 10px;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__heroTitle {
|
|
|
|
|
font-size: clamp(30px, 3vw, 48px);
|
|
|
|
|
line-height: 1.08;
|
|
|
|
|
font-weight: 900;
|
|
|
|
|
letter-spacing: -0.04em;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__meta {
|
|
|
|
|
color: var(--theme-text-soft);
|
|
|
|
|
@@ -3904,27 +3942,28 @@ async function saveFeaturedOrder() {
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__desc {
|
|
|
|
|
color: var(--theme-text-muted);
|
|
|
|
|
line-height: 1.6;
|
|
|
|
|
line-height: 1.7;
|
|
|
|
|
white-space: pre-line;
|
|
|
|
|
font-size: 15px;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__board,
|
|
|
|
|
.requestPreview__pool {
|
|
|
|
|
display: grid;
|
|
|
|
|
gap: 12px;
|
|
|
|
|
gap: 14px;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__boardHead,
|
|
|
|
|
.requestPreview__row {
|
|
|
|
|
display: grid;
|
|
|
|
|
grid-template-columns: 92px minmax(0, 1fr);
|
|
|
|
|
gap: 12px;
|
|
|
|
|
grid-template-columns: 120px minmax(0, 1fr);
|
|
|
|
|
gap: 16px;
|
|
|
|
|
align-items: start;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__rowLabel,
|
|
|
|
|
.requestPreview__poolLabel,
|
|
|
|
|
.requestPreview__columnLabel {
|
|
|
|
|
font-size: 13px;
|
|
|
|
|
font-weight: 800;
|
|
|
|
|
color: rgba(255, 255, 255, 0.86);
|
|
|
|
|
font-size: 15px;
|
|
|
|
|
font-weight: 900;
|
|
|
|
|
color: var(--theme-text-strong);
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__rowLabel--head {
|
|
|
|
|
color: var(--theme-text-faint);
|
|
|
|
|
@@ -3932,25 +3971,27 @@ async function saveFeaturedOrder() {
|
|
|
|
|
.requestPreview__columnLabels,
|
|
|
|
|
.requestPreview__cells {
|
|
|
|
|
display: grid;
|
|
|
|
|
gap: 12px;
|
|
|
|
|
gap: 14px;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__columnLabel,
|
|
|
|
|
.requestPreview__cell {
|
|
|
|
|
min-width: 0;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__columnLabel {
|
|
|
|
|
padding: 8px 4px;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__cell {
|
|
|
|
|
padding: 10px;
|
|
|
|
|
border-radius: 16px;
|
|
|
|
|
min-height: 134px;
|
|
|
|
|
padding: 14px;
|
|
|
|
|
border-radius: 18px;
|
|
|
|
|
border: 1px solid var(--theme-border);
|
|
|
|
|
background: var(--theme-surface-soft);
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__rowItems {
|
|
|
|
|
display: grid;
|
|
|
|
|
grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
|
|
|
|
|
gap: 10px;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__rowItems--pool {
|
|
|
|
|
grid-template-columns: repeat(auto-fill, minmax(84px, 1fr));
|
|
|
|
|
gap: 12px;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__rowItems--pool {
|
|
|
|
|
grid-template-columns: repeat(auto-fill, minmax(84px, 1fr));
|
|
|
|
|
@@ -3958,10 +3999,10 @@ async function saveFeaturedOrder() {
|
|
|
|
|
.requestPreview__item {
|
|
|
|
|
position: relative;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
border-radius: 14px;
|
|
|
|
|
border-radius: 16px;
|
|
|
|
|
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
|
|
|
background: var(--theme-surface-soft);
|
|
|
|
|
min-height: 72px;
|
|
|
|
|
min-height: 84px;
|
|
|
|
|
}
|
|
|
|
|
.requestPreview__item--muted {
|
|
|
|
|
opacity: 0.52;
|
|
|
|
|
@@ -4146,6 +4187,7 @@ async function saveFeaturedOrder() {
|
|
|
|
|
padding: 20px;
|
|
|
|
|
background: color-mix(in srgb, var(--theme-body-bg) 76%, transparent);
|
|
|
|
|
backdrop-filter: blur(6px);
|
|
|
|
|
overscroll-behavior: contain;
|
|
|
|
|
}
|
|
|
|
|
.modalCard {
|
|
|
|
|
width: min(560px, 100%);
|
|
|
|
|
|