diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1b650e7de..097195d53 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,13 @@
You should also include the user name that made the change.
-->
+## 13.x.x (unreleased)
+
+### Improvements
+- アニメーションを少なくする設定の時、MkPageHeaderのタブアニメーションを無効化
+
+### Bugfixes
+-
## 13.6.0 (2023/02/11)
diff --git a/packages/frontend/src/components/global/MkPageHeader.tabs.vue b/packages/frontend/src/components/global/MkPageHeader.tabs.vue
new file mode 100644
index 000000000..9b19c5dc8
--- /dev/null
+++ b/packages/frontend/src/components/global/MkPageHeader.tabs.vue
@@ -0,0 +1,218 @@
+
+
+
+
onTabMousedown(t, ev)" @click="(ev) => onTabClick(t, ev)">
+
+
+
{{ t.title }}
+
+ {{ t.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/frontend/src/components/global/MkPageHeader.vue b/packages/frontend/src/components/global/MkPageHeader.vue
index 23a39b9ac..d39fcde1b 100644
--- a/packages/frontend/src/components/global/MkPageHeader.vue
+++ b/packages/frontend/src/components/global/MkPageHeader.vue
@@ -19,27 +19,7 @@
-
-
-
onTabMousedown(t, ev)" @click="(ev) => onTabClick(t, ev)">
-
-
-
{{ t.title }}
-
- {{ t.title }}
-
-
-
-
-
-
+ emit('update:tab', key)" :tabs="tabs" :root-el="el" @tab-click="onTabClick"/>
@@ -48,34 +28,19 @@
-
-
- onTabMousedown(tab, ev)" @click="(ev) => onTabClick(tab, ev)">
-
- {{ tab.title }}
-
-
-
-
+
emit('update:tab', key)" :tabs="tabs" :root-el="el" @tab-click="onTabClick"/>
@@ -418,68 +302,4 @@ onUnmounted(() => {
}
}
}
-
-.tabs {
- display: block;
- position: relative;
- margin: 0;
- height: var(--height);
- font-size: 0.8em;
- text-align: center;
- overflow-x: auto;
- overflow-y: hidden;
- scrollbar-width: none;
-
- &::-webkit-scrollbar {
- display: none;
- }
-}
-
-.tabsInner {
- display: inline-block;
- height: var(--height);
- white-space: nowrap;
-}
-
-.tab {
- display: inline-block;
- position: relative;
- padding: 0 10px;
- height: 100%;
- font-weight: normal;
- opacity: 0.7;
- transition: opacity 0.2s ease;
-
- &:hover {
- opacity: 1;
- }
-
- &.active {
- opacity: 1;
- }
-}
-
-.tabInner {
- display: flex;
- align-items: center;
-}
-
-.tabIcon + .tabTitle {
- margin-left: 8px;
-}
-
-.tabTitle {
- overflow: hidden;
- transition: width 0.15s ease-in-out;
-}
-
-.tabHighlight {
- position: absolute;
- bottom: 0;
- height: 3px;
- background: var(--accent);
- border-radius: 999px;
- transition: width 0.15s ease, left 0.15s ease;
- pointer-events: none;
-}
diff --git a/packages/frontend/src/pages/timeline.vue b/packages/frontend/src/pages/timeline.vue
index 31f4793dc..a07136115 100644
--- a/packages/frontend/src/pages/timeline.vue
+++ b/packages/frontend/src/pages/timeline.vue
@@ -32,6 +32,7 @@ import { i18n } from '@/i18n';
import { instance } from '@/instance';
import { $i } from '@/account';
import { definePageMetadata } from '@/scripts/page-metadata';
+import type { Tab } from '@/components/global/MkPageHeader.tabs.vue';
provide('shouldOmitHeaderTitle', true);
@@ -57,7 +58,7 @@ function queueUpdated(q: number): void {
}
function top(): void {
- scroll(rootEl, { top: 0 });
+ if (rootEl) scroll(rootEl, { top: 0 });
}
async function chooseList(ev: MouseEvent): Promise {
@@ -150,7 +151,7 @@ const headerTabs = $computed(() => [{
title: i18n.ts.channel,
iconOnly: true,
onClick: chooseChannel,
-}]);
+}] as Tab[]);
const headerTabsWhenNotLogin = $computed(() => [
...(isLocalTimelineAvailable ? [{
@@ -165,7 +166,7 @@ const headerTabsWhenNotLogin = $computed(() => [
icon: 'ti ti-whirl',
iconOnly: true,
}] : []),
-]);
+] as Tab[]);
definePageMetadata(computed(() => ({
title: i18n.ts.timeline,