aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/MenuItem.mjs6
-rw-r--r--src/css/dumbymap.css2
-rw-r--r--src/dumbyUtils.mjs2
-rw-r--r--src/dumbymap.mjs13
4 files changed, 17 insertions, 6 deletions
diff --git a/src/MenuItem.mjs b/src/MenuItem.mjs
index 8b54539..cffd4a7 100644
--- a/src/MenuItem.mjs
+++ b/src/MenuItem.mjs
@@ -355,7 +355,11 @@ export const toggleBlockFocus = block =>
355export const toggleMapFocus = map => 355export const toggleMapFocus = map =>
356 new Item({ 356 new Item({
357 text: 'Toggle Focus', 357 text: 'Toggle Focus',
358 onclick: () => map.classList.toggle('focus'), 358 onclick: () => {
359 if (map.classList.toggle('focus')) {
360 map.classList.add('focus-manual')
361 }
362 },
359 }) 363 })
360 364
361/** 365/**
diff --git a/src/css/dumbymap.css b/src/css/dumbymap.css
index 4a7bf4f..fe6c0d7 100644
--- a/src/css/dumbymap.css
+++ b/src/css/dumbymap.css
@@ -68,7 +68,7 @@ a[href^='http']:not(:has(img))::after,
68 68
69 transition: flex-basis 300ms ease-in-out; 69 transition: flex-basis 300ms ease-in-out;
70 70
71 &.focus::after { 71 &.focus.focus-manual::after {
72 content: 'Map-ID: ' attr(id); 72 content: 'Map-ID: ' attr(id);
73 padding: 0.3rem 0.5rem; 73 padding: 0.3rem 0.5rem;
74 74
diff --git a/src/dumbyUtils.mjs b/src/dumbyUtils.mjs
index 8148366..170cb16 100644
--- a/src/dumbyUtils.mjs
+++ b/src/dumbyUtils.mjs
@@ -12,7 +12,7 @@ export function focusNextMap (reverse = false) {
12 const nextIndex = (index + (reverse ? -1 : 1)) % renderedList.length 12 const nextIndex = (index + (reverse ? -1 : 1)) % renderedList.length
13 13
14 const nextMap = renderedList.at(nextIndex) 14 const nextMap = renderedList.at(nextIndex)
15 nextMap.classList.add('focus') 15 nextMap.classList.add('focus', 'focus-manual')
16 nextMap.scrollIntoView({ behavior: 'smooth' }) 16 nextMap.scrollIntoView({ behavior: 'smooth' })
17} 17}
18 18
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs
index b01c73e..35a4614 100644
--- a/src/dumbymap.mjs
+++ b/src/dumbymap.mjs
@@ -173,7 +173,7 @@ export const generateMaps = (container, { layouts = [], delay, renderCallback }
173 * mapFocusObserver. observe for map focus 173 * mapFocusObserver. observe for map focus
174 * @return {MutationObserver} observer 174 * @return {MutationObserver} observer
175 */ 175 */
176 const mapFocusObserver = () => 176 const mapClassObserver = () =>
177 new window.MutationObserver(mutations => { 177 new window.MutationObserver(mutations => {
178 const mutation = mutations.at(-1) 178 const mutation = mutations.at(-1)
179 const target = mutation.target 179 const target = mutation.target
@@ -191,6 +191,13 @@ export const generateMaps = (container, { layouts = [], delay, renderCallback }
191 .renderedMaps() 191 .renderedMaps()
192 .filter(map => map.id !== target.id) 192 .filter(map => map.id !== target.id)
193 .forEach(map => map.classList.remove('focus')) 193 .forEach(map => map.classList.remove('focus'))
194
195 if (target.classList.contains('focus-manual')) {
196 setTimeout(
197 () => target.classList.remove('focus-manual'),
198 2000,
199 )
200 }
194 } 201 }
195 202
196 if (shouldBeInShowcase) { 203 if (shouldBeInShowcase) {
@@ -304,7 +311,7 @@ export const generateMaps = (container, { layouts = [], delay, renderCallback }
304 renderCallback?.(renderer) 311 renderCallback?.(renderer)
305 312
306 // Work with Mutation Observer 313 // Work with Mutation Observer
307 const observer = mapFocusObserver() 314 const observer = mapClassObserver()
308 observer.observe(mapElement, { 315 observer.observe(mapElement, {
309 attributes: true, 316 attributes: true,
310 attributeFilter: ['class'], 317 attributeFilter: ['class'],
@@ -511,4 +518,4 @@ export const generateMaps = (container, { layouts = [], delay, renderCallback }
511 ) 518 )
512 519
513 return Object.seal(dumbymap) 520 return Object.seal(dumbymap)
514} \ No newline at end of file 521}