From 9b63f38ceb03e7b854b3cc603ac0c9bfef3a3874 Mon Sep 17 00:00:00 2001 From: Dusan Kosanovic Date: Mon, 1 Dec 2025 14:38:41 +0100 Subject: [PATCH 01/10] [MWPW-184575] - tooltip fix --- libs/scripts/tooltip.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/libs/scripts/tooltip.js b/libs/scripts/tooltip.js index b7f1d70c2c5..07af9ac650f 100644 --- a/libs/scripts/tooltip.js +++ b/libs/scripts/tooltip.js @@ -70,24 +70,16 @@ function setTooltipPosition(tooltips) { }); } -export default function addTooltipListeners(ownerElement) { - ownerElement?.addEventListener('click', () => { - ownerElement.classList.add('hide-tooltip'); - }); +export default function addTooltipListeners() { ['keydown', 'mouseenter', 'focus', 'mouseleave', 'blur'].forEach((eventType) => { document.addEventListener(eventType, (event) => { - if (ownerElement && !ownerElement.classList.contains('hide-tooltip') - && eventType === 'keydown' && event.key === 'Escape') { - ownerElement.classList.add('hide-tooltip'); - } - const isTooltip = event.target?.matches?.('.milo-tooltip'); if (!isTooltip) return; if (['mouseenter', 'focus'].includes(eventType)) { - event.target.classList.remove('hide-tooltip'); setTooltipPosition([event.target]); - } else if (['mouseleave', 'blur'].includes(eventType)) { + event.target.classList.remove('hide-tooltip'); + } else if (['mouseleave', 'blur'].includes(eventType) || event.key === 'Escape') { event.target.classList.add('hide-tooltip'); } }, true); From ee5582d83fd6560a21f968b2b7c3c1a8059b5f1c Mon Sep 17 00:00:00 2001 From: Dusan Kosanovic Date: Mon, 1 Dec 2025 14:42:56 +0100 Subject: [PATCH 02/10] [MWPW-184575] - tooltip fix --- libs/scripts/tooltip.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/scripts/tooltip.js b/libs/scripts/tooltip.js index 07af9ac650f..77cd0a57df6 100644 --- a/libs/scripts/tooltip.js +++ b/libs/scripts/tooltip.js @@ -77,8 +77,8 @@ export default function addTooltipListeners() { if (!isTooltip) return; if (['mouseenter', 'focus'].includes(eventType)) { - setTooltipPosition([event.target]); event.target.classList.remove('hide-tooltip'); + setTooltipPosition([event.target]); } else if (['mouseleave', 'blur'].includes(eventType) || event.key === 'Escape') { event.target.classList.add('hide-tooltip'); } From 683780d9b0686e8ecca9d0b952c9c4c4aee0e027 Mon Sep 17 00:00:00 2001 From: Dusan Kosanovic Date: Mon, 1 Dec 2025 15:08:35 +0100 Subject: [PATCH 03/10] [MWPW-184575] - tooltip fix --- libs/scripts/tooltip.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libs/scripts/tooltip.js b/libs/scripts/tooltip.js index 77cd0a57df6..368606687f9 100644 --- a/libs/scripts/tooltip.js +++ b/libs/scripts/tooltip.js @@ -74,13 +74,17 @@ export default function addTooltipListeners() { ['keydown', 'mouseenter', 'focus', 'mouseleave', 'blur'].forEach((eventType) => { document.addEventListener(eventType, (event) => { const isTooltip = event.target?.matches?.('.milo-tooltip'); - if (!isTooltip) return; + if (!isTooltip && eventType !== 'keydown') return; if (['mouseenter', 'focus'].includes(eventType)) { event.target.classList.remove('hide-tooltip'); setTooltipPosition([event.target]); - } else if (['mouseleave', 'blur'].includes(eventType) || event.key === 'Escape') { + } else if (['mouseleave', 'blur'].includes(eventType)) { event.target.classList.add('hide-tooltip'); + } else if (eventType === 'keydown' && event.key === 'Escape') { + const tooltip = document.querySelector('.milo-tooltip:not(.hide-tooltip)'); + tooltip?.classList.add('hide-tooltip'); + tooltip?.blur(); } }, true); }); From 66fa3ab195acc5dac10b9efc5c493ea3903d4660 Mon Sep 17 00:00:00 2001 From: Dusan Kosanovic Date: Mon, 1 Dec 2025 15:17:24 +0100 Subject: [PATCH 04/10] [MWPW-184575] - tooltip fix --- libs/scripts/tooltip.js | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/scripts/tooltip.js b/libs/scripts/tooltip.js index 368606687f9..c44b94ea263 100644 --- a/libs/scripts/tooltip.js +++ b/libs/scripts/tooltip.js @@ -84,7 +84,6 @@ export default function addTooltipListeners() { } else if (eventType === 'keydown' && event.key === 'Escape') { const tooltip = document.querySelector('.milo-tooltip:not(.hide-tooltip)'); tooltip?.classList.add('hide-tooltip'); - tooltip?.blur(); } }, true); }); From 8ee259a7a97e4910eb718f922c1ecffc603f7b90 Mon Sep 17 00:00:00 2001 From: Dusan Kosanovic Date: Wed, 3 Dec 2025 12:53:24 +0100 Subject: [PATCH 05/10] [MWPW-184575] - tooltip fix --- libs/scripts/tooltip.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/scripts/tooltip.js b/libs/scripts/tooltip.js index c44b94ea263..261e8099bbd 100644 --- a/libs/scripts/tooltip.js +++ b/libs/scripts/tooltip.js @@ -71,7 +71,7 @@ function setTooltipPosition(tooltips) { } export default function addTooltipListeners() { - ['keydown', 'mouseenter', 'focus', 'mouseleave', 'blur'].forEach((eventType) => { + ['keydown', 'mouseenter', 'focus', 'mouseleave', 'blur', 'click'].forEach((eventType) => { document.addEventListener(eventType, (event) => { const isTooltip = event.target?.matches?.('.milo-tooltip'); if (!isTooltip && eventType !== 'keydown') return; @@ -79,11 +79,13 @@ export default function addTooltipListeners() { if (['mouseenter', 'focus'].includes(eventType)) { event.target.classList.remove('hide-tooltip'); setTooltipPosition([event.target]); - } else if (['mouseleave', 'blur'].includes(eventType)) { + } else if (['mouseleave', 'blur', 'click'].includes(eventType)) { event.target.classList.add('hide-tooltip'); + event.target.blur(); } else if (eventType === 'keydown' && event.key === 'Escape') { const tooltip = document.querySelector('.milo-tooltip:not(.hide-tooltip)'); tooltip?.classList.add('hide-tooltip'); + tooltip?.blur(); } }, true); }); From 7749f2e26664569e38261e57bc355d565a551dea Mon Sep 17 00:00:00 2001 From: Dusan Kosanovic Date: Wed, 3 Dec 2025 16:07:45 +0100 Subject: [PATCH 06/10] [MWPW-184575] - tooltip close on icon click --- libs/scripts/tooltip.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libs/scripts/tooltip.js b/libs/scripts/tooltip.js index 261e8099bbd..9ca2fe0318d 100644 --- a/libs/scripts/tooltip.js +++ b/libs/scripts/tooltip.js @@ -70,7 +70,10 @@ function setTooltipPosition(tooltips) { }); } -export default function addTooltipListeners() { +export default function addTooltipListeners(ownerElement) { + ownerElement?.addEventListener('click', () => { + if (ownerElement.querySelector('before')) ownerElement.classList.add('hide-tooltip'); + }); ['keydown', 'mouseenter', 'focus', 'mouseleave', 'blur', 'click'].forEach((eventType) => { document.addEventListener(eventType, (event) => { const isTooltip = event.target?.matches?.('.milo-tooltip'); From d8bc1028fe404929c0641f032ce4443e8eee33ae Mon Sep 17 00:00:00 2001 From: Dusan Kosanovic Date: Thu, 4 Dec 2025 13:39:06 +0100 Subject: [PATCH 07/10] [MWPW-184575] - tooltip touch and click use case --- libs/scripts/tooltip.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/scripts/tooltip.js b/libs/scripts/tooltip.js index 9ca2fe0318d..c1d9e014ba4 100644 --- a/libs/scripts/tooltip.js +++ b/libs/scripts/tooltip.js @@ -71,8 +71,10 @@ function setTooltipPosition(tooltips) { } export default function addTooltipListeners(ownerElement) { - ownerElement?.addEventListener('click', () => { - if (ownerElement.querySelector('before')) ownerElement.classList.add('hide-tooltip'); + ownerElement?.addEventListener('click', (e) => { + const isTouch = !!e.sourceCapabilities?.firesTouchEvents; + const isDisplayNone = window.getComputedStyle(ownerElement, '::before').getPropertyValue('display') === 'none'; + if (isTouch === isDisplayNone) ownerElement.classList.add('hide-tooltip'); }); ['keydown', 'mouseenter', 'focus', 'mouseleave', 'blur', 'click'].forEach((eventType) => { document.addEventListener(eventType, (event) => { From bf317efcbff25d8c05a928da4e834c653a838e36 Mon Sep 17 00:00:00 2001 From: Dusan Kosanovic Date: Thu, 4 Dec 2025 16:46:13 +0100 Subject: [PATCH 08/10] [MWPW-184575] - tooltip remove close on click --- libs/features/icons/icons.js | 2 +- libs/scripts/tooltip.js | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/libs/features/icons/icons.js b/libs/features/icons/icons.js index a7bac4d16c4..97e2d86a1cf 100644 --- a/libs/features/icons/icons.js +++ b/libs/features/icons/icons.js @@ -24,7 +24,7 @@ function decorateToolTip(icon, iconName) { wrapper.parentElement.replaceChild(icon, wrapper); import('../../scripts/tooltip.js').then(({ default: addTooltipListeners }) => { - addTooltipListeners(icon); + addTooltipListeners(); }); } diff --git a/libs/scripts/tooltip.js b/libs/scripts/tooltip.js index c1d9e014ba4..6b93e935ad1 100644 --- a/libs/scripts/tooltip.js +++ b/libs/scripts/tooltip.js @@ -70,13 +70,8 @@ function setTooltipPosition(tooltips) { }); } -export default function addTooltipListeners(ownerElement) { - ownerElement?.addEventListener('click', (e) => { - const isTouch = !!e.sourceCapabilities?.firesTouchEvents; - const isDisplayNone = window.getComputedStyle(ownerElement, '::before').getPropertyValue('display') === 'none'; - if (isTouch === isDisplayNone) ownerElement.classList.add('hide-tooltip'); - }); - ['keydown', 'mouseenter', 'focus', 'mouseleave', 'blur', 'click'].forEach((eventType) => { +export default function addTooltipListeners() { + ['keydown', 'mouseenter', 'focus', 'mouseleave', 'blur'].forEach((eventType) => { document.addEventListener(eventType, (event) => { const isTooltip = event.target?.matches?.('.milo-tooltip'); if (!isTooltip && eventType !== 'keydown') return; @@ -84,7 +79,7 @@ export default function addTooltipListeners(ownerElement) { if (['mouseenter', 'focus'].includes(eventType)) { event.target.classList.remove('hide-tooltip'); setTooltipPosition([event.target]); - } else if (['mouseleave', 'blur', 'click'].includes(eventType)) { + } else if (['mouseleave', 'blur'].includes(eventType)) { event.target.classList.add('hide-tooltip'); event.target.blur(); } else if (eventType === 'keydown' && event.key === 'Escape') { From d99b615479dcfdaca6f26fbaecfbd235afb04555 Mon Sep 17 00:00:00 2001 From: Dusan Kosanovic Date: Thu, 11 Dec 2025 11:03:15 +0100 Subject: [PATCH 09/10] [MWPW-184575] - tooltip remove blur --- libs/scripts/tooltip.js | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/scripts/tooltip.js b/libs/scripts/tooltip.js index 6b93e935ad1..368606687f9 100644 --- a/libs/scripts/tooltip.js +++ b/libs/scripts/tooltip.js @@ -81,7 +81,6 @@ export default function addTooltipListeners() { setTooltipPosition([event.target]); } else if (['mouseleave', 'blur'].includes(eventType)) { event.target.classList.add('hide-tooltip'); - event.target.blur(); } else if (eventType === 'keydown' && event.key === 'Escape') { const tooltip = document.querySelector('.milo-tooltip:not(.hide-tooltip)'); tooltip?.classList.add('hide-tooltip'); From 42a3cee71eaa9b1f03c7a6c65107e62f441672b9 Mon Sep 17 00:00:00 2001 From: Dusan Kosanovic Date: Fri, 12 Dec 2025 10:45:11 +0100 Subject: [PATCH 10/10] [MWPW-184575] - tooltip remove blur --- libs/scripts/tooltip.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libs/scripts/tooltip.js b/libs/scripts/tooltip.js index 368606687f9..4e2afc39bf6 100644 --- a/libs/scripts/tooltip.js +++ b/libs/scripts/tooltip.js @@ -82,9 +82,7 @@ export default function addTooltipListeners() { } else if (['mouseleave', 'blur'].includes(eventType)) { event.target.classList.add('hide-tooltip'); } else if (eventType === 'keydown' && event.key === 'Escape') { - const tooltip = document.querySelector('.milo-tooltip:not(.hide-tooltip)'); - tooltip?.classList.add('hide-tooltip'); - tooltip?.blur(); + document.querySelector('.milo-tooltip:not(.hide-tooltip)')?.classList.add('hide-tooltip'); } }, true); });