diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 97d1d09170..4d314d328d 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -50,7 +50,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div v-if="appearNote.channel" :class="$style.colorBar" :style="{ background: appearNote.channel.color }"></div> <MkAvatar :class="$style.avatar" :user="appearNote.user" link preview/> <div :class="$style.main"> - <MkNoteHeader v-on:click.stop :note="appearNote" :mini="true"/> + <MkNoteHeader :note="appearNote" :mini="true" v-on:click.stop/> <MkInstanceTicker v-if="showTicker" :instance="appearNote.user.instance"/> <div style="container-type: inline-size;"> <p v-if="appearNote.cw != null" :class="$style.cw"> @@ -71,27 +71,27 @@ SPDX-License-Identifier: AGPL-3.0-only </div> </div> <div v-if="appearNote.files.length > 0"> - <MkMediaList v-on:click.stop :mediaList="appearNote.files"/> + <MkMediaList :mediaList="appearNote.files" v-on:click.stop/> </div> - <MkPoll v-on:click.stop v-if="appearNote.poll" :note="appearNote" :class="$style.poll"/> - <MkUrlPreview v-on:click.stop v-for="url in urls" :key="url" :url="url" :compact="true" :detail="false" :class="$style.urlPreview"/> + <MkPoll v-if="appearNote.poll" :note="appearNote" :class="$style.poll" v-on:click.stop /> + <MkUrlPreview v-for="url in urls" :key="url" :url="url" :compact="true" :detail="false" :class="$style.urlPreview" v-on:click.stop/> <div v-if="appearNote.renote" :class="$style.quote"><MkNoteSimple :note="appearNote.renote" :class="$style.quoteNote"/></div> - <button v-on:click.stop v-if="isLong && collapsed" :class="$style.collapsed" class="_button" @click="collapsed = false"> + <button v-if="isLong && collapsed" :class="$style.collapsed" class="_button" v-on:click.stop @click="collapsed = false"> <span :class="$style.collapsedLabel">{{ i18n.ts.showMore }}</span> </button> - <button v-on:click.stop v-else-if="isLong && !collapsed" :class="$style.showLess" class="_button" @click="collapsed = true"> + <button v-else-if="isLong && !collapsed" :class="$style.showLess" class="_button" v-on:click.stop @click="collapsed = true"> <span :class="$style.showLessLabel">{{ i18n.ts.showLess }}</span> </button> </div> <MkA v-if="appearNote.channel && !inChannel" :class="$style.channel" :to="`/channels/${appearNote.channel.id}`"><i class="ti ti-device-tv"></i> {{ appearNote.channel.name }}</MkA> </div> - <MkReactionsViewer :note="appearNote" :maxNumber="16"> + <MkReactionsViewer :note="appearNote" :maxNumber="16" v-on:click.stop> <template #more> <div :class="$style.reactionOmitted">{{ i18n.ts.more }}</div> </template> </MkReactionsViewer> <footer :class="$style.footer"> - <button v-on:click.stop :class="$style.footerButton" class="_button" @click="reply()"> + <button :class="$style.footerButton" class="_button" v-on:click.stop @click="reply()"> <i class="ti ti-arrow-back-up"></i> <p v-if="appearNote.repliesCount > 0" :class="$style.footerButtonCount">{{ appearNote.repliesCount }}</p> </button> diff --git a/packages/frontend/src/components/MkNoteSub.vue b/packages/frontend/src/components/MkNoteSub.vue index 490211fad3..2a3cd9bf02 100644 --- a/packages/frontend/src/components/MkNoteSub.vue +++ b/packages/frontend/src/components/MkNoteSub.vue @@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only <Mfm v-if="note.cw != ''" style="margin-right: 8px;" :text="note.cw" :author="note.user" :i="$i"/> <MkCwButton v-model="showContent" :note="note"/> </p> - <div v-show="note.cw == null || showContent" @click="noteclick(note.id)"> + <div v-show="note.cw == null || showContent"> <MkSubNoteContent :class="$style.text" :note="note"/> </div> </div> @@ -52,7 +52,6 @@ import { $i } from '@/account.js'; import { userPage } from "@/filters/user"; import { checkWordMute } from "@/scripts/check-word-mute"; import { defaultStore } from "@/store"; -import { useRouter } from '@/router.js'; const props = withDefaults(defineProps<{ note: Misskey.entities.Note; @@ -64,14 +63,8 @@ const props = withDefaults(defineProps<{ depth: 1, }); -const router = useRouter(); - const muted = ref(checkWordMute(props.note, $i, defaultStore.state.mutedWords)); -function noteclick(id: string) { - router.push(`/notes/${id}`); -} - let showContent = $ref(false); let replies: Misskey.entities.Note[] = $ref([]); diff --git a/packages/frontend/src/components/MkSubNoteContent.vue b/packages/frontend/src/components/MkSubNoteContent.vue index 34fdd1cce4..fff0639473 100644 --- a/packages/frontend/src/components/MkSubNoteContent.vue +++ b/packages/frontend/src/components/MkSubNoteContent.vue @@ -5,12 +5,12 @@ SPDX-License-Identifier: AGPL-3.0-only <template> <div :class="[$style.root, { [$style.collapsed]: collapsed }]"> - <div> + <div @click="noteclick(note.id)"> <span v-if="note.isHidden" style="opacity: 0.5">({{ i18n.ts.private }})</span> <span v-if="note.deletedAt" style="opacity: 0.5">({{ i18n.ts.deleted }})</span> - <MkA v-if="note.replyId" :class="$style.reply" :to="`/notes/${note.replyId}`"><i class="ti ti-arrow-back-up"></i></MkA> + <MkA v-if="note.replyId" :class="$style.reply" :to="`/notes/${note.replyId}`" v-on:click.stop><i class="ti ti-arrow-back-up"></i></MkA> <Mfm v-if="note.text" :text="note.text" :author="note.user" :i="$i" :emojiUrls="note.emojis"/> - <MkA v-if="note.renoteId" :class="$style.rp" :to="`/notes/${note.renoteId}`">RN: ...</MkA> + <MkA v-if="note.renoteId" :class="$style.rp" :to="`/notes/${note.renoteId}`" v-on:click.stop>RN: ...</MkA> </div> <details v-if="note.files.length > 0"> <summary>({{ i18n.t('withNFiles', { n: note.files.length }) }})</summary> @@ -37,11 +37,18 @@ import MkPoll from '@/components/MkPoll.vue'; import { i18n } from '@/i18n.js'; import { $i } from '@/account.js'; import { shouldCollapsed } from '@/scripts/collapsed.js'; +import { useRouter } from '@/router.js'; const props = defineProps<{ note: Misskey.entities.Note; }>(); +const router = useRouter(); + +function noteclick(id: string) { + router.push(`/notes/${id}`); +} + const isLong = shouldCollapsed(props.note); const collapsed = $ref(isLong);