chore: refine moves queue layout gap

This commit is contained in:
2026-02-23 00:51:06 +00:00
parent de736e1daf
commit b5e407f738

View File

@@ -13,6 +13,8 @@ const ry = ref(45)
const rz = ref(0) const rz = ref(0)
const SCALE = 100 const SCALE = 100
const GAP = 0 const GAP = 0
const MIN_MOVES_COLUMN_GAP = 6
const movesColumnGap = ref(MIN_MOVES_COLUMN_GAP)
// --- Interaction State --- // --- Interaction State ---
const isDragging = ref(false) const isDragging = ref(false)
@@ -340,13 +342,29 @@ const recalcMovesLayout = () => {
const pill = samplePillEl.value const pill = samplePillEl.value
if (!container || !pill) return if (!container || !pill) return
const containerWidth = container.clientWidth - 4 const containerWidth = container.clientWidth
const pillWidth = pill.offsetWidth + 8 const pillWidth = pill.offsetWidth
if (pillWidth <= 0) return if (pillWidth <= 0) return
const rawCount = Math.floor(containerWidth / pillWidth) const totalWidth = (cols) => {
const count = Math.max(1, rawCount - 1) if (cols <= 0) return 0
movesPerRow.value = count if (cols === 1) return pillWidth
return cols * pillWidth + (cols - 1) * MIN_MOVES_COLUMN_GAP
}
let cols = Math.floor((containerWidth + MIN_MOVES_COLUMN_GAP) / (pillWidth + MIN_MOVES_COLUMN_GAP))
if (cols < 1) cols = 1
while (cols > 1 && totalWidth(cols) > containerWidth) {
cols -= 1
}
let gap = 0
if (cols > 1) {
gap = (containerWidth - cols * pillWidth) / (cols - 1)
}
movesPerRow.value = cols
movesColumnGap.value = gap
} }
const resetQueue = () => { const resetQueue = () => {
@@ -657,7 +675,7 @@ watch(displayMoves, () => {
v-for="(row, rowIndex) in moveRows" v-for="(row, rowIndex) in moveRows"
:key="rowIndex" :key="rowIndex"
class="moves-row" class="moves-row"
:class="{ 'moves-row-justify': rowIndex < moveRows.length - 1 }" :style="{ columnGap: movesColumnGap + 'px' }"
> >
<span <span
v-for="(m, idx) in row" v-for="(m, idx) in row"
@@ -773,22 +791,18 @@ watch(displayMoves, () => {
.moves-row { .moves-row {
display: flex; display: flex;
column-gap: 8px;
}
.moves-row-justify {
justify-content: space-between;
} }
.move-pill { .move-pill {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
width: 16px;
padding: 4px 8px; padding: 4px 8px;
border-radius: 999px; border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.2); border: 1px solid rgba(255, 255, 255, 0.2);
font-size: 0.8rem; font-size: 0.8rem;
color: #f0f0f0; color: #fff;
white-space: nowrap; white-space: nowrap;
} }