diff --git a/playground/main.ts b/playground/main.ts index a56d57b..b008de1 100644 --- a/playground/main.ts +++ b/playground/main.ts @@ -8,6 +8,7 @@ import App from './App.vue' import PageIndex from './pages/Index.vue' import PageNestedComponents from './pages/NestedComponents.vue' import PageSingletonComponents from './pages/SingletonComponents.vue' +import Testing from './pages/Testing.vue' import Counter from './components/Counter.vue' import UiIcon from "./components/Icon.vue"; @@ -17,6 +18,7 @@ const router = createRouter({ { path: '/', component: PageIndex }, { path: '/nested-components', component: PageNestedComponents }, { path: '/singleton-components', component: PageSingletonComponents }, + { path: '/testing', component: Testing }, ] }) diff --git a/playground/pages/Testing.vue b/playground/pages/Testing.vue new file mode 100644 index 0000000..4dc5b19 --- /dev/null +++ b/playground/pages/Testing.vue @@ -0,0 +1,53 @@ + + + \ No newline at end of file diff --git a/src/composables/index.ts b/src/composables/index.ts index 6897c6f..ef59a31 100644 --- a/src/composables/index.ts +++ b/src/composables/index.ts @@ -1,2 +1,3 @@ export { useTippy } from './useTippy' +export { useTippyComponent } from './useTippyComponent' export { useSingleton } from './useSingleton' diff --git a/src/composables/useTippyComponent.ts b/src/composables/useTippyComponent.ts new file mode 100644 index 0000000..fa62c9f --- /dev/null +++ b/src/composables/useTippyComponent.ts @@ -0,0 +1,25 @@ +import { h, ref } from 'vue' +import { TippyOptions } from '../types' +import TippyComponent from './../components/Tippy' + +export function useTippyComponent( + opts: TippyOptions = {}, + children?: any +) { + const instance = ref() + + return { + instance, + TippyComponent: h( + TippyComponent, + { + ...opts, + onVnodeMounted: vnode => { + //@ts-ignore + instance.value = vnode.component.ctx + }, + }, + children + ), + } +} diff --git a/src/index.ts b/src/index.ts index 4b4cdf5..0f97178 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,6 +12,7 @@ import directive from './directive' import plugin from './plugin' import { useTippy } from './composables/useTippy' +import { useTippyComponent } from './composables/useTippyComponent' import { useSingleton } from './composables/useSingleton' const setDefaultProps = tippy.setDefaultProps @@ -23,6 +24,7 @@ setDefaultProps({ export { useTippy, + useTippyComponent, roundArrow, tippy, useSingleton,