ui: refine editor sidebar scroll spacing

This commit is contained in:
2026-04-06 13:55:05 +09:00
parent 3dba9b0a4d
commit ecd3e69b5a
3 changed files with 74 additions and 50 deletions

View File

@@ -1809,59 +1809,61 @@ onUnmounted(() => {
</div>
</div>
<div ref="sidebarEl" class="sidebar" :style="{ '--editor-sidebar-max-height': editorSidebarMaxHeight || undefined }">
<div class="sidebar__titleRow">
<div class="sidebar__title">아이템</div>
<div class="sidebar__count">{{ visiblePoolCount }} / {{ pool.length }}</div>
</div>
<div class="sidebar__hint">
{{ canEdit ? '아이템을 드래그하거나, 클릭으로 선택한 뒤 원하는 셀/풀을 클릭해서 옮길 수 있어요.' : '공개 티어표는 보기 전용입니다.' }}
</div>
<input
ref="poolSearchEl"
v-model="poolSearchQuery"
class="sidebar__search"
type="text"
maxlength="60"
placeholder="아이템 이름 검색"
/>
<div
ref="poolEl"
class="pool"
:class="{ 'pool--clickTarget': canEdit && !!selectedItemId }"
data-list-type="pool"
@click.self="moveSelectedItemToPool"
>
<div class="sidebarStickyFrame">
<div ref="sidebarEl" class="sidebar" :style="{ '--editor-sidebar-max-height': editorSidebarMaxHeight || undefined }">
<div class="sidebar__titleRow">
<div class="sidebar__title">아이템</div>
<div class="sidebar__count">{{ visiblePoolCount }} / {{ pool.length }}</div>
</div>
<div class="sidebar__hint">
{{ canEdit ? '아이템을 드래그하거나, 클릭으로 선택한 뒤 원하는 셀/풀을 클릭해서 옮길 수 있어요.' : '공개 티어표는 보기 전용입니다.' }}
</div>
<input
ref="poolSearchEl"
v-model="poolSearchQuery"
class="sidebar__search"
type="text"
maxlength="60"
placeholder="아이템 이름 검색"
/>
<div
v-for="id in pool"
:key="id"
class="poolItem"
:class="{
'poolItem--readonly': !canEdit,
'poolItem--hidden': !isPoolItemVisible(id),
'poolItem--selected': selectedItemId === id,
}"
:data-item-id="id"
@click.stop="selectItemByClick(id)"
ref="poolEl"
class="pool"
:class="{ 'pool--clickTarget': canEdit && !!selectedItemId }"
data-list-type="pool"
@click.self="moveSelectedItemToPool"
>
<img
:src="resolveItemSrc(itemsById[id])"
class="thumb"
:alt="itemsById[id]?.label || id"
draggable="false"
/>
<div class="poolItem__label">{{ itemsById[id]?.label || id }}</div>
<button
v-if="canRemoveEditorItem(id)"
class="poolItem__deleteBtn"
type="button"
title="커스텀 이미지 제거"
@pointerdown.stop
@click.stop="deleteEditorItem(id)"
<div
v-for="id in pool"
:key="id"
class="poolItem"
:class="{
'poolItem--readonly': !canEdit,
'poolItem--hidden': !isPoolItemVisible(id),
'poolItem--selected': selectedItemId === id,
}"
:data-item-id="id"
@click.stop="selectItemByClick(id)"
>
삭제
</button>
<div v-if="!canEdit" class="poolItem__state">미배치</div>
<img
:src="resolveItemSrc(itemsById[id])"
class="thumb"
:alt="itemsById[id]?.label || id"
draggable="false"
/>
<div class="poolItem__label">{{ itemsById[id]?.label || id }}</div>
<button
v-if="canRemoveEditorItem(id)"
class="poolItem__deleteBtn"
type="button"
title="커스텀 이미지 제거"
@pointerdown.stop
@click.stop="deleteEditorItem(id)"
>
삭제
</button>
<div v-if="!canEdit" class="poolItem__state">미배치</div>
</div>
</div>
</div>
</div>
@@ -2024,6 +2026,12 @@ onUnmounted(() => {
align-items: start;
padding-bottom: 14px;
}
.sidebarStickyFrame {
min-width: 0;
align-self: stretch;
box-sizing: border-box;
padding-bottom: 46px;
}
.editorMain__title {
font-size: 28px;
font-weight: 900;
@@ -3146,11 +3154,15 @@ onUnmounted(() => {
flex: 1 1 auto;
min-height: 0;
overflow-y: auto;
scrollbar-width: none;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
gap: 10px;
align-content: start;
}
.pool::-webkit-scrollbar {
display: none;
}
.pool--clickTarget {
cursor: copy;
}
@@ -3343,6 +3355,9 @@ onUnmounted(() => {
max-height: none;
overflow: visible;
}
.sidebarStickyFrame {
padding-bottom: 0;
}
.pool {
overflow: visible;
grid-template-columns: repeat(6, minmax(0, 1fr));