From 5114372cc4002ad1623aa3a23f3b389a7d41e4fc Mon Sep 17 00:00:00 2001 From: william Date: Wed, 26 Aug 2026 08:18:43 +0200 Subject: [PATCH] =?UTF-8?q?R=C3=A9attache=20les=20gestionnaires=20de=20cli?= =?UTF-8?q?c=20apr=C3=A8s=20"Ouvrir=20la=20ligne=20cliqu=C3=A9e"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause enfin identifiée grâce à un log console instrumenté par l'utilisateur (indispensable — sans lui les précédents correctifs visaient le mauvais chemin de code, refreshRuntimeData(), qui ne se déclenchait même pas dans ce scénario) : l'action "Ouvrir la ligne cliquée" (ouvrir_ligne) appelle applyOpenRowBindings() DIRECTEMENT, sans jamais rappeler bindClicks() ensuite — contrairement à refreshRuntimeData(), qui elle le fait déjà correctement. Si l'écran a un Répéteur ET un panneau de détail (avec des {{champ}}) posés dans un même conteneur parent, applyOpenRowBindings() régénère tout ce sous-arbre — Répéteur compris — pour résoudre les {{champ}} du panneau. Les lignes du Répéteur héritent alors de nœuds DOM tout neufs, sans le moindre écouteur de clic (le garde-fou anti-doublon de bindClicks() repose sur dataset.clickBound, absent sur un nœud neuf, mais bindClicks() lui-même n'était jamais rappelé pour les attacher). Symptôme exact reproduit : le tout premier clic sur une ligne fonctionne (gestionnaires posés au chargement de la page), plus AUCUN clic ne répond ensuite sur AUCUNE ligne, sans erreur console — confirmé par un log montrant runFlowFrom() jamais réinvoqué au clic suivant, et manuellement réparé en rappelant bindClicks() à la main dans la console. Fix : bindClicks()/bindHoverTexts()/bindHoverTriggers() sont maintenant rappelés juste après applyOpenRowBindings() dans le gestionnaire de "Ouvrir la ligne cliquée", comme ils le sont déjà dans refreshRuntimeData(). Co-Authored-By: Claude Sonnet 5 --- templates/play.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/templates/play.html b/templates/play.html index f6945494..356428c3 100644 --- a/templates/play.html +++ b/templates/play.html @@ -563,6 +563,18 @@ } showScreen(node.target_screen_id); applyOpenRowBindings(); + // Si l'élément "ouvert" (ou un ancêtre commun avec lui) contient AUSSI + // un Répéteur — ex. un panneau de détail posé à côté d'une liste dans + // le même conteneur — applyOpenRowBindings() vient de régénérer son + // sous-arbre, lignes du Répéteur comprises, avec des nœuds tout neufs + // SANS AUCUN écouteur de clic (voir bindClicks : le garde-fou anti- + // doublon repose sur elDiv.dataset.clickBound, absent sur un nœud + // fraîchement créé). Sans ce rappel, un clic sur "ouvrir la ligne + // cliquée" combiné à un Répéteur sur le même écran rendait TOUTES les + // lignes muettes dès le clic suivant, sans la moindre erreur. + bindClicks(); + bindHoverTexts(); + bindHoverTriggers(); return Promise.resolve(); } else if (node.action_type === 'modifier_element' && node.target_element_id) { const targetEl = document.querySelector('[data-element-id="' + node.target_element_id + '"]');