escキーまわりの挙動を改善

This commit is contained in:
tai-cha 2025-06-25 01:33:48 +09:00
parent 8cc64dc544
commit b20229945a
2 changed files with 10 additions and 4 deletions

View File

@ -14,6 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
@close="cancel()" @close="cancel()"
@ok="ok()" @ok="ok()"
@closed="emit('closed')" @closed="emit('closed')"
@esc="cancel()"
> >
<template #header>{{ i18n.ts._drafts.select }}</template> <template #header>{{ i18n.ts._drafts.select }}</template>
<div :class="$style.drafts" class="_gaps"> <div :class="$style.drafts" class="_gaps">

View File

@ -213,6 +213,7 @@ const targetChannel = shallowRef(props.channel);
const serverDraftId = ref<string | null>(null); const serverDraftId = ref<string | null>(null);
const postFormActions = getPluginHandlers('post_form_action'); const postFormActions = getPluginHandlers('post_form_action');
const draftSelectorOpening = ref(false);
const uploader = useUploader({ const uploader = useUploader({
multiple: true, multiple: true,
@ -656,7 +657,7 @@ function onKeydown(ev: KeyboardEvent) {
// justEndedComposition.value is for Safari, which keyDown occurs after compositionend. // justEndedComposition.value is for Safari, which keyDown occurs after compositionend.
// ev.isComposing is for another browsers. // ev.isComposing is for another browsers.
if (ev.key === 'Escape' && !justEndedComposition.value && !ev.isComposing) esc(ev); if (ev.key === 'Escape' && !justEndedComposition.value && !ev.isComposing) emit('esc');
} }
function onKeyup(ev: KeyboardEvent) { function onKeyup(ev: KeyboardEvent) {
@ -824,7 +825,7 @@ function deleteDraft() {
miLocalStorage.setItem('drafts', JSON.stringify(draftData)); miLocalStorage.setItem('drafts', JSON.stringify(draftData));
} }
async function saveServerDraft(clearLocal = false): Promise<{ canClosePostForm: boolean }> { async function saveServerDraft(clearLocal = false) {
return await os.apiWithDialog(serverDraftId.value == null ? 'notes/drafts/create' : 'notes/drafts/update', { return await os.apiWithDialog(serverDraftId.value == null ? 'notes/drafts/create' : 'notes/drafts/update', {
...(serverDraftId.value == null ? {} : { draftId: serverDraftId.value }), ...(serverDraftId.value == null ? {} : { draftId: serverDraftId.value }),
text: text.value, text: text.value,
@ -846,9 +847,7 @@ async function saveServerDraft(clearLocal = false): Promise<{ canClosePostForm:
clear(); clear();
deleteDraft(); deleteDraft();
} }
return { canClosePostForm: true };
}).catch((err) => { }).catch((err) => {
return { canClosePostForm: false };
}); });
} }
@ -1182,6 +1181,7 @@ function getNoteDraftDialog(): Promise<Misskey.entities.NoteDraft | null> {
function showDraftMenu(ev: MouseEvent) { function showDraftMenu(ev: MouseEvent) {
function showDraftSelectDialog() { function showDraftSelectDialog() {
draftSelectorOpening.value = true;
getNoteDraftDialog().then(draft => { getNoteDraftDialog().then(draft => {
if (draft == null) return; if (draft == null) return;
@ -1226,6 +1226,8 @@ function showDraftMenu(ev: MouseEvent) {
}); });
serverDraftId.value = draft.id; serverDraftId.value = draft.id;
}).then(() => {
draftSelectorOpening.value = false;
}); });
} }
@ -1324,6 +1326,9 @@ async function canClose() {
}); });
if (canceled) return false; if (canceled) return false;
} }
if (draftSelectorOpening.value) {
return false;
}
return true; return true;
} }