escキーまわりの挙動を改善
This commit is contained in:
parent
8cc64dc544
commit
b20229945a
|
@ -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">
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue