Disable mouseenter/mouseleave for touch devices

This commit is contained in:
Valentin Silyutin
2025-09-22 12:55:07 +04:00
parent f17d3523cb
commit dde1b4f94e

View File

@@ -8,6 +8,8 @@ const attributeToOption = (attribute) => {
return attribute.charAt(0).toLowerCase() + attribute.slice(1);
};
const isTouchDevice = () => 'ontouchstart' in window || navigator.maxTouchPoints > 0;
export const createTooltip = ($el, content, options) => {
options = {
animation: [
@@ -414,11 +416,13 @@ export const createTooltip = ($el, content, options) => {
for (const trigger of options.trigger.split(' ')) {
switch (trigger) {
case 'mouseenter': {
$el.addEventListener('mouseenter', $el._tooltip.mouseEnterListener);
listeners.push({ el: $el, event: 'mouseenter', listener: $el._tooltip.mouseEnterListener });
if (!isTouchDevice()) {
$el.addEventListener('mouseenter', $el._tooltip.mouseEnterListener);
listeners.push({ el: $el, event: 'mouseenter', listener: $el._tooltip.mouseEnterListener });
$el.addEventListener('mouseleave', $el._tooltip.mouseLeaveListener);
listeners.push({ el: $el, event: 'mouseleave', listener: $el._tooltip.mouseLeaveListener });
$el.addEventListener('mouseleave', $el._tooltip.mouseLeaveListener);
listeners.push({ el: $el, event: 'mouseleave', listener: $el._tooltip.mouseLeaveListener });
}
break;
}
case 'click': {