From 903fd8190322f1746623a8e613d2462cc92389c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jarda=20Kot=C4=9B=C5=A1ovec?= Date: Thu, 10 Apr 2025 17:24:06 +0200 Subject: [PATCH] Fix Restoring Focus in Dialog (#3686) --- .../src/components/focus-trap/focus-trap.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/@headlessui-vue/src/components/focus-trap/focus-trap.ts b/packages/@headlessui-vue/src/components/focus-trap/focus-trap.ts index ee0856fa4e..b08cdf1494 100644 --- a/packages/@headlessui-vue/src/components/focus-trap/focus-trap.ts +++ b/packages/@headlessui-vue/src/components/focus-trap/focus-trap.ts @@ -89,7 +89,8 @@ export let FocusTrap = Object.assign( useRestoreFocus( { ownerDocument }, - computed(() => mounted.value && Boolean(props.features & Features.RestoreFocus)) + computed(() => Boolean(props.features & Features.RestoreFocus)), + computed(() => mounted.value) ) let previousActiveElement = useInitialFocus( { ownerDocument, container, initialFocus: computed(() => props.initialFocus) }, @@ -239,7 +240,8 @@ function useRestoreElement(enabled: Ref) { function useRestoreFocus( { ownerDocument }: { ownerDocument: Ref }, - enabled: Ref + enabled: Ref, + mounted: Ref ) { let getRestoreElement = useRestoreElement(enabled) @@ -247,7 +249,7 @@ function useRestoreFocus( onMounted(() => { watchEffect( () => { - if (enabled.value) return + if (enabled.value && mounted.value) return if (ownerDocument.value?.activeElement === ownerDocument.value?.body) { focusElement(getRestoreElement())