From dc951ff69dd15dc942e5c61edb6bc0a5a516c89b Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Wed, 2 Aug 2023 22:16:31 +0200 Subject: [PATCH] fix(Popover): handle `hover` mode with padding like dropdown --- src/runtime/components/overlays/Popover.vue | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/runtime/components/overlays/Popover.vue b/src/runtime/components/overlays/Popover.vue index cd5e975d..5829da68 100644 --- a/src/runtime/components/overlays/Popover.vue +++ b/src/runtime/components/overlays/Popover.vue @@ -15,7 +15,7 @@ -
+
@@ -80,7 +80,7 @@ export default defineComponent({ const ui = computed>(() => defu({}, props.ui, appConfig.ui.popover)) - const popper = computed(() => defu({}, props.popper, ui.value.popper as PopperOptions)) + const popper = computed(() => defu(props.mode === 'hover' ? { offsetDistance: 0 } : {}, props.popper, ui.value.popper as PopperOptions)) const [trigger, container] = usePopper(popper.value) @@ -100,6 +100,12 @@ export default defineComponent({ popoverApi.value = popoverProvidesSymbols.length && popoverProvides[popoverProvidesSymbols[0]] }) + const containerStyle = computed(() => { + const offsetDistance = (props.popper as PopperOptions)?.offsetDistance || (ui.value.popper as PopperOptions)?.offsetDistance || 8 + + return props.mode === 'hover' ? { paddingTop: `${offsetDistance}px`, paddingBottom: `${offsetDistance}px` } : {} + }) + function onMouseOver () { if (props.mode !== 'hover' || !popoverApi.value) { return @@ -146,6 +152,7 @@ export default defineComponent({ popover, trigger, container, + containerStyle, onMouseOver, onMouseLeave }