feat: replace native titles with global vue tooltips

This commit is contained in:
2026-03-04 04:30:38 +00:00
parent b5a79f8dbe
commit 27fee3ac34
12 changed files with 237 additions and 33 deletions

28
src/directives/tooltip.js Normal file
View File

@@ -0,0 +1,28 @@
import { showTooltip, hideTooltip, tooltipState } from '../composables/useTooltip'
export const tooltipDirective = {
mounted(el, binding) {
el._tooltipText = binding.value;
el.addEventListener('mouseenter', () => showTooltip(el, el._tooltipText));
el.addEventListener('mouseleave', hideTooltip);
el.addEventListener('focus', () => showTooltip(el, el._tooltipText));
el.addEventListener('blur', hideTooltip);
},
updated(el, binding) {
el._tooltipText = binding.value;
if (tooltipState.isVisible && tooltipState.text !== binding.value) {
if (el.matches(':hover') || document.activeElement === el) {
showTooltip(el, binding.value);
}
}
},
unmounted(el) {
el.removeEventListener('mouseenter', () => showTooltip(el, el._tooltipText));
el.removeEventListener('mouseleave', hideTooltip);
el.removeEventListener('focus', () => showTooltip(el, el._tooltipText));
el.removeEventListener('blur', hideTooltip);
hideTooltip();
}
};