Skip to content

Commit fc1dd08

Browse files
committed
Close the Markdown menu after async copy
Capture the dropdown trigger before awaiting Markdown fetch and clipboard writes so the menu still closes after a successful copy. This avoids relying on event.currentTarget after async suspension. #715 (comment) Assisted-by: Codex:gpt-5.4
1 parent d52f2c5 commit fc1dd08

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

docs/.vitepress/theme/components/PageMarkdownActions.vue

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ onBeforeUnmount(() => {
113113
if (copyFailedResetTimeout != null) window.clearTimeout(copyFailedResetTimeout);
114114
});
115115
116-
function closeMenu(event: Event): void {
117-
const details = (event.currentTarget as HTMLElement | null)?.closest("details");
116+
function closeMenu(target: EventTarget | HTMLElement | null): void {
117+
const details = (target as HTMLElement | null)?.closest("details");
118118
if (details instanceof HTMLDetailsElement) details.open = false;
119119
}
120120
@@ -143,9 +143,10 @@ async function getMarkdown(): Promise<string> {
143143
}
144144
145145
async function copyMarkdown(event: MouseEvent): Promise<void> {
146+
const trigger = event.currentTarget as HTMLElement | null;
146147
const version = targetUpdateVersion;
147148
if (isDev) {
148-
closeMenu(event);
149+
closeMenu(trigger);
149150
window.alert(devMessage);
150151
return;
151152
}
@@ -172,7 +173,7 @@ async function copyMarkdown(event: MouseEvent): Promise<void> {
172173
copyFailedResetTimeout = null;
173174
}
174175
resetCopiedState(2000);
175-
closeMenu(event);
176+
closeMenu(trigger);
176177
} catch {
177178
if (version !== targetUpdateVersion) return;
178179
copied.value = false;
@@ -186,7 +187,7 @@ async function copyMarkdown(event: MouseEvent): Promise<void> {
186187
}
187188
188189
function viewMarkdown(event: MouseEvent): void {
189-
closeMenu(event);
190+
closeMenu(event.currentTarget);
190191
if (!isDev) return;
191192
event.preventDefault();
192193
window.alert(devMessage);

0 commit comments

Comments
 (0)