diff options
Diffstat (limited to 'packages/client/src/ui/zen.vue')
| -rw-r--r-- | packages/client/src/ui/zen.vue | 99 |
1 files changed, 14 insertions, 85 deletions
diff --git a/packages/client/src/ui/zen.vue b/packages/client/src/ui/zen.vue index a7234f729b..c915f82428 100644 --- a/packages/client/src/ui/zen.vue +++ b/packages/client/src/ui/zen.vue @@ -1,106 +1,35 @@ <template> <div class="mk-app"> - <div class="contents"> - <header class="header"> - <MkHeader :info="pageInfo"/> - </header> - <main ref="main"> - <div class="content"> - <router-view v-slot="{ Component }"> - <transition :name="$store.state.animation ? 'page' : ''" mode="out-in" @enter="onTransition"> - <keep-alive :include="['MkTimelinePage']"> - <component :is="Component" :ref="changePage"/> - </keep-alive> - </transition> - </router-view> - </div> - </main> - </div> + <RouterView/> <XCommon/> </div> </template> -<script lang="ts"> -import { defineComponent, defineAsyncComponent } from 'vue'; -import { host } from '@/config'; +<script lang="ts" setup> +import { provide, ComputedRef } from 'vue'; import XCommon from './_common_/common.vue'; -import * as symbols from '@/symbols'; +import { mainRouter } from '@/router'; +import { PageMetadata, provideMetadataReceiver, setPageMetadata } from '@/scripts/page-metadata'; +import { instanceName } from '@/config'; -export default defineComponent({ - components: { - XCommon, - }, +let pageMetadata = $ref<null | ComputedRef<PageMetadata>>(); - data() { - return { - host: host, - pageInfo: null, - }; - }, - - created() { - document.documentElement.style.overflowY = 'scroll'; - }, - - methods: { - changePage(page) { - if (page == null) return; - if (page[symbols.PAGE_INFO]) { - this.pageInfo = page[symbols.PAGE_INFO]; - } - }, - - top() { - window.scroll({ top: 0, behavior: 'smooth' }); - }, - - help() { - window.open(`https://misskey-hub.net/docs/keyboard-shortcut.md`, '_blank'); - }, - - onTransition() { - if (window._scroll) window._scroll(); - }, +provide('router', mainRouter); +provideMetadataReceiver((info) => { + pageMetadata = info; + if (pageMetadata.value) { + document.title = `${pageMetadata.value.title} | ${instanceName}`; } }); + +document.documentElement.style.overflowY = 'scroll'; </script> <style lang="scss" scoped> .mk-app { - $header-height: 52px; - $ui-font-size: 1em; // TODO: どこかに集約したい - // ほんとは単に 100vh と書きたいところだが... https://css-tricks.com/the-trick-to-viewport-units-on-mobile/ min-height: calc(var(--vh, 1vh) * 100); box-sizing: border-box; - - > .contents { - padding-top: $header-height; - - > .header { - position: fixed; - z-index: 1000; - top: 0; - height: $header-height; - width: 100%; - line-height: $header-height; - text-align: center; - //background-color: var(--panel); - -webkit-backdrop-filter: var(--blur, blur(32px)); - backdrop-filter: var(--blur, blur(32px)); - background-color: var(--header); - border-bottom: solid 0.5px var(--divider); - } - - > main { - > .content { - > * { - // ほんとは単に calc(100vh - #{$header-height}) と書きたいところだが... https://css-tricks.com/the-trick-to-viewport-units-on-mobile/ - min-height: calc((var(--vh, 1vh) * 100) - #{$header-height}); - } - } - } - } } </style> |