feat: add document preview overlay

This commit is contained in:
Matthieu
2025-09-17 17:12:41 +02:00
parent 8a32ef4bbc
commit 37c66ac3d6
8 changed files with 617 additions and 1 deletions

View File

@@ -11,6 +11,12 @@
</div>
</div>
<DocumentPreviewModal
:document="previewDocument"
:visible="previewVisible"
@close="closePreview"
/>
<section class="card bg-base-100 shadow-lg">
<div class="card-body space-y-6">
<div class="flex flex-col gap-4 md:flex-row md:items-end md:justify-between">
@@ -94,7 +100,16 @@
<td>{{ formatDate(document.createdAt) }}</td>
<td class="text-right">
<div class="flex justify-end gap-2">
<button class="btn btn-ghost btn-xs" @click="downloadDocument(document)">
<button
class="btn btn-ghost btn-xs"
type="button"
:disabled="!canPreviewDocument(document)"
:title="canPreviewDocument(document) ? 'Consulter le document' : 'Aucun aperçu disponible pour ce type'"
@click="openPreview(document)"
>
Consulter
</button>
<button class="btn btn-ghost btn-xs" type="button" @click="downloadDocument(document)">
Télécharger
</button>
</div>
@@ -112,11 +127,15 @@
import { ref, computed, onMounted } from 'vue'
import { useDocuments } from '~/composables/useDocuments'
import { getFileIcon } from '~/utils/fileIcons'
import { canPreviewDocument } from '~/utils/documentPreview'
import DocumentPreviewModal from '~/components/DocumentPreviewModal.vue'
const { documents, loading, loadDocuments } = useDocuments()
const searchTerm = ref('')
const attachmentFilter = ref('all')
const previewDocument = ref(null)
const previewVisible = ref(false)
onMounted(() => {
loadDocuments()
@@ -187,4 +206,15 @@ const downloadDocument = (doc) => {
window.open(doc.path, '_blank')
}
const openPreview = (doc) => {
if (!canPreviewDocument(doc)) return
previewDocument.value = doc
previewVisible.value = true
}
const closePreview = () => {
previewVisible.value = false
previewDocument.value = null
}
</script>