diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-04-27 17:38:48 +0900 |
|---|---|---|
| committer | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-04-27 17:38:48 +0900 |
| commit | 14d3439a428fb4c20b020731617478ab5e8e51b7 (patch) | |
| tree | ddb56fbb6dd724f7443452916d178ba3e2ef99b4 /packages/frontend/src/components/global | |
| parent | fix(frontend): スワイプが効かないなど、不具合の元になるma... (diff) | |
| download | sharkey-14d3439a428fb4c20b020731617478ab5e8e51b7.tar.gz sharkey-14d3439a428fb4c20b020731617478ab5e8e51b7.tar.bz2 sharkey-14d3439a428fb4c20b020731617478ab5e8e51b7.zip | |
enhance(frontend): タイムラインをスワイプで切り替えられるように
Resolve #15722
Diffstat (limited to 'packages/frontend/src/components/global')
| -rw-r--r-- | packages/frontend/src/components/global/PageWithHeader.vue | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/packages/frontend/src/components/global/PageWithHeader.vue b/packages/frontend/src/components/global/PageWithHeader.vue index 2cc7979ce4..94010fc437 100644 --- a/packages/frontend/src/components/global/PageWithHeader.vue +++ b/packages/frontend/src/components/global/PageWithHeader.vue @@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkStickyContainer> <template #header><MkPageHeader v-model:tab="tab" v-bind="pageHeaderProps"/></template> <div :class="$style.body"> - <MkSwiper v-if="swipable" v-model:tab="tab" :tabs="props.tabs"> + <MkSwiper v-if="swipable" v-model:tab="tab" :class="$style.swiper" :tabs="props.tabs"> <slot></slot> </MkSwiper> <slot v-else></slot> @@ -24,6 +24,7 @@ import { scrollInContainer } from '@@/js/scroll.js'; import type { PageHeaderProps } from './MkPageHeader.vue'; import { useScrollPositionKeeper } from '@/use/use-scroll-position-keeper.js'; import MkSwiper from '@/components/MkSwiper.vue'; +import { useRouter } from '@/router.js'; const props = defineProps<PageHeaderProps & { reversed?: boolean; @@ -40,10 +41,18 @@ const rootEl = useTemplateRef('rootEl'); useScrollPositionKeeper(rootEl); +const router = useRouter(); + +router.useListener('same', () => { + scrollToTop(); +}); + +function scrollToTop() { + if (rootEl.value) scrollInContainer(rootEl.value, { top: 0, behavior: 'smooth' }); +} + defineExpose({ - scrollToTop: () => { - if (rootEl.value) scrollInContainer(rootEl.value, { top: 0, behavior: 'smooth' }); - }, + scrollToTop, }); </script> @@ -52,7 +61,7 @@ defineExpose({ } -.body { +.body, .swiper { min-height: calc(100cqh - (var(--MI-stickyTop, 0px) + var(--MI-stickyBottom, 0px))); } </style> |