summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkPostFormDialog.vue
diff options
context:
space:
mode:
Diffstat (limited to 'packages/frontend/src/components/MkPostFormDialog.vue')
-rw-r--r--packages/frontend/src/components/MkPostFormDialog.vue15
1 files changed, 11 insertions, 4 deletions
diff --git a/packages/frontend/src/components/MkPostFormDialog.vue b/packages/frontend/src/components/MkPostFormDialog.vue
index c467e29df6..0a655bab99 100644
--- a/packages/frontend/src/components/MkPostFormDialog.vue
+++ b/packages/frontend/src/components/MkPostFormDialog.vue
@@ -7,9 +7,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkModal
ref="modal"
:preferType="'dialog'"
- @click="modal?.close()"
+ @click="_close()"
@closed="onModalClosed()"
- @esc="modal?.close()"
+ @esc="_close()"
>
<MkPostForm
ref="form"
@@ -18,8 +18,8 @@ SPDX-License-Identifier: AGPL-3.0-only
autofocus
freezeAfterPosted
@posted="onPosted"
- @cancel="modal?.close()"
- @esc="modal?.close()"
+ @cancel="_close()"
+ @esc="_close()"
/>
</MkModal>
</template>
@@ -43,6 +43,7 @@ const emit = defineEmits<{
}>();
const modal = useTemplateRef('modal');
+const form = useTemplateRef('form');
function onPosted() {
modal.value?.close({
@@ -50,6 +51,12 @@ function onPosted() {
});
}
+async function _close() {
+ const canClose = await form.value?.canClose();
+ if (!canClose) return;
+ modal.value?.close();
+}
+
function onModalClosed() {
emit('closed');
}