From eac64165692ba9049397c0d9f64fa6050116e238 Mon Sep 17 00:00:00 2001 From: Dorian Date: Mon, 30 Mar 2026 09:35:06 +0100 Subject: [PATCH] fix: poll for containers after route transition animation Sidebar Right now polls every 100ms (up to 1s) for containers to appear, instead of a single 200ms retry that missed animations. Co-Authored-By: Claude Opus 4.6 (1M context) --- neode-ui/src/composables/useControllerNav.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/neode-ui/src/composables/useControllerNav.ts b/neode-ui/src/composables/useControllerNav.ts index 90fa4e29..c0091c85 100644 --- a/neode-ui/src/composables/useControllerNav.ts +++ b/neode-ui/src/composables/useControllerNav.ts @@ -415,12 +415,19 @@ export function useControllerNav(containerRef?: { value: HTMLElement | null }) { if (dest) { focusEl(dest) } else { - // Containers may not be rendered yet (async load after route change) - // Retry after a short delay - setTimeout(() => { + // Containers not rendered yet (route transition / animation in progress) + // Poll until they appear, up to 1s + let attempts = 0 + const poll = setInterval(() => { + attempts++ const retryContainers = getContainers() - if (retryContainers[0]) focusEl(retryContainers[0]) - }, 200) + if (retryContainers[0]) { + clearInterval(poll) + focusEl(retryContainers[0]) + } else if (attempts >= 10) { + clearInterval(poll) + } + }, 100) } return }