summaryrefslogtreecommitdiff
path: root/packages/frontend
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2025-10-15 12:59:26 +0900
committerGitHub <noreply@github.com>2025-10-15 12:59:26 +0900
commit42008d1377757a3c76ee9fd49a17c0cea5e7a850 (patch)
tree6b960b97fa4cec19bca16df31119b8d238c1f91f /packages/frontend
parentfix(frontend): ナビゲーションバーの設定で削除した項目を... (diff)
downloadmisskey-42008d1377757a3c76ee9fd49a17c0cea5e7a850.tar.gz
misskey-42008d1377757a3c76ee9fd49a17c0cea5e7a850.tar.bz2
misskey-42008d1377757a3c76ee9fd49a17c0cea5e7a850.zip
fix(frontend): デッキのメインカラムのヘッダをクリックしてもページ上部/下部にスクロールしない問題を修正 (#16653)
* fix(frontend): デッキのメインカラムのヘッダをクリックしても上部にスクロールしない問題を修正 * fix * Update Changelog * fix lint --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
Diffstat (limited to 'packages/frontend')
-rw-r--r--packages/frontend/src/ui/deck/column.vue8
-rw-r--r--packages/frontend/src/ui/deck/main-column.vue24
2 files changed, 28 insertions, 4 deletions
diff --git a/packages/frontend/src/ui/deck/column.vue b/packages/frontend/src/ui/deck/column.vue
index 11937fda24..312ca51c83 100644
--- a/packages/frontend/src/ui/deck/column.vue
+++ b/packages/frontend/src/ui/deck/column.vue
@@ -62,15 +62,18 @@ const props = withDefaults(defineProps<{
column: Column;
isStacked?: boolean;
naked?: boolean;
+ handleScrollToTop?: boolean;
menu?: MenuItem[];
refresher?: () => Promise<void>;
}>(), {
isStacked: false,
naked: false,
+ handleScrollToTop: true,
});
const emit = defineEmits<{
(ev: 'headerWheel', ctx: WheelEvent): void;
+ (ev: 'headerClick', ctx: MouseEvent): void;
}>();
const body = useTemplateRef('body');
@@ -252,7 +255,10 @@ function onContextmenu(ev: MouseEvent) {
os.contextMenu(getMenu(), ev);
}
-function goTop() {
+function goTop(ev: MouseEvent) {
+ emit('headerClick', ev);
+ if (!props.handleScrollToTop) return;
+
if (body.value) {
body.value.scrollTo({
top: 0,
diff --git a/packages/frontend/src/ui/deck/main-column.vue b/packages/frontend/src/ui/deck/main-column.vue
index 78454d2e49..1388cbdc18 100644
--- a/packages/frontend/src/ui/deck/main-column.vue
+++ b/packages/frontend/src/ui/deck/main-column.vue
@@ -4,7 +4,13 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<XColumn v-if="prefer.s['deck.alwaysShowMainColumn'] || mainRouter.currentRoute.value.name !== 'index'" :column="column" :isStacked="isStacked">
+<XColumn
+ v-if="prefer.s['deck.alwaysShowMainColumn'] || mainRouter.currentRoute.value.name !== 'index'"
+ :column="column"
+ :isStacked="isStacked"
+ :handleScrollToTop="false"
+ @headerClick="onHeaderClick"
+>
<template #header>
<template v-if="pageMetadata">
<i :class="pageMetadata.icon"></i>
@@ -12,7 +18,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</template>
- <div style="height: 100%;">
+ <div ref="rootEl" style="height: 100%;">
<StackingRouterView v-if="prefer.s['experimental.stackingRouterView']" @contextmenu.stop="onContextmenu"/>
<RouterView v-else @contextmenu.stop="onContextmenu"/>
</div>
@@ -20,7 +26,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-import { provide, shallowRef, ref } from 'vue';
+import { provide, useTemplateRef, ref } from 'vue';
import { isLink } from '@@/js/is-link.js';
import XColumn from './column.vue';
import type { Column } from '@/deck.js';
@@ -38,6 +44,7 @@ defineProps<{
}>();
const pageMetadata = ref<null | PageMetadata>(null);
+const rootEl = useTemplateRef('rootEl');
provide(DI.router, mainRouter);
provideMetadataReceiver((metadataGetter) => {
@@ -69,4 +76,15 @@ function onContextmenu(ev: MouseEvent) {
},
}], ev);
}
+
+function onHeaderClick() {
+ if (!rootEl.value) return;
+ const scrollEl = rootEl.value.querySelector<HTMLElement>('._pageScrollable,._pageScrollableReversed');
+ if (scrollEl) {
+ scrollEl.scrollTo({
+ top: 0,
+ behavior: 'smooth',
+ });
+ }
+}
</script>