From e51529ca65cd0cc63ecd611ab89318cbec7f2d21 Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 14 Aug 2026 13:44:15 -0600 Subject: [PATCH] fix: combobox closing race --- packages/ui/src/components/base/Combobox.vue | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/ui/src/components/base/Combobox.vue b/packages/ui/src/components/base/Combobox.vue index bf1e2c246a..691240688e 100644 --- a/packages/ui/src/components/base/Combobox.vue +++ b/packages/ui/src/components/base/Combobox.vue @@ -559,7 +559,11 @@ async function updateDropdownPosition() { await nextTick() - const triggerRect = effectiveTriggerEl.value.getBoundingClientRect() + const trigger = effectiveTriggerEl.value + const dropdown = dropdownRef.value + if (!isOpen.value || !trigger || !dropdown) return + + const triggerRect = trigger.getBoundingClientRect() const width = resolveDropdownWidth(triggerRect.width) const minWidth = resolveCssSize(props.dropdownMinWidth) ?? '0px' @@ -571,7 +575,10 @@ async function updateDropdownPosition() { await nextTick() - const dropdownRect = dropdownRef.value.getBoundingClientRect() + const positionedDropdown = dropdownRef.value + if (!isOpen.value || !positionedDropdown) return + + const dropdownRect = positionedDropdown.getBoundingClientRect() const viewport = getViewportRect() const direction = determineOpenDirection(triggerRect, dropdownRect, viewport)