diff --git a/packages/bootstrap-vue-next/src/components/BPopover/BPopover.vue b/packages/bootstrap-vue-next/src/components/BPopover/BPopover.vue index e7ec7e24a..851f8a411 100644 --- a/packages/bootstrap-vue-next/src/components/BPopover/BPopover.vue +++ b/packages/bootstrap-vue-next/src/components/BPopover/BPopover.vue @@ -7,7 +7,7 @@ >
({position: 'absolute'}) watch(middlewareData, (newValue) => { if (props.noHide === false) { - hidden.value = !!newValue.hide?.referenceHidden - if (showRef.value && props.closeOnHide && hidden.value && !props.noAutoClose && !props.manual) { - throttleHide('close-on-hide') + if (newValue.hide?.referenceHidden && !hidden.value && showRef.value) { + if (props.closeOnHide && !props.noAutoClose && !props.manual) { + throttleHide('close-on-hide') + } else { + localTemporaryHide.value = true + hidden.value = true + } + } else if (localTemporaryHide.value && !newValue.hide?.referenceHidden) { + localTemporaryHide.value = false + hidden.value = false } } if (newValue.arrow) { @@ -306,6 +313,7 @@ const { contentShowing, isVisible, renderRef, + localTemporaryHide, } = useShowHide(modelValue, props, emit as EmitFn, element, computedId, { showFn: () => { if (hidden.value) { diff --git a/packages/bootstrap-vue-next/src/composables/useShowHide.ts b/packages/bootstrap-vue-next/src/composables/useShowHide.ts index 9575611d9..4f7878889 100644 --- a/packages/bootstrap-vue-next/src/composables/useShowHide.ts +++ b/packages/bootstrap-vue-next/src/composables/useShowHide.ts @@ -82,6 +82,7 @@ export const useShowHide = ( }) const localNoAnimation = ref(initialShow) + const localTemporaryHide = ref(false) const computedNoAnimation = computed( () => props.noAnimation || props.noFade || localNoAnimation.value || false ) @@ -284,6 +285,9 @@ export const useShowHide = ( localNoAnimation.value = false }) } + if (localTemporaryHide.value) { + localTemporaryHide.value = false + } } const onBeforeLeave = (el: Element) => { if (!isLeaving.value) isLeaving.value = true @@ -307,12 +311,13 @@ export const useShowHide = ( }) } requestAnimationFrame(() => { - renderRef.value = false + if (!localTemporaryHide.value) renderRef.value = false }) } const contentShowing = computed( () => + localTemporaryHide.value === true || isActive.value === true || props.lazy === false || (props.lazy === true && lazyLoadCompleted.value === true && props.unmountLazy === false) @@ -350,6 +355,7 @@ export const useShowHide = ( buildTriggerableEvent, computedNoAnimation, localNoAnimation, + localTemporaryHide, isLeaving, transitionProps: { ...fadeBaseTransitionProps,