From 40d8b942805e15d07589e9bc93b6841885f5cab3 Mon Sep 17 00:00:00 2001 From: mm <25961416+mlmoravek@users.noreply.github.com> Date: Wed, 27 Mar 2024 20:34:33 +0100 Subject: [PATCH] fix: resolve maximum recursive update exceeded in tests (#869) --- .../components/autocomplete/Autocomplete.vue | 2 +- .../src/components/dropdown/Dropdown.vue | 7 +-- .../oruga/src/components/tooltip/Tooltip.vue | 5 ++- .../src/components/utils/PositionWrapper.vue | 45 +++++++++++-------- .../oruga/src/composables/useEventListener.ts | 9 +++- .../src/composables/useParentProvider.ts | 9 ++-- 6 files changed, 48 insertions(+), 29 deletions(-) diff --git a/packages/oruga/src/components/autocomplete/Autocomplete.vue b/packages/oruga/src/components/autocomplete/Autocomplete.vue index 5f3fe1c82..cd194d5e8 100644 --- a/packages/oruga/src/components/autocomplete/Autocomplete.vue +++ b/packages/oruga/src/components/autocomplete/Autocomplete.vue @@ -735,7 +735,7 @@ onMounted(() => { /** Check if the scroll list inside the dropdown reached the top or it's end. */ function checkDropdownScroll(): void { - const dropdown = dropdownRef.value.$content; + const dropdown = unrefElement(dropdownRef.value.$content); if (!dropdown) return; const trashhold = dropdown.offsetTop; const headerHeight = headerRef.value?.clientHeight || 0; diff --git a/packages/oruga/src/components/dropdown/Dropdown.vue b/packages/oruga/src/components/dropdown/Dropdown.vue index 741802933..18d9ae7aa 100644 --- a/packages/oruga/src/components/dropdown/Dropdown.vue +++ b/packages/oruga/src/components/dropdown/Dropdown.vue @@ -6,6 +6,7 @@ import { watch, onUnmounted, type PropType, + type Component, } from "vue"; import PositionWrapper from "../utils/PositionWrapper.vue"; @@ -307,7 +308,7 @@ const hoverable = computed(() => props.triggers.indexOf("hover") >= 0); // --- Event Handler --- -const contentRef = ref(); +const contentRef = ref(); const triggerRef = ref(); const eventCleanups = []; @@ -596,11 +597,11 @@ defineExpose({ $trigger: triggerRef, $content: contentRef }); @@ -618,7 +619,7 @@ defineExpose({ $trigger: triggerRef, $content: contentRef }); :is="menuTag" v-show="(!disabled && (isActive || isHovered)) || inline" :id="menuId" - ref="contentRef" + :ref="(el) => (contentRef = setContent(el))" v-trap-focus="trapFocus" :tabindex="menuTabindex" :class="menuClasses" diff --git a/packages/oruga/src/components/tooltip/Tooltip.vue b/packages/oruga/src/components/tooltip/Tooltip.vue index 7dc9dbfbd..d5ac36069 100644 --- a/packages/oruga/src/components/tooltip/Tooltip.vue +++ b/packages/oruga/src/components/tooltip/Tooltip.vue @@ -354,17 +354,17 @@ const contentClasses = defineClasses(