diff --git a/CHANGELOG.md b/CHANGELOG.md index 5aeff246..118ec91c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,8 @@ Tous les changements notables de Ara sont documentés ici avec leur date, leur c ### Nouvelles fonctionnalités 🚀 -- Le champs "Erreur et recommandation" est automatiquement focus lorsque le critère est défini comme "Non conforme" ([#766](https://github.com/DISIC/Ara/pull/766)) +- Ajoute une modale de confirmation lors de la suppression d’une pièce jointe sur un critère "Non conforme" ([#788](https://github.com/DISIC/Ara/pull/788)) +- Met automatiquement le focus sur le champs "Erreur et recommandation" lorsque qu’un critère est défini comme "Non conforme" ([#766](https://github.com/DISIC/Ara/pull/766)) ## 24/07/2024 diff --git a/confiture-web-app/src/components/audit/AuditGenerationCriterium.vue b/confiture-web-app/src/components/audit/AuditGenerationCriterium.vue index 12a28680..3fce3ec5 100644 --- a/confiture-web-app/src/components/audit/AuditGenerationCriterium.vue +++ b/confiture-web-app/src/components/audit/AuditGenerationCriterium.vue @@ -25,6 +25,7 @@ import CriteriumCompliantAccordion from "./CriteriumCompliantAccordion.vue"; import CriteriumNotApplicableAccordion from "./CriteriumNotApplicableAccordion.vue"; import CriteriumNotCompliantAccordion from "./CriteriumNotCompliantAccordion.vue"; import CriteriumTestsAccordion from "./CriteriumTestsAccordion.vue"; +import DeleteFileModal from "./DeleteFileModal.vue"; const store = useResultsStore(); const auditStore = useAuditStore(); @@ -98,14 +99,24 @@ function handleUploadExample(file: File) { }); } -function handleDeleteExample(image: AuditFile) { +const deleteFileModalRef = ref>(); +const fileToDelete = ref(); + +function openDeleteFileModal(image: AuditFile) { + deleteFileModalRef.value?.show(); + fileToDelete.value = image; +} + +function handleDeleteExample() { + if (!fileToDelete.value) return; + store .deleteExampleImage( props.auditUniqueId, props.page.id, props.topicNumber, props.criterium.number, - image.id + fileToDelete.value.id ) .then(() => { errorMessage.value = null; @@ -115,6 +126,7 @@ function handleDeleteExample(image: AuditFile) { }) .finally(() => { criteriumNotCompliantAccordion.value?.onFileRequestFinished(); + deleteFileModalRef.value?.hide(); }); } @@ -276,10 +288,17 @@ const isOffline = useIsOffline(); @update:comment="updateResultComment($event, 'notCompliantComment')" @update:user-impact="updateResultImpact($event)" @upload-file="handleUploadExample" - @delete-file="handleDeleteExample" + @delete-file="openDeleteFileModal" @update:quick-win="updateQuickWin" /> + + +import { computed, ref } from "vue"; + +import DsfrModal from "../ui/DsfrModal.vue"; + +const modal = ref>(); +const isOpen = ref(false); + +const props = defineProps<{ + mimeType?: string; +}>(); + +defineEmits(["confirm", "cancel"]); + +defineExpose({ + show: () => { + isOpen.value = true; + modal.value?.show(); + }, + hide: () => modal.value?.hide(), + isOpen +}); + +const isImage = computed(() => { + return props.mimeType && props.mimeType.startsWith("image"); +}); + +const title = computed(() => { + return isImage.value + ? "Voulez-vous supprimer cette image ?" + : "Voulez-vous supprimer ce fichier ?"; +}); + +const description = computed(() => { + return isImage.value + ? "Cette image sera définitivement supprimée de votre audit." + : "Ce fichier sera définitivement supprimé de votre audit."; +}); + +const confirm = computed(() => { + return isImage.value ? "Supprimer l’image" : "Supprimer le fichier"; +}); + + +