diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index d852aca799..bc1f416373 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -11,7 +11,7 @@ SPDX-License-Identifier: AGPL-3.0-only v-hotkey="keymap" :class="$style.root" > -
+
{{ i18n.ts.loadConversation }}
@@ -43,38 +43,29 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
-
-
-
- - - - bot -
-
-
+
+ + + + bot
- - - - + + + + + +
+
-
+

@@ -101,101 +92,61 @@ SPDX-License-Identifier: AGPL-3.0-only

- +
-
+
- -
{{ appearNote.channel.name }}
-
- - - - - + + + + + + +
-
+
-
+
{{ i18n.ts.loadReplies }} @@ -277,13 +228,11 @@ import { useTooltip } from '@/scripts/use-tooltip.js'; import { claimAchievement } from '@/scripts/achievements.js'; import MkRippleEffect from '@/components/MkRippleEffect.vue'; import { showMovedDialog } from '@/scripts/show-moved-dialog.js'; -import { shouldCollapsed } from '@/scripts/collapsed.js'; import MkUserCardMini from '@/components/MkUserCardMini.vue'; import MkPagination, { type Paging } from '@/components/MkPagination.vue'; import MkReactionIcon from '@/components/MkReactionIcon.vue'; import MkButton from '@/components/MkButton.vue'; -import { isEnabledUrlPreview, instance } from '@/instance.js'; -import { url } from '@/config.js'; +import { isEnabledUrlPreview } from '@/instance.js'; const props = withDefaults(defineProps<{ note: Misskey.entities.Note; @@ -293,7 +242,6 @@ const props = withDefaults(defineProps<{ }); const inChannel = inject('inChannel', null); -const inEmbedPage = inject('EMBED_PAGE', false); const note = ref(deepClone(props.note)); @@ -340,8 +288,6 @@ const translation = ref(null); const translating = ref(false); const parsed = appearNote.value.text ? mfm.parse(appearNote.value.text) : null; const urls = parsed ? extractUrlFromMfm(parsed).filter((url) => appearNote.value.renote?.url !== url && appearNote.value.renote?.uri !== url) : null; -const isLong = shouldCollapsed(appearNote.value, urls ?? []); -const collapsed = ref(appearNote.value.cw == null && isLong); const showTicker = (defaultStore.state.instanceTicker === 'always') || (defaultStore.state.instanceTicker === 'remote' && appearNote.value.user.instance); const conversation = ref([]); const replies = ref([]); @@ -656,10 +602,6 @@ function loadConversation() { padding: 32px; font-size: 1.2em; - &.embeddedNote { - padding: 24px 32px 16px; - } - &:hover > .main > .footer > .button { opacity: 1; } @@ -679,26 +621,15 @@ function loadConversation() { height: 58px; } -.embeddedNote .noteHeaderAvatar { - width: 50px; - height: 50px; -} - .noteHeaderBody { flex: 1; display: flex; - min-width: 0; flex-direction: column; justify-content: center; padding-left: 16px; font-size: 0.95em; } -.noteHeaderBodyUpper { - display: flex; - min-width: 0; -} - .noteHeaderName { font-weight: bold; line-height: 1.3; @@ -715,21 +646,7 @@ function loadConversation() { } .noteHeaderInfo { - margin-left: auto; - display: flex; - gap: 0.5em; - align-items: center; -} - -.noteHeaderInstanceIconLink { - display: inline-block; - margin-left: 4px; -} - -.noteHeaderInstanceIcon { - width: 32px; - height: 32px; - border-radius: 4px; + float: right; } .noteHeaderUsername { @@ -789,52 +706,6 @@ function loadConversation() { font-size: 80%; } -.showLess { - width: 100%; - margin-top: 14px; - position: sticky; - bottom: calc(var(--stickyBottom, 0px) + 14px); -} - -.showLessLabel { - display: inline-block; - background: var(--popup); - padding: 6px 10px; - font-size: 0.8em; - border-radius: 999px; - box-shadow: 0 2px 6px rgb(0 0 0 / 20%); -} - -.contentCollapsed { - position: relative; - max-height: 9em; - overflow: clip; -} - -.collapsed { - display: block; - position: absolute; - bottom: 0; - left: 0; - z-index: 2; - width: 100%; - height: 64px; - background: linear-gradient(0deg, var(--panel), var(--X15)); - - &:hover > .collapsedLabel { - background: var(--panelHighlight); - } -} - -.collapsedLabel { - display: inline-block; - background: var(--panel); - padding: 6px 10px; - font-size: 0.8em; - border-radius: 999px; - box-shadow: 0 2px 6px rgb(0 0 0 / 20%); -} - .noteFooterInfo { margin: 16px 0; opacity: 0.7; @@ -855,12 +726,6 @@ function loadConversation() { } } -.footerButtonLink:hover, -.footerButtonLink:focus, -.footerButtonLink:active { - text-decoration: none; -} - .noteFooterButtonCount { display: inline; margin: 0 0 0 8px; @@ -968,11 +833,4 @@ function loadConversation() { text-align: center; opacity: 0.7; } - -.reactionOmitted { - display: inline-block; - margin-left: 8px; - opacity: .8; - font-size: 95%; -} diff --git a/packages/frontend/src/components/MkNoteEmbed.vue b/packages/frontend/src/components/MkNoteEmbed.vue new file mode 100644 index 0000000000..7a5d17520b --- /dev/null +++ b/packages/frontend/src/components/MkNoteEmbed.vue @@ -0,0 +1,495 @@ + + + + + + + diff --git a/packages/frontend/src/pages/embed/note.vue b/packages/frontend/src/pages/embed/note.vue index b86a8ec951..c87f6757cc 100644 --- a/packages/frontend/src/pages/embed/note.vue +++ b/packages/frontend/src/pages/embed/note.vue @@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only @@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only