From 9d5ed83f5b110b58a9a5572807afda467ad05770 Mon Sep 17 00:00:00 2001 From: Valentin Silyutin Date: Mon, 19 Jan 2026 13:02:50 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20?= =?UTF-8?q?=D1=81=D0=BE=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9=20mouseenter/m?= =?UTF-8?q?ouseleave=20=D0=BD=D0=B0=20=D1=82=D0=B0=D1=87-=D1=83=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B9=D1=81=D1=82=D0=B2=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.js | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/index.js b/index.js index 9d3624f..b76a7bf 100644 --- a/index.js +++ b/index.js @@ -400,16 +400,26 @@ export const createTooltip = ($el, content, options) => { } }; - $el._tooltip.mouseEnterListener = () => { + $el._tooltip.mouseEnterListener = (event) => { + if (event.pointerType !== 'mouse') { + return; + } $el._tooltip.show(); }; - $el._tooltip.mouseLeaveListener = ({ relatedTarget }) => { - if (options.interactive && relatedTarget && $el._tooltip.$tooltip?.contains(relatedTarget)) { + $el._tooltip.mouseLeaveListener = (event) => { + if (event.pointerType !== 'mouse') { + return; + } + + if (options.interactive && event.relatedTarget && $el._tooltip.$tooltip?.contains(event.relatedTarget)) { $el._tooltip.$tooltip.addEventListener( - 'mouseleave', - ({ relatedTarget }) => { - if (!relatedTarget || !$el.contains(relatedTarget)) { + 'pointerleave', + (event) => { + if (event.pointerType !== 'mouse') { + return; + } + if (!event.relatedTarget || !$el.contains(event.relatedTarget)) { $el._tooltip.hide(); } }, @@ -432,11 +442,11 @@ 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 }); + $el.addEventListener('pointerenter', $el._tooltip.mouseEnterListener); + listeners.push({ el: $el, event: 'pointerenter', listener: $el._tooltip.mouseEnterListener }); - $el.addEventListener('mouseleave', $el._tooltip.mouseLeaveListener); - listeners.push({ el: $el, event: 'mouseleave', listener: $el._tooltip.mouseLeaveListener }); + $el.addEventListener('pointerleave', $el._tooltip.mouseLeaveListener); + listeners.push({ el: $el, event: 'pointerleave', listener: $el._tooltip.mouseLeaveListener }); break; } case 'click': { @@ -444,8 +454,8 @@ export const createTooltip = ($el, content, options) => { listeners.push({ el: $el, event: 'click', listener: $el._tooltip.clickListener }); if (!options.interactive) { - $el.addEventListener('mouseleave', $el._tooltip.mouseLeaveListener); - listeners.push({ el: $el, event: 'mouseleave', listener: $el._tooltip.mouseLeaveListener }); + $el.addEventListener('pointerleave', $el._tooltip.mouseLeaveListener); + listeners.push({ el: $el, event: 'pointerleave', listener: $el._tooltip.mouseLeaveListener }); } break; }