Explorar el Código

fix: remplace ResizeObserver par syncHeaderSpacer au load/resize/toggle activité

ResizeObserver créait une boucle infinie (modification du spacer → recalcul
layout → re-fire observer). Remplacé par un appel simple sur window load,
resize, et lors des show/hide de la barre d'activité.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cédric Hansen hace 1 mes
padre
commit
209a4e4ace
Se han modificado 1 ficheros con 10 adiciones y 8 borrados
  1. 10 8
      sources/templates/base.html

+ 10 - 8
sources/templates/base.html

@@ -90,14 +90,14 @@
 
   {% block scripts %}{% endblock %}
   <script>
-  // Spacer dynamique pour le header fixed
-  (function() {
-    const header = document.getElementById('site-header');
-    const spacer = document.getElementById('header-spacer');
-    function sync() { spacer.style.height = header.offsetHeight + 'px'; }
-    sync();
-    new ResizeObserver(sync).observe(header);
-  })();
+  // Spacer pour compenser le header fixed — recalculé au load et sur resize
+  function syncHeaderSpacer() {
+    const h = document.getElementById('site-header');
+    const s = document.getElementById('header-spacer');
+    if (h && s) s.style.height = h.offsetHeight + 'px';
+  }
+  window.addEventListener('load', syncHeaderSpacer);
+  window.addEventListener('resize', syncHeaderSpacer);
   (function() {
     const bar = document.getElementById('activity-bar');
     const list = document.getElementById('activity-list');
@@ -122,9 +122,11 @@
 
       if (count === 0) {
         bar.classList.add('hidden');
+        syncHeaderSpacer();
         return;
       }
       bar.classList.remove('hidden');
+      syncHeaderSpacer();
       list.innerHTML = items.map(it => {
         const label = LABELS[it.kind] || it.kind;
         const since = it.started_at ? ' · ' + elapsed(it.started_at) : '';