diff --git a/src/runtime/components/Popover.vue b/src/runtime/components/Popover.vue index 31339106..ae00c670 100644 --- a/src/runtime/components/Popover.vue +++ b/src/runtime/components/Popover.vue @@ -31,6 +31,11 @@ export interface PopoverProps extends PopoverRootProps, Pick } @@ -64,6 +69,17 @@ const slots = defineSlots() const pick = props.mode === 'hover' ? reactivePick(props, 'defaultOpen', 'open', 'openDelay', 'closeDelay') : reactivePick(props, 'defaultOpen', 'open', 'modal') const rootProps = useForwardPropsEmits(pick, emits) const contentProps = toRef(() => defu(props.content, { side: 'bottom', sideOffset: 8 }) as PopoverContentProps) +const contentEvents = computed(() => { + if (props.preventClose) { + return { + pointerDownOutside: (e: Event) => e.preventDefault(), + interactOutside: (e: Event) => e.preventDefault(), + escapeKeyDown: (e: Event) => e.preventDefault() + } + } + + return {} +}) const arrowProps = toRef(() => props.arrow as PopoverArrowProps) // eslint-disable-next-line vue/no-dupe-keys @@ -81,7 +97,7 @@ const Component = computed(() => props.mode === 'hover' ? HoverCard : Popover) - +