escキーまわりの挙動を改善
This commit is contained in:
parent
8cc64dc544
commit
b20229945a
|
@ -14,6 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
@close="cancel()"
|
||||
@ok="ok()"
|
||||
@closed="emit('closed')"
|
||||
@esc="cancel()"
|
||||
>
|
||||
<template #header>{{ i18n.ts._drafts.select }}</template>
|
||||
<div :class="$style.drafts" class="_gaps">
|
||||
|
|
|
@ -213,6 +213,7 @@ const targetChannel = shallowRef(props.channel);
|
|||
|
||||
const serverDraftId = ref<string | null>(null);
|
||||
const postFormActions = getPluginHandlers('post_form_action');
|
||||
const draftSelectorOpening = ref(false);
|
||||
|
||||
const uploader = useUploader({
|
||||
multiple: true,
|
||||
|
@ -656,7 +657,7 @@ function onKeydown(ev: KeyboardEvent) {
|
|||
|
||||
// justEndedComposition.value is for Safari, which keyDown occurs after compositionend.
|
||||
// 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) {
|
||||
|
@ -824,7 +825,7 @@ function deleteDraft() {
|
|||
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', {
|
||||
...(serverDraftId.value == null ? {} : { draftId: serverDraftId.value }),
|
||||
text: text.value,
|
||||
|
@ -846,9 +847,7 @@ async function saveServerDraft(clearLocal = false): Promise<{ canClosePostForm:
|
|||
clear();
|
||||
deleteDraft();
|
||||
}
|
||||
return { canClosePostForm: true };
|
||||
}).catch((err) => {
|
||||
return { canClosePostForm: false };
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1182,6 +1181,7 @@ function getNoteDraftDialog(): Promise<Misskey.entities.NoteDraft | null> {
|
|||
|
||||
function showDraftMenu(ev: MouseEvent) {
|
||||
function showDraftSelectDialog() {
|
||||
draftSelectorOpening.value = true;
|
||||
getNoteDraftDialog().then(draft => {
|
||||
if (draft == null) return;
|
||||
|
||||
|
@ -1226,6 +1226,8 @@ function showDraftMenu(ev: MouseEvent) {
|
|||
});
|
||||
|
||||
serverDraftId.value = draft.id;
|
||||
}).then(() => {
|
||||
draftSelectorOpening.value = false;
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1324,6 +1326,9 @@ async function canClose() {
|
|||
});
|
||||
if (canceled) return false;
|
||||
}
|
||||
if (draftSelectorOpening.value) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue