From 3d744f256a43f1e9b72d2cca69c252faf94e2403 Mon Sep 17 00:00:00 2001 From: morgane Date: Wed, 17 Jun 2026 16:43:50 +0000 Subject: [PATCH] Actualiser assets/js/app.js --- assets/js/app.js | 61 ++++++++++++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/assets/js/app.js b/assets/js/app.js index 2bea2a0..00542f4 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -20046,34 +20046,49 @@ function switchToProductEditFromStock() { } } -// --- FORCE INJECTION SHORTCUT BUTTON --- +// --- INJECTEUR UNIVERSEL DU BOUTON MODIFICATION --- setInterval(() => { - // 1. Vérifier si la page d'ajout est active et visible à l'écran - const pageAdd = document.getElementById('page-add'); - if (pageAdd && (pageAdd.classList.contains('active') || pageAdd.style.display === 'block')) { - - // 2. Vérifier si notre bouton n'est pas déjà présent - if (!document.getElementById('btn-edit-product-shortcut')) { + // 1. Chercher le bouton vert "Enregistrer" ou "Aggiungi" actuellement visible à l'écran + // On cible les boutons larges avec la classe btn-success (vert) + const successButtons = document.querySelectorAll('.btn-success.full-width, button[type="submit"].btn-success'); + + successButtons.forEach(submitBtn => { + // Vérifier si le bouton est visible à l'écran + if (submitBtn.offsetWidth > 0 && submitBtn.offsetHeight > 0) { - // 3. Trouver le bouton submit vert (on cherche par sa classe et son type) - const submitBtn = pageAdd.querySelector('button[type="submit"]') || pageAdd.querySelector('.btn-success'); + // Trouver le conteneur parent du bouton + const parentForm = submitBtn.parentNode; - if (submitBtn) { + // 2. Si le bouton de raccourci n'est pas encore injecté dans ce formulaire + if (parentForm && !parentForm.querySelector('.btn-edit-catalog-shortcut')) { + + // Création du bouton bleu const editBtn = document.createElement('button'); editBtn.type = 'button'; - editBtn.id = 'btn-edit-product-shortcut'; - editBtn.innerText = '✏️ Modifier la fiche produit'; - editBtn.style.cssText = 'margin-bottom: 15px; background-color: #1976d2; color: white; width: 100%; border: none; border-radius: 8px; padding: 12px; font-size: 16px; font-weight: bold; cursor: pointer; display: block;'; + editBtn.className = 'btn btn-large btn-edit-catalog-shortcut'; + editBtn.innerText = '✏️ Modifier la fiche produit (Catégorie)'; - // Associer l'action de clic - editBtn.onclick = function() { + // Style identique à tes captures d'écran + editBtn.style.cssText = 'margin-bottom: 12px; background-color: #1976d2; color: white; width: 100%; border: none; border-radius: 8px; padding: 14px; font-size: 16px; font-weight: bold; cursor: pointer; display: block; text-align: center;'; + + // Logique de clic pour basculer vers le catalogue + editBtn.onclick = function(e) { + e.preventDefault(); let productId = null; + + // Récupérer l'ID du produit depuis le contexte d'EverShelf if (typeof currentProduct !== 'undefined' && currentProduct) productId = currentProduct.id || currentProduct._id; if (typeof _currentProduct !== 'undefined' && _currentProduct) productId = _currentProduct.id || _currentProduct._id; + if (typeof currentItem !== 'undefined' && currentItem) productId = currentItem.product_id || currentItem.productId; if (productId) { - pageAdd.classList.remove('active'); - pageAdd.style.display = 'none'; + // Masquer toutes les modales/pages de stock ouvertes + document.querySelectorAll('.page, .modal').forEach(el => { + el.classList.remove('active'); + if (el.style.display === 'block') el.style.display = 'none'; + }); + + // Lancer l'éditeur de produit officiel if (typeof editProduct === 'function') { editProduct(productId); } else { @@ -20081,14 +20096,14 @@ setInterval(() => { if (prodPage) { prodPage.classList.add('active'); prodPage.style.display = 'block'; } } } else { - alert("Erreur: Impossible de récupérer le produit."); + alert("Sélectionnez d'abord un produit valide."); } }; - // Injection physique dans le DOM - submitBtn.parentNode.insertBefore(editBtn, submitBtn); - console.log("=> Bouton de modification injecté avec succès par le gardien temporel !"); + // Injection physique juste au-dessus du bouton vert + parentForm.insertBefore(editBtn, submitBtn); + console.log("=> Raccourci catalogue injecté dynamiquement au-dessus du bouton :", submitBtn.innerText); } } - } -}, 500); // Vérifie toutes les demi-secondes \ No newline at end of file + }); +}, 400); // Scan toutes les 400ms \ No newline at end of file