memi-board 0.44.0 → 0.44.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +251 -225
- package/dist/index.js.map +1 -1
- package/dist/runtime/components/CommentForm.vue +4 -0
- package/dist/runtime/components/CommentItem.vue +4 -0
- package/dist/runtime/components/Editor.vue +4 -0
- package/dist/runtime/components/ReportButton.vue +4 -0
- package/dist/runtime/components/SignIn.vue +4 -0
- package/dist/utils/imeSafeSubmit.d.ts +2 -0
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import { imeSafeSubmitClick, imeSafeSubmitPointerDown } from 'memi-board/runtime'
|
|
2
3
|
import { computed, ref } from 'vue'
|
|
3
4
|
import { canWriteCommentByRole, useMemiBoardAuth } from 'memi-board/runtime'
|
|
4
5
|
import { COMMENT_BODY_MAX_LENGTH, useMemiBoardComments } from 'memi-board/runtime'
|
|
@@ -35,6 +36,7 @@ const submitting = ref(false)
|
|
|
35
36
|
const error = ref('')
|
|
36
37
|
|
|
37
38
|
async function handleSubmit() {
|
|
39
|
+
if (submitting.value) return
|
|
38
40
|
error.value = ''
|
|
39
41
|
if (!body.value.trim()) return
|
|
40
42
|
if (!user.value) {
|
|
@@ -116,6 +118,8 @@ async function handleSubmit() {
|
|
|
116
118
|
/>
|
|
117
119
|
<UButton
|
|
118
120
|
type="submit"
|
|
121
|
+
@pointerdown="imeSafeSubmitPointerDown"
|
|
122
|
+
@click="imeSafeSubmitClick"
|
|
119
123
|
size="sm"
|
|
120
124
|
:label="parent ? '답글 작성' : '댓글 작성'"
|
|
121
125
|
:loading="submitting"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import { imeSafeSubmitClick, imeSafeSubmitPointerDown } from 'memi-board/runtime'
|
|
2
3
|
import { computed, inject, ref, watch } from 'vue'
|
|
3
4
|
import { Timestamp } from 'firebase/firestore'
|
|
4
5
|
import dayjs from 'dayjs'
|
|
@@ -80,6 +81,7 @@ function cancelEdit() {
|
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
async function saveEdit() {
|
|
84
|
+
if (saving.value) return
|
|
83
85
|
const body = editBody.value.trim()
|
|
84
86
|
if (!props.comment.id || !body || body === localBody.value) {
|
|
85
87
|
if (body === localBody.value) editing.value = false
|
|
@@ -201,6 +203,8 @@ async function toggleLike() {
|
|
|
201
203
|
/>
|
|
202
204
|
<UButton
|
|
203
205
|
type="submit"
|
|
206
|
+
@pointerdown="imeSafeSubmitPointerDown"
|
|
207
|
+
@click="imeSafeSubmitClick"
|
|
204
208
|
label="저장"
|
|
205
209
|
size="xs"
|
|
206
210
|
:loading="saving"
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* 커스텀은 handlers.image(파일 업로드), YouTube 임베드 + DOM paste/drop.
|
|
8
8
|
*/
|
|
9
9
|
import { ref, computed, watch } from 'vue'
|
|
10
|
+
import { imeSafeSubmitClick, imeSafeSubmitPointerDown } from 'memi-board/runtime'
|
|
10
11
|
import Youtube from '@tiptap/extension-youtube'
|
|
11
12
|
import type { DropdownMenuItem, EditorSuggestionMenuItem } from '@nuxt/ui'
|
|
12
13
|
import { mapEditorItems } from '@nuxt/ui/utils/editor'
|
|
@@ -932,6 +933,7 @@ function friendlyWriteError(e: unknown): string {
|
|
|
932
933
|
}
|
|
933
934
|
|
|
934
935
|
async function handleSubmit() {
|
|
936
|
+
if (saving.value) return
|
|
935
937
|
error.value = ''
|
|
936
938
|
const imageBoard = isImageEditor.value
|
|
937
939
|
if (!imageBoard && !title.value.trim()) {
|
|
@@ -1346,6 +1348,8 @@ async function handleSubmit() {
|
|
|
1346
1348
|
:loading="saving"
|
|
1347
1349
|
:disabled="isWriteRestricted || imageUploading"
|
|
1348
1350
|
:label="isEdit ? '수정 완료' : '다음: 미리보기'"
|
|
1351
|
+
@pointerdown="imeSafeSubmitPointerDown"
|
|
1352
|
+
@click="imeSafeSubmitClick"
|
|
1349
1353
|
/>
|
|
1350
1354
|
<UButton
|
|
1351
1355
|
type="button"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import { imeSafeSubmitClick, imeSafeSubmitPointerDown } from 'memi-board/runtime'
|
|
2
3
|
import { computed, ref } from 'vue'
|
|
3
4
|
import {
|
|
4
5
|
REPORT_DETAIL_MAX_LENGTH,
|
|
@@ -38,6 +39,7 @@ function openModal() {
|
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
async function submit() {
|
|
42
|
+
if (pending.value) return
|
|
41
43
|
error.value = ''
|
|
42
44
|
try {
|
|
43
45
|
await submitReport({
|
|
@@ -105,6 +107,8 @@ async function submit() {
|
|
|
105
107
|
/>
|
|
106
108
|
<UButton
|
|
107
109
|
type="submit"
|
|
110
|
+
@pointerdown="imeSafeSubmitPointerDown"
|
|
111
|
+
@click="imeSafeSubmitClick"
|
|
108
112
|
color="warning"
|
|
109
113
|
label="신고하기"
|
|
110
114
|
:loading="pending"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import { imeSafeSubmitClick, imeSafeSubmitPointerDown } from 'memi-board/runtime'
|
|
2
3
|
import { ref, computed } from 'vue'
|
|
3
4
|
import { useMemiBoardConfig } from 'memi-board/runtime'
|
|
4
5
|
import { useMemiBoardAuth } from 'memi-board/runtime'
|
|
@@ -45,6 +46,7 @@ async function handleApple() {
|
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
async function handleEmailSubmit() {
|
|
49
|
+
if (loading.value) return
|
|
48
50
|
loading.value = true
|
|
49
51
|
error.value = ''
|
|
50
52
|
try {
|
|
@@ -121,6 +123,8 @@ async function handleEmailSubmit() {
|
|
|
121
123
|
/>
|
|
122
124
|
<UButton
|
|
123
125
|
type="submit"
|
|
126
|
+
@pointerdown="imeSafeSubmitPointerDown"
|
|
127
|
+
@click="imeSafeSubmitClick"
|
|
124
128
|
block
|
|
125
129
|
:loading="loading"
|
|
126
130
|
:label="mode === 'signin' ? '로그인' : '회원가입'"
|