From dde1b4f94ed06a90b44a013f3c083de609c9391a Mon Sep 17 00:00:00 2001 From: Valentin Silyutin Date: Mon, 22 Sep 2025 12:55:07 +0400 Subject: [PATCH] Disable mouseenter/mouseleave for touch devices --- index.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 39c5917..a845f5a 100644 --- a/index.js +++ b/index.js @@ -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': {