feat(documents) : add type badge and edit button to DocumentListInline

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Matthieu
2026-03-23 15:33:59 +01:00
parent e7402dda4d
commit bd69b37524
2 changed files with 30 additions and 2 deletions

View File

@@ -31,8 +31,9 @@
/> />
</div> </div>
<div> <div>
<div class="font-medium"> <div class="font-medium flex items-center gap-2">
{{ document.name }} {{ document.name }}
<span class="badge badge-sm badge-outline">{{ getDocumentTypeLabel(document.type || 'documentation') }}</span>
</div> </div>
<div class="text-xs text-base-content/70"> <div class="text-xs text-base-content/70">
{{ document.mimeType || 'Inconnu' }} {{ formatSize(document.size) }} {{ document.mimeType || 'Inconnu' }} {{ formatSize(document.size) }}
@@ -40,6 +41,15 @@
</div> </div>
</div> </div>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<button
v-if="canEdit"
type="button"
class="btn btn-ghost btn-xs"
title="Modifier"
@click="$emit('edit', document)"
>
Modifier
</button>
<button <button
type="button" type="button"
class="btn btn-ghost btn-xs" class="btn btn-ghost btn-xs"
@@ -74,6 +84,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { getDocumentTypeLabel } from '~/shared/documentTypes'
import { canPreviewDocument, isImageDocument } from '~/utils/documentPreview' import { canPreviewDocument, isImageDocument } from '~/utils/documentPreview'
import { import {
documentIcon, documentIcon,
@@ -89,10 +100,12 @@ import type { Document } from '~/composables/useDocuments'
withDefaults(defineProps<{ withDefaults(defineProps<{
documents: Document[] documents: Document[]
canDelete?: boolean canDelete?: boolean
canEdit?: boolean
deleteDisabled?: boolean deleteDisabled?: boolean
emptyText?: string emptyText?: string
}>(), { }>(), {
canDelete: false, canDelete: false,
canEdit: false,
deleteDisabled: false, deleteDisabled: false,
emptyText: 'Aucun document.', emptyText: 'Aucun document.',
}) })
@@ -100,5 +113,6 @@ withDefaults(defineProps<{
defineEmits<{ defineEmits<{
(e: 'preview', document: Document): void (e: 'preview', document: Document): void
(e: 'delete', documentId: string): void (e: 'delete', documentId: string): void
(e: 'edit', document: Document): void
}>() }>()
</script> </script>

View File

@@ -17,7 +17,7 @@ export interface EntityDocumentsDeps {
export function useEntityDocuments(deps: EntityDocumentsDeps) { export function useEntityDocuments(deps: EntityDocumentsDeps) {
const { entity, entityType } = deps const { entity, entityType } = deps
const { uploadDocuments, deleteDocument } = useDocuments() const { uploadDocuments, deleteDocument, updateDocument } = useDocuments()
const loadDocumentsFn = entityType === 'composant' const loadDocumentsFn = entityType === 'composant'
? useDocuments().loadDocumentsByComponent ? useDocuments().loadDocumentsByComponent
@@ -104,6 +104,19 @@ export function useEntityDocuments(deps: EntityDocumentsDeps) {
} }
} }
const editDocument = async (id: string, data: { name?: string; type?: string }) => {
const result: any = await updateDocument(id, data)
if (result.success) {
const e = entity()
const docs = e.documents || []
const index = docs.findIndex((doc: any) => doc.id === id)
if (index !== -1) {
docs[index] = { ...docs[index], ...data }
}
}
return result
}
return { return {
documents, documents,
selectedFiles, selectedFiles,
@@ -118,5 +131,6 @@ export function useEntityDocuments(deps: EntityDocumentsDeps) {
ensureDocumentsLoaded, ensureDocumentsLoaded,
handleFilesAdded, handleFilesAdded,
removeDocument, removeDocument,
editDocument,
} }
} }