From 1864a33d95e5d1ce4b24d50eaa345e721dc69b28 Mon Sep 17 00:00:00 2001 From: Anatoliy Tsaryov Date: Tue, 7 Oct 2025 03:25:28 +0400 Subject: [PATCH 1/7] feat(Popover): add close prop to Popover slots --- docs/content/docs/2.components/popover.md | 6 +++++ src/runtime/components/Popover.vue | 32 ++++++++++++++++++----- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/docs/content/docs/2.components/popover.md b/docs/content/docs/2.components/popover.md index 2d911808ef..da483c38ba 100644 --- a/docs/content/docs/2.components/popover.md +++ b/docs/content/docs/2.components/popover.md @@ -237,6 +237,12 @@ name: 'popover-anchor-slot-example' :component-slots +::note +`close` is only available when using the `click` mode due to Reka UI having it only for the [ +`Popover`](https://reka-ui.com/docs/components/popover#close-using-slot-props) but not the [ +`HoverCard`](https://reka-ui.com/docs/components/hover-card). +:: + ### Emits :component-emits diff --git a/src/runtime/components/Popover.vue b/src/runtime/components/Popover.vue index 31e3ce8808..b7e0b064a8 100644 --- a/src/runtime/components/Popover.vue +++ b/src/runtime/components/Popover.vue @@ -48,9 +48,27 @@ export interface PopoverEmits extends PopoverRootEmits { } export interface PopoverSlots { - default(props: { open: boolean }): any - content(props?: {}): any - anchor(props?: {}): any + default(props: { + open: boolean + /** + * Available only with mode 'click' + */ + close?: () => void + }): any + + content(props: { + /** + * Available only with mode 'click' + */ + close?: () => void + }): any + + anchor(props: { + /** + * Available only with mode 'click' + */ + close?: () => void + }): any } @@ -106,18 +124,18 @@ const Component = computed(() => props.mode === 'hover' ? HoverCard : Popover)