-
-
Notifications
You must be signed in to change notification settings - Fork 7.1k
fix: #22345 V-tooltip directive null or false value #22347
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
| export const Tooltip = useDirectiveComponent<TooltipDirectiveBinding>(VTooltip, binding => { | ||
| return { | ||
| activator: 'parent', | ||
| activator: (binding.value === null || binding.value === false) ? null : 'parent', |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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': nullor(typeof binding.value === 'undefined' || binding.value === true) ? 'parent': null
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
arggg: add a comment ;)
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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',
//...
}There was a problem hiding this comment.
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',
//...
}
Description
Fixes #22345
Disables activator when
value === nullorvalue === false, undefined is intentional, but at least this will give users a way to not show the tooltip conditionally