diff options
author | Hsieh Chin Fan <pham@topo.tw> | 2024-09-30 12:09:32 +0800 |
---|---|---|
committer | Hsieh Chin Fan <pham@topo.tw> | 2024-09-30 12:12:13 +0800 |
commit | 9d4032abf1ab33849a7cbc83d51411d73dc8a727 (patch) | |
tree | d762122bc3c597e776829850835059f204938666 /src/MenuItem.mjs | |
parent | c0b1b2b030782e64ac076fb4c592501a969caa2b (diff) |
feat: improve actions in sub-menu
* scroll to focus map/block
* refactor methods in dumbyUtils
* refactor MutationObserver for map
Diffstat (limited to 'src/MenuItem.mjs')
-rw-r--r-- | src/MenuItem.mjs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/MenuItem.mjs b/src/MenuItem.mjs index ac082b2..9830bf4 100644 --- a/src/MenuItem.mjs +++ b/src/MenuItem.mjs | |||
@@ -1,4 +1,5 @@ | |||
1 | import { createGeoLink } from './dumbymap'; | 1 | import { createGeoLink } from './dumbymap'; |
2 | import { scrollToBlock } from './dumbyUtils'; | ||
2 | 3 | ||
3 | class Item { | 4 | class Item { |
4 | constructor({ text, innerHTML, onclick }) { | 5 | constructor({ text, innerHTML, onclick }) { |
@@ -55,7 +56,10 @@ export const pickMapItem = dumbymap => | |||
55 | map => | 56 | map => |
56 | new Item({ | 57 | new Item({ |
57 | text: map.id, | 58 | text: map.id, |
58 | onclick: () => map.classList.add('focus'), | 59 | onclick: () => { |
60 | map.classList.add('focus'); | ||
61 | map.scrollIntoView({ behavior: 'smooth' }); | ||
62 | }, | ||
59 | }).element, | 63 | }).element, |
60 | ), | 64 | ), |
61 | }).element; | 65 | }).element; |
@@ -66,8 +70,15 @@ export const pickBlockItem = dumbymap => | |||
66 | items: dumbymap.blocks.map( | 70 | items: dumbymap.blocks.map( |
67 | (block, index) => | 71 | (block, index) => |
68 | new Item({ | 72 | new Item({ |
69 | text: `Block ${index}`, | 73 | text: |
70 | onclick: () => block.classList.add('focus'), | 74 | block |
75 | .querySelector('p') | ||
76 | ?.textContent.substring(0, 20) | ||
77 | .concat(' ...') ?? `Block ${index}`, | ||
78 | onclick: () => { | ||
79 | block.classList.add('focus'); | ||
80 | scrollToBlock(block); | ||
81 | }, | ||
71 | }).element, | 82 | }).element, |
72 | ), | 83 | ), |
73 | }).element; | 84 | }).element; |