From 661b6c90ac12f8f43bdf935fe39811fee5dcffc7 Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Wed, 2 Oct 2024 17:43:02 +0800 Subject: feat: add checked/unchecked state for block menu item also, prevent menu got erased by className --- src/dumbymap.mjs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/dumbymap.mjs') diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs index 7e04501..b909fe0 100644 --- a/src/dumbymap.mjs +++ b/src/dumbymap.mjs @@ -461,7 +461,12 @@ export const generateMaps = (container, { delay, mapCallback }) => { const menu = document.createElement('div') menu.className = 'menu' menu.style.display = 'none' - menu.onclick = () => (menu.style.display = 'none') + menu.onclick = (e) => { + const keepMenu = e.target.closest('.keep-menu') || e.target.classList.contains('.keep-menu') + if (keepMenu) return + + menu.style.display = 'none' + } container.appendChild(menu) // Menu Items @@ -505,6 +510,9 @@ export const generateMaps = (container, { delay, mapCallback }) => { // Remove menu when click outside const actionOutsideMenu = e => { if (menu.style.display === 'none') return + const keepMenu = e.target.closest('.keep-menu') || e.target.classList.contains('.keep-menu') + if (keepMenu) return + const rect = menu.getBoundingClientRect() if ( e.clientX < rect.left || -- cgit v1.2.3-70-g09d2