-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
@@ -75,8 +33,6 @@ import XCommon from './_common_/common.vue';
import type { PageMetadata } from '@/page.js';
import * as os from '@/os.js';
import { instance } from '@/instance.js';
-import XSigninDialog from '@/components/MkSigninDialog.vue';
-import XSignupDialog from '@/components/MkSignupDialog.vue';
import { provideMetadataReceiver, provideReactiveMetadata } from '@/page.js';
import { i18n } from '@/i18n.js';
import MkVisitorDashboard from '@/components/MkVisitorDashboard.vue';
@@ -103,39 +59,11 @@ provideMetadataReceiver((metadataGetter) => {
});
provideReactiveMetadata(pageMetadata);
-const announcements = {
- endpoint: 'announcements',
- limit: 10,
-};
-
-const isTimelineAvailable = ref(instance.policies.ltlAvailable || instance.policies.gtlAvailable);
-
-const showMenu = ref(false);
const isDesktop = ref(window.innerWidth >= DESKTOP_THRESHOLD);
const narrow = ref(window.innerWidth < 1280);
-const keymap = computed(() => {
- return {
- 's': () => {
- mainRouter.push('/search');
- },
- };
-});
-
-function signin() {
- const { dispose } = os.popup(XSigninDialog, {
- autoSet: true,
- }, {
- closed: () => dispose(),
- });
-}
-
-function signup() {
- const { dispose } = os.popup(XSignupDialog, {
- autoSet: true,
- }, {
- closed: () => dispose(),
- });
+function goHome() {
+ mainRouter.push('/');
}
onMounted(() => {
@@ -145,149 +73,64 @@ onMounted(() => {
}, { passive: true });
}
});
-
-defineExpose({
- showMenu: showMenu,
-});
-
diff --git a/packages/frontend/src/ui/zen.vue b/packages/frontend/src/ui/zen.vue
index 99248abecf..45524d1fbb 100644
--- a/packages/frontend/src/ui/zen.vue
+++ b/packages/frontend/src/ui/zen.vue
@@ -4,21 +4,23 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
-
-
-
+
-
-
-
-
-
diff --git a/packages/frontend/src/components/index.ts b/packages/frontend/src/components/index.ts
index 66ac871f7d..c28c457e33 100644
--- a/packages/frontend/src/components/index.ts
+++ b/packages/frontend/src/components/index.ts
@@ -16,6 +16,8 @@ import MkTime from './global/MkTime.vue';
import MkUrl from './global/MkUrl.vue';
import I18n from './global/I18n.vue';
import RouterView from './global/RouterView.vue';
+import NestedRouterView from './global/NestedRouterView.vue';
+import StackingRouterView from './global/StackingRouterView.vue';
import MkLoading from './global/MkLoading.vue';
import MkError from './global/MkError.vue';
import MkAd from './global/MkAd.vue';
@@ -38,6 +40,8 @@ export default function(app: App) {
export const components = {
I18n: I18n,
RouterView: RouterView,
+ NestedRouterView: NestedRouterView,
+ StackingRouterView: StackingRouterView,
Mfm: Mfm,
MkA: MkA,
MkAcct: MkAcct,
@@ -65,6 +69,8 @@ declare module '@vue/runtime-core' {
export interface GlobalComponents {
I18n: typeof I18n;
RouterView: typeof RouterView;
+ NestedRouterView: typeof NestedRouterView;
+ StackingRouterView: typeof StackingRouterView;
Mfm: typeof Mfm;
MkA: typeof MkA;
MkAcct: typeof MkAcct;
diff --git a/packages/frontend/src/di.ts b/packages/frontend/src/di.ts
index 192242984c..2afe35550d 100644
--- a/packages/frontend/src/di.ts
+++ b/packages/frontend/src/di.ts
@@ -10,4 +10,5 @@ export const DI = {
routerCurrentDepth: Symbol() as InjectionKey
,
router: Symbol() as InjectionKey,
mock: Symbol() as InjectionKey,
+ pageMetadata: Symbol() as InjectionKey[>>,
};
diff --git a/packages/frontend/src/page.ts b/packages/frontend/src/page.ts
index f3ec09a16f..0107f17be4 100644
--- a/packages/frontend/src/page.ts
+++ b/packages/frontend/src/page.ts
@@ -5,6 +5,7 @@
import * as Misskey from 'misskey-js';
import { inject, isRef, onActivated, onBeforeUnmount, provide, ref, toValue, watch } from 'vue';
+import { DI } from './di.js';
import type { MaybeRefOrGetter, Ref } from 'vue';
export type PageMetadata = {
@@ -31,9 +32,6 @@ const METADATA_KEY = Symbol('MetadataKey');
const setMetadata = (v: Ref): void => {
provide][>(METADATA_KEY, v);
};
-const getMetadata = (): Ref | undefined => {
- return inject][>(METADATA_KEY);
-};
export const definePage = (maybeRefOrGetterMetadata: MaybeRefOrGetter): void => {
const metadataRef = ref(toValue(maybeRefOrGetterMetadata));
@@ -55,6 +53,8 @@ export const definePage = (maybeRefOrGetterMetadata: MaybeRefOrGetter {
receiver?.(metadataGetter);
});
+
+ provide(DI.pageMetadata, metadataRef);
};
export const provideMetadataReceiver = (receiver: PageMetadataReceiver): void => {
@@ -64,8 +64,3 @@ export const provideMetadataReceiver = (receiver: PageMetadataReceiver): void =>
export const provideReactiveMetadata = (metadataRef: Ref): void => {
setMetadata(metadataRef);
};
-
-export const injectReactiveMetadata = (): Ref => {
- const metadataRef = getMetadata();
- return isRef(metadataRef) ? metadataRef : ref(null);
-};
diff --git a/packages/frontend/src/pages/admin/_header_.vue b/packages/frontend/src/pages/admin/_header_.vue
index 1382cad9a4..f073a4af7e 100644
--- a/packages/frontend/src/pages/admin/_header_.vue
+++ b/packages/frontend/src/pages/admin/_header_.vue
@@ -33,13 +33,13 @@ SPDX-License-Identifier: AGPL-3.0-only
@@ -139,53 +157,74 @@ onBeforeUnmount(() => {
}
}
-.root {
+.tabs {
position: relative;
- height: 100%;
- overflow: clip;
-}
-
-.tabBg {
- position: absolute;
- z-index: 1;
- top: 0;
- left: 0;
width: 100%;
height: 100%;
- background: #0003;
- -webkit-backdrop-filter: var(--MI-blur, blur(3px));
- backdrop-filter: var(--MI-blur, blur(3px));
}
.tab {
- position: absolute;
- top: 0;
- left: 0;
- height: 100%;
- width: 100%;
- box-sizing: border-box;
+ &:first-child {
+ position: relative;
+ width: 100%;
+ height: 100%;
+
+ .tabFg {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ }
+
+ .tabContent {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ &:not(:first-child) {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+
+ .tabBg {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: #0003;
+ -webkit-backdrop-filter: var(--MI-blur, blur(3px));
+ backdrop-filter: var(--MI-blur, blur(3px));
+ }
- &:not(:nth-child(1)) {
.tabFg {
position: absolute;
- z-index: 1;
bottom: 0;
left: 0;
width: 100%;
- height: calc(100% - 20px * var(--i));
+ height: calc(100% - (10px + (20px * var(--i))));
+ display: flex;
+ flex-direction: column;
+ }
+
+ .tabContent {
+ flex: 1;
+ width: 100%;
+ height: 100%;
+ background: var(--MI_THEME-bg);
}
}
}
-.tabFg {
- position: relative;
- height: 100%;
+.tabMenu {
+ margin-left: auto;
background: var(--MI_THEME-bg);
- border-radius: 16px 16px 0 0;
- overflow: clip;
}
-.tabContent {
- height: 100%;
+.tabMenuButton {
+ padding: 10px;
}
From 62bf0d53d35f1e2a9b2740b88617334f2eadd219 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Tue, 18 Mar 2025 22:21:28 +0900
Subject: [PATCH 4/5] =?UTF-8?q?=F0=9F=8E=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/frontend/src/components/MkPageWindow.vue | 1 -
.../src/components/global/StackingRouterView.vue | 9 +++++++--
packages/frontend/src/pages/settings/index.vue | 2 +-
packages/frontend/src/style.scss | 4 ++--
4 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/packages/frontend/src/components/MkPageWindow.vue b/packages/frontend/src/components/MkPageWindow.vue
index eae2ccec4a..8a1a9c58d2 100644
--- a/packages/frontend/src/components/MkPageWindow.vue
+++ b/packages/frontend/src/components/MkPageWindow.vue
@@ -23,7 +23,6 @@ SPDX-License-Identifier: AGPL-3.0-only
]
-
diff --git a/packages/frontend/src/components/global/StackingRouterView.vue b/packages/frontend/src/components/global/StackingRouterView.vue
index 71a91d4887..8a4afe7360 100644
--- a/packages/frontend/src/components/global/StackingRouterView.vue
+++ b/packages/frontend/src/components/global/StackingRouterView.vue
@@ -17,7 +17,8 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
+
@@ -164,6 +165,8 @@ onBeforeUnmount(() => {
}
.tab {
+ overflow: clip;
+
&:first-child {
position: relative;
width: 100%;
@@ -221,10 +224,12 @@ onBeforeUnmount(() => {
.tabMenu {
margin-left: auto;
+ padding: 0 4px;
background: var(--MI_THEME-bg);
}
.tabMenuButton {
- padding: 10px;
+ padding: 8px;
+ font-size: 13px;
}
diff --git a/packages/frontend/src/pages/settings/index.vue b/packages/frontend/src/pages/settings/index.vue
index ea1b714aed..f6feaee453 100644
--- a/packages/frontend/src/pages/settings/index.vue
+++ b/packages/frontend/src/pages/settings/index.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
-
+
diff --git a/packages/frontend/src/style.scss b/packages/frontend/src/style.scss
index 68384e80cb..7251674f28 100644
--- a/packages/frontend/src/style.scss
+++ b/packages/frontend/src/style.scss
@@ -177,8 +177,8 @@ rt {
overscroll-behavior: contain;
}
-._page {
- height: 100cqh;
+._pageScrollable {
+ height: 100%;
overflow: auto;
overflow-y: scroll;
overscroll-behavior: contain;
From 11378b17c58897060c94c73900f44dad35409dea Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Wed, 19 Mar 2025 09:31:01 +0900
Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=8E=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../components/global/StackingRouterView.vue | 23 ++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/packages/frontend/src/components/global/StackingRouterView.vue b/packages/frontend/src/components/global/StackingRouterView.vue
index 8a4afe7360..d1ca655dee 100644
--- a/packages/frontend/src/components/global/StackingRouterView.vue
+++ b/packages/frontend/src/components/global/StackingRouterView.vue
@@ -17,9 +17,15 @@ SPDX-License-Identifier: AGPL-3.0-only
+
@@ -223,9 +229,24 @@ onBeforeUnmount(() => {
}
.tabMenu {
+ position: relative;
margin-left: auto;
padding: 0 4px;
- background: var(--MI_THEME-bg);
+ background: var(--MI_THEME-panel);
+}
+
+.tabMenuShape {
+ position: absolute;
+ bottom: -1px;
+ left: -100%;
+ height: calc(100% + 1px);
+ width: 129%;
+ pointer-events: none;
+}
+
+.tabBorder {
+ height: 6px;
+ background: var(--MI_THEME-panel);
}
.tabMenuButton {