diff options
author | Hsieh Chin Fan <pham@topo.tw> | 2024-10-02 17:43:02 +0800 |
---|---|---|
committer | Hsieh Chin Fan <pham@topo.tw> | 2024-10-02 19:03:10 +0800 |
commit | 661b6c90ac12f8f43bdf935fe39811fee5dcffc7 (patch) | |
tree | de9facd7e82d6aafbac393f6b51880b31b552419 /src/dumbymap.mjs | |
parent | 045e55ce0547544e064f09f87bd1f75d7fa088b0 (diff) |
feat: add checked/unchecked state for block menu item
also, prevent menu got erased by className
Diffstat (limited to 'src/dumbymap.mjs')
-rw-r--r-- | src/dumbymap.mjs | 10 |
1 files changed, 9 insertions, 1 deletions
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 }) => { | |||
461 | const menu = document.createElement('div') | 461 | const menu = document.createElement('div') |
462 | menu.className = 'menu' | 462 | menu.className = 'menu' |
463 | menu.style.display = 'none' | 463 | menu.style.display = 'none' |
464 | menu.onclick = () => (menu.style.display = 'none') | 464 | menu.onclick = (e) => { |
465 | const keepMenu = e.target.closest('.keep-menu') || e.target.classList.contains('.keep-menu') | ||
466 | if (keepMenu) return | ||
467 | |||
468 | menu.style.display = 'none' | ||
469 | } | ||
465 | container.appendChild(menu) | 470 | container.appendChild(menu) |
466 | 471 | ||
467 | // Menu Items | 472 | // Menu Items |
@@ -505,6 +510,9 @@ export const generateMaps = (container, { delay, mapCallback }) => { | |||
505 | // Remove menu when click outside | 510 | // Remove menu when click outside |
506 | const actionOutsideMenu = e => { | 511 | const actionOutsideMenu = e => { |
507 | if (menu.style.display === 'none') return | 512 | if (menu.style.display === 'none') return |
513 | const keepMenu = e.target.closest('.keep-menu') || e.target.classList.contains('.keep-menu') | ||
514 | if (keepMenu) return | ||
515 | |||
508 | const rect = menu.getBoundingClientRect() | 516 | const rect = menu.getBoundingClientRect() |
509 | if ( | 517 | if ( |
510 | e.clientX < rect.left || | 518 | e.clientX < rect.left || |