feat: Phase 1C — 프리뷰 패널 (문서 선택 시 우측 표시)
- PreviewPanel: AI 요약, 태그, 메타 정보, 처리 상태 표시 - DocumentCard: 선택 모드 지원 (클릭→프리뷰, 더블클릭 불필요) - 3-pane 완성: sidebar | document list | preview panel - 필터 변경 시 선택 자동 해제 - 데스크톱만 표시 (모바일은 detail 페이지로 이동) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,8 +4,10 @@
|
||||
import { api } from '$lib/api';
|
||||
import { addToast } from '$lib/stores/ui';
|
||||
import DocumentCard from '$lib/components/DocumentCard.svelte';
|
||||
import PreviewPanel from '$lib/components/PreviewPanel.svelte';
|
||||
|
||||
let documents = $state([]);
|
||||
let selectedDoc = $state(null);
|
||||
let total = $state(0);
|
||||
let loading = $state(true);
|
||||
let searchQuery = $state('');
|
||||
@@ -29,6 +31,8 @@
|
||||
searchQuery = urlQ;
|
||||
searchMode = urlMode;
|
||||
|
||||
selectedDoc = null; // 필터 변경 시 선택 해제
|
||||
|
||||
if (urlQ) {
|
||||
doSearch(urlQ, urlMode);
|
||||
} else {
|
||||
@@ -112,9 +116,15 @@
|
||||
let totalPages = $derived(Math.ceil(total / 20));
|
||||
let items = $derived(searchResults || documents);
|
||||
let hasActiveFilters = $derived(!!filterDomain || !!filterSubGroup || !!searchQuery);
|
||||
|
||||
function selectDoc(doc) {
|
||||
selectedDoc = selectedDoc?.id === doc.id ? null : doc;
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="p-4 lg:p-6">
|
||||
<div class="flex h-full">
|
||||
<!-- 문서 목록 영역 -->
|
||||
<div class="flex-1 overflow-y-auto p-4 lg:p-6">
|
||||
<!-- 검색바 + 필터 상태 -->
|
||||
<div class="flex gap-2 mb-4">
|
||||
<input
|
||||
@@ -183,7 +193,12 @@
|
||||
{:else}
|
||||
<div class="space-y-1.5">
|
||||
{#each items as doc}
|
||||
<DocumentCard {doc} showDomain={!filterDomain} />
|
||||
<DocumentCard
|
||||
{doc}
|
||||
showDomain={!filterDomain}
|
||||
selected={selectedDoc?.id === doc.id}
|
||||
onselect={selectDoc}
|
||||
/>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
@@ -203,3 +218,11 @@
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<!-- 프리뷰 패널 (데스크톱만) -->
|
||||
{#if selectedDoc}
|
||||
<div class="hidden lg:block shrink-0" style="width: 360px">
|
||||
<PreviewPanel doc={selectedDoc} onclose={() => selectedDoc = null} />
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user