Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/vuetify/src/directives/tooltip/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export interface TooltipDirectiveBinding extends Omit<DirectiveBinding<string>,

export const Tooltip = useDirectiveComponent<TooltipDirectiveBinding>(VTooltip, binding => {
return {
activator: 'parent',
activator: (binding.value === null || binding.value === false) ? null : 'parent',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cannot be simplified to this? binding.value ? 'parent' : null

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was intentional, the default behaviors is that if you don't pass a value the tooltip will use whatever value the component has so if you have a button that says 'hello' the tooltip will also say 'hello'

I wanted to leave a way for that behavior to still work. But if you intentionally did not want to show it you could pass null or false

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add a comment or maybe change it to (anyone just checking the code can change it):

  • (binding.value === undefined || binding.value === true) ? 'parent': null or
  • (typeof binding.value === 'undefined' || binding.value === true) ? 'parent': null

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arggg: add a comment ;)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can get undefined, null, boolean, string or object
I think we don't want to show the tooltip for false, null and the empty string.

Copy link
Contributor

@J-Sek J-Sek Nov 20, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Anyone against?

const textOrValue = isObject(binding.value) ? binding.value.text : binding.value
const disabled = ['', false, null].includes(textOrValue) // intentionally excluding undefined
return {
  activator: disabled ? null : 'parent',
  //...
}

Copy link
Contributor

@J-Sek J-Sek Nov 20, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to avoid showing [Object object] when there is no text field (e.g. v-tooltip='{}').

const disabled = isObject(binding.value)
  ? !binding.value.text
  : ['', false, null].includes(binding.value) // undefined means true
return {
  activator: disabled ? null : 'parent',
  //...
}

location: binding.arg?.replace('-', ' '),
text: typeof binding.value === 'boolean' ? undefined : binding.value,
}
Expand Down