미리보기 기능 토글 적용

This commit is contained in:
2026-05-14 17:06:06 +09:00
parent 72b09a9554
commit e002e4e72d
4 changed files with 27 additions and 4 deletions
+15
View File
@@ -12,6 +12,7 @@ let _hideTimer = null;
let _visible = false; let _visible = false;
let _loaderEl = null; let _loaderEl = null;
let _activeCard = null; let _activeCard = null;
let _enabled = true;
export function init() { export function init() {
_el = document.createElement('div'); _el = document.createElement('div');
@@ -22,12 +23,26 @@ export function init() {
document.body.appendChild(_el); document.body.appendChild(_el);
} }
export function setEnabled(v) {
_enabled = v;
if (!v) {
clearTimeout(_showTimer); _showTimer = null;
clearTimeout(_hideTimer); _hideTimer = null;
_removeLoader();
_activeCard = null;
_visible = false;
_el.style.display = 'none';
_el.style.visibility = 'hidden';
}
}
export function setupCard(card) { export function setupCard(card) {
card.addEventListener('mouseenter', _onEnter); card.addEventListener('mouseenter', _onEnter);
card.addEventListener('mouseleave', _onLeave); card.addEventListener('mouseleave', _onLeave);
} }
function _onEnter() { function _onEnter() {
if (!_enabled) return;
const card = this; const card = this;
_activeCard = card; _activeCard = card;
+2
View File
@@ -21,6 +21,8 @@
</div> </div>
<div class="separator"></div> <div class="separator"></div>
<button class="btn btn-success" id="btn-rename" disabled><span></span>이름 변경 실행 (S)</button> <button class="btn btn-success" id="btn-rename" disabled><span></span>이름 변경 실행 (S)</button>
<div class="separator"></div>
<button class="btn btn-ghost active" id="btn-preview-toggle">🔍 미리보기</button>
<div style="margin-left:auto; display:flex; align-items:center; gap:8px;"> <div style="margin-left:auto; display:flex; align-items:center; gap:8px;">
<span class="dir-path" id="dir-path">폴더를 선택하세요</span> <span class="dir-path" id="dir-path">폴더를 선택하세요</span>
<button class="btn btn-warning" id="btn-reveal" disabled>Finder에서 열기</button> <button class="btn btn-warning" id="btn-reveal" disabled>Finder에서 열기</button>
+9 -4
View File
@@ -25,10 +25,11 @@ const statusText = document.getElementById('status-text');
const loading = document.getElementById('loading'); const loading = document.getElementById('loading');
const loadingText = document.getElementById('loading-text'); const loadingText = document.getElementById('loading-text');
const toast = document.getElementById('toast'); const toast = document.getElementById('toast');
const rubberBand = document.getElementById('rubber-band'); const rubberBand = document.getElementById('rubber-band');
const gridContainer = document.getElementById('grid-container'); const gridContainer = document.getElementById('grid-container');
const dragGhostEl = document.getElementById('drag-ghost'); const dragGhostEl = document.getElementById('drag-ghost');
const thumbSizeHint = document.getElementById('thumb-size-hint'); const thumbSizeHint = document.getElementById('thumb-size-hint');
const btnPreviewToggle = document.getElementById('btn-preview-toggle');
// ── 핸들러 초기화 ───────────────────────────────── // ── 핸들러 초기화 ─────────────────────────────────
const callbacks = { const callbacks = {
@@ -57,6 +58,10 @@ document.addEventListener('keydown', (e) => {
if (e.code === 'KeyO') btnOpen.click(); if (e.code === 'KeyO') btnOpen.click();
if (e.code === 'KeyS' && !btnRename.disabled) btnRename.click(); if (e.code === 'KeyS' && !btnRename.disabled) btnRename.click();
}); });
btnPreviewToggle.addEventListener('click', () => {
const on = btnPreviewToggle.classList.toggle('active');
hoverPreview.setEnabled(on);
});
btnSortName.addEventListener('click', () => sortFiles('name')); btnSortName.addEventListener('click', () => sortFiles('name'));
btnSortDate.addEventListener('click', () => sortFiles('date')); btnSortDate.addEventListener('click', () => sortFiles('date'));
btnRename.addEventListener('click', doRename); btnRename.addEventListener('click', doRename);
+1
View File
@@ -82,6 +82,7 @@ body.fullscreen #titlebar {
.btn-ghost { background: transparent; color: var(--text); border: 1px solid var(--border); } .btn-ghost { background: transparent; color: var(--text); border: 1px solid var(--border); }
.btn-ghost:hover { background: var(--card); } .btn-ghost:hover { background: var(--card); }
.btn-ghost:disabled { color: var(--muted); border-color: var(--border); opacity: .4; cursor: not-allowed; } .btn-ghost:disabled { color: var(--muted); border-color: var(--border); opacity: .4; cursor: not-allowed; }
.btn-ghost.active { border-color: var(--accent); color: var(--accent); }
.sort-group { .sort-group {
display: flex; display: flex;
background: var(--card); background: var(--card);