diff --git a/packages/vuetify/src/composables/directiveComponent.ts b/packages/vuetify/src/composables/directiveComponent.ts index 11d1c8af9bc..4e092d3be00 100644 --- a/packages/vuetify/src/composables/directiveComponent.ts +++ b/packages/vuetify/src/composables/directiveComponent.ts @@ -22,10 +22,11 @@ export const useDirectiveComponent = ( return { mounted (el: HTMLElement, binding: DirectiveBinding, vnode: VNode) { - const { value } = binding + const text = binding.value?.text ?? binding.value + const value = Object(binding.value) === binding.value ? binding.value : undefined // Get the children from the props or directive value, or the element's children - const children = props.text || value.text || el.innerHTML + const children = () => text || el.innerHTML // If vnode.ctx is the same as the instance, then we're bound to a plain element // and need to find the nearest parent component instance to inherit provides from diff --git a/packages/vuetify/src/directives/index.ts b/packages/vuetify/src/directives/index.ts index 1003d5b3e1c..54dc6a234aa 100644 --- a/packages/vuetify/src/directives/index.ts +++ b/packages/vuetify/src/directives/index.ts @@ -6,3 +6,4 @@ export { Resize } from './resize' export { Ripple } from './ripple' export { Scroll } from './scroll' export { Touch } from './touch' +export { Tooltip } from './tooltip' diff --git a/packages/vuetify/src/directives/tooltip/index.ts b/packages/vuetify/src/directives/tooltip/index.ts new file mode 100644 index 00000000000..cba08ae6473 --- /dev/null +++ b/packages/vuetify/src/directives/tooltip/index.ts @@ -0,0 +1,11 @@ +// Components +import { VTooltip } from '@/components/VTooltip' + +// Composables +import { useDirectiveComponent } from '@/composables/directiveComponent' + +export const Tooltip = useDirectiveComponent(VTooltip, { + activator: 'parent', +}) + +export default Tooltip