Skip to content

Commit 88a16d5

Browse files
committed
chore: cleanup timers and listeners
1 parent 75916f7 commit 88a16d5

File tree

1 file changed

+40
-7
lines changed

1 file changed

+40
-7
lines changed

app/pages/about.vue

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,40 @@ function onDocumentPointerDown(e: PointerEvent) {
145145
}
146146
}
147147
148-
onMounted(() => document.addEventListener('pointerdown', onDocumentPointerDown))
149-
onUnmounted(() => document.removeEventListener('pointerdown', onDocumentPointerDown))
148+
function onDocumentKeydown(e: KeyboardEvent) {
149+
if (e.key === 'Escape' && activeContributor.value) {
150+
activeContributor.value = null
151+
}
152+
}
153+
154+
function addListeners() {
155+
document.addEventListener('pointerdown', onDocumentPointerDown)
156+
document.addEventListener('keydown', onDocumentKeydown)
157+
}
158+
159+
function removeListeners() {
160+
document.removeEventListener('pointerdown', onDocumentPointerDown)
161+
document.removeEventListener('keydown', onDocumentKeydown)
162+
}
163+
164+
onMounted(() => {
165+
addListeners()
166+
})
167+
168+
onBeforeUnmount(() => {
169+
cancelClose()
170+
removeListeners()
171+
})
172+
173+
onActivated(() => {
174+
addListeners()
175+
})
176+
177+
onDeactivated(() => {
178+
cancelClose()
179+
activeContributor.value = null
180+
removeListeners()
181+
})
150182
</script>
151183

152184
<template>
@@ -306,7 +338,7 @@ onUnmounted(() => document.removeEventListener('pointerdown', onDocumentPointerD
306338
:to="contributor.html_url"
307339
no-underline
308340
no-external-icon
309-
:aria-label="$t('about.contributors.view_profile', { name: contributor.login })"
341+
:aria-label="getAriaLabel(contributor)"
310342
class="group relative block h-12 w-12 rounded-lg transition-all outline-none p-0 bg-transparent"
311343
>
312344
<img
@@ -322,8 +354,10 @@ onUnmounted(() => document.removeEventListener('pointerdown', onDocumentPointerD
322354
v-else
323355
type="button"
324356
:data-cid="contributor.id"
325-
:aria-expanded="activeContributor?.id === contributor.id ? 'true' : undefined"
326-
:aria-haspopup="isExpandable(contributor) ? 'true' : undefined"
357+
:aria-expanded="
358+
isMounted && activeContributor?.id === contributor.id ? 'true' : undefined
359+
"
360+
:aria-haspopup="isMounted && isExpandable(contributor) ? 'true' : undefined"
327361
:aria-label="
328362
isExpandable(contributor)
329363
? getAriaLabel(contributor)
@@ -338,7 +372,6 @@ onUnmounted(() => document.removeEventListener('pointerdown', onDocumentPointerD
338372
@mouseenter="open(contributor, $event.currentTarget as HTMLElement)"
339373
@mouseleave="scheduleClose(contributor)"
340374
@click="toggle(contributor, $event.currentTarget as HTMLElement)"
341-
@keydown.escape="activeContributor = null"
342375
>
343376
<img
344377
:src="`${contributor.avatar_url}&s=64`"
@@ -391,7 +424,7 @@ onUnmounted(() => document.removeEventListener('pointerdown', onDocumentPointerD
391424
class="flex items-center gap-1 font-sans text-2xs text-fg-muted text-start min-w-0"
392425
>
393426
<div
394-
class="i-lucide:building-2 size-3 shrink-0 mt-0.5 text-accent/80"
427+
class="i-lucide:building-2 size-3 shrink-0 text-accent/80"
395428
aria-hidden="true"
396429
/>
397430
<div

0 commit comments

Comments
 (0)