48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
document.addEventListener("DOMContentLoaded", function () {
|
|
const input = document.getElementById("id_documents");
|
|
const fileListContainer = document.getElementById("selected-files");
|
|
let fileBuffer = [];
|
|
|
|
// Réinitialisation au chargement
|
|
if (input) {
|
|
input.value = "";
|
|
}
|
|
|
|
input.addEventListener("change", function (event) {
|
|
fileBuffer = Array.from(input.files);
|
|
renderFileList();
|
|
});
|
|
|
|
function renderFileList() {
|
|
fileListContainer.innerHTML = "";
|
|
|
|
fileBuffer.forEach((file, index) => {
|
|
const li = document.createElement("li");
|
|
li.className = "list-group-item d-flex justify-content-between align-items-center";
|
|
delete_txt = gettext("Supprimer")
|
|
li.innerHTML = `
|
|
${file.name}
|
|
<button type="button" class="btn btn-sm btn-danger" data-index="${index}">${delete_txt}</button>
|
|
`;
|
|
fileListContainer.appendChild(li);
|
|
});
|
|
|
|
// Créer un nouvel input File virtuellement et y insérer les fichiers restants
|
|
const dataTransfer = new DataTransfer();
|
|
fileBuffer.forEach(file => dataTransfer.items.add(file));
|
|
input.files = dataTransfer.files;
|
|
}
|
|
|
|
fileListContainer.addEventListener("click", function (e) {
|
|
if (e.target.tagName === "BUTTON") {
|
|
const indexToRemove = parseInt(e.target.getAttribute("data-index"));
|
|
fileBuffer.splice(indexToRemove, 1);
|
|
renderFileList();
|
|
}
|
|
});
|
|
|
|
window.renderFileList = renderFileList;
|
|
});
|
|
|
|
|
|
|