feat(frontend) : replace confirm() with themed modal for document deletion

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-15 18:33:44 +01:00
parent 354d994766
commit cbfbb16c59

View File

@@ -213,6 +213,37 @@
v-model="confirmDeleteOpen"
@confirm="handleDelete"
/>
<!-- Confirm delete document modal -->
<Teleport v-if="confirmDeleteDocOpen" to="body">
<Transition name="modal" appear>
<div class="fixed inset-0 z-[70] flex items-center justify-center">
<div class="absolute inset-0 bg-black/30" @click="confirmDeleteDocOpen = false" />
<div class="relative z-10 w-full max-w-md rounded-lg bg-white p-6 shadow-xl">
<h3 class="text-lg font-bold text-neutral-900">{{ $t('taskDocuments.confirmDeleteTitle') }}</h3>
<p class="mt-3 text-sm text-neutral-600">
{{ $t('taskDocuments.confirmDeleteMessage') }}
</p>
<div class="mt-6 flex justify-end gap-3">
<button
type="button"
class="rounded-md border border-neutral-300 px-4 py-2 text-sm font-semibold text-neutral-700 hover:bg-neutral-50"
@click="confirmDeleteDocOpen = false"
>
{{ $t('common.cancel') }}
</button>
<button
type="button"
class="rounded-md bg-red-600 px-4 py-2 text-sm font-semibold text-white hover:bg-red-700"
@click="confirmDeleteDocument"
>
Supprimer
</button>
</div>
</div>
</div>
</Transition>
</Teleport>
</div>
</div>
</Transition>
@@ -416,9 +447,19 @@ function nextPreview() {
}
}
async function handleDeleteDocument(doc: TaskDocument) {
if (!confirm(t('taskDocuments.confirmDeleteMessage'))) return
await removeDocument(doc.id)
const confirmDeleteDocOpen = ref(false)
const documentToDelete = ref<TaskDocument | null>(null)
function handleDeleteDocument(doc: TaskDocument) {
documentToDelete.value = doc
confirmDeleteDocOpen.value = true
}
async function confirmDeleteDocument() {
if (!documentToDelete.value) return
await removeDocument(documentToDelete.value.id)
confirmDeleteDocOpen.value = false
documentToDelete.value = null
await refreshDocuments()
}