diff --git a/docs/components/content/examples/PopoverExampleMode.vue b/docs/components/content/examples/PopoverExampleMode.vue
new file mode 100644
index 00000000..5b2a5977
--- /dev/null
+++ b/docs/components/content/examples/PopoverExampleMode.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
diff --git a/docs/content/6.overlays/3.popover.md b/docs/content/6.overlays/3.popover.md
index 7ff44ada..3e7899fe 100644
--- a/docs/content/6.overlays/3.popover.md
+++ b/docs/content/6.overlays/3.popover.md
@@ -28,6 +28,27 @@ links:
```
::
+### Mode
+
+Use the `mode` prop to switch between `click` and `hover` modes.
+
+::component-example
+#default
+:popover-example-mode
+#code
+```vue
+
+
+
+
+
+
+
+
+
+```
+::
+
## Props
:component-props
diff --git a/src/runtime/components/overlays/Popover.vue b/src/runtime/components/overlays/Popover.vue
index 3a2c90a1..cd5e975d 100644
--- a/src/runtime/components/overlays/Popover.vue
+++ b/src/runtime/components/overlays/Popover.vue
@@ -1,5 +1,5 @@
-
+
(null)
const popoverApi = ref(null)
let openTimeout: NodeJS.Timeout | null = null
let closeTimeout: NodeJS.Timeout | null = null
onMounted(() => {
- setTimeout(() => {
- // @ts-expect-error internals
- const popoverProvides = trigger.value?.$.provides
- if (!popoverProvides) {
- return
- }
- const popoverProvidesSymbols = Object.getOwnPropertySymbols(popoverProvides)
- popoverApi.value = popoverProvidesSymbols.length && popoverProvides[popoverProvidesSymbols[0]]
- }, 200)
+ const popoverProvides = popover.value?.$.provides
+ if (!popoverProvides) {
+ return
+ }
+ const popoverProvidesSymbols = Object.getOwnPropertySymbols(popoverProvides)
+ popoverApi.value = popoverProvidesSymbols.length && popoverProvides[popoverProvidesSymbols[0]]
})
function onMouseOver () {
@@ -145,6 +143,7 @@ export default defineComponent({
return {
// eslint-disable-next-line vue/no-dupe-keys
ui,
+ popover,
trigger,
container,
onMouseOver,