forked from mirrors/misskey
enhance(frontend): アンテナ・リストの設定画面・タイムラインの動線を改善 (#16739)
* enhance(frontend): アンテナ・リストの設定画面からタイムラインへの動線を追加 * Update Changelog * fix
This commit is contained in:
@@ -16,6 +16,9 @@
|
|||||||
- Enhance: プッシュ通知を行うための権限確認をより確実に行うように
|
- Enhance: プッシュ通知を行うための権限確認をより確実に行うように
|
||||||
- Enhance: 投稿フォームのチュートリアルを追加
|
- Enhance: 投稿フォームのチュートリアルを追加
|
||||||
- Enhance: 「自動でもっと見る」をほとんどの箇所で利用可能に
|
- Enhance: 「自動でもっと見る」をほとんどの箇所で利用可能に
|
||||||
|
- Enhance: アンテナ・リスト設定画面とタイムラインの動線を改善
|
||||||
|
- アンテナ・リスト一覧画面の項目を選択すると、設定画面ではなくタイムラインに移動するようになりました
|
||||||
|
- アンテナ・リストの設定画面の右上にタイムラインに移動するボタンを追加しました
|
||||||
- Fix: 紙吹雪エフェクトがアニメーション設定を考慮せず常に表示される問題を修正
|
- Fix: 紙吹雪エフェクトがアニメーション設定を考慮せず常に表示される問題を修正
|
||||||
- Fix: ナビゲーションバーのリアルタイムモード切替ボタンの状態をよりわかりやすく表示するように
|
- Fix: ナビゲーションバーのリアルタイムモード切替ボタンの状態をよりわかりやすく表示するように
|
||||||
- Fix: ページのタイトルが長いとき、はみ出る問題を修正
|
- Fix: ページのタイトルが長いとき、はみ出る問題を修正
|
||||||
|
|||||||
@@ -36,7 +36,17 @@ misskeyApi('antennas/show', { antennaId: props.antennaId }).then((antennaRespons
|
|||||||
antenna.value = antennaResponse;
|
antenna.value = antennaResponse;
|
||||||
});
|
});
|
||||||
|
|
||||||
const headerActions = computed(() => []);
|
const headerActions = computed(() => antenna.value ? [{
|
||||||
|
icon: 'ti ti-timeline',
|
||||||
|
text: i18n.ts.timeline,
|
||||||
|
handler: () => {
|
||||||
|
router.push('/timeline/antenna/:antennaId', {
|
||||||
|
params: {
|
||||||
|
antennaId: antenna.value!.id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}] : []);
|
||||||
const headerTabs = computed(() => []);
|
const headerTabs = computed(() => []);
|
||||||
|
|
||||||
definePage(() => ({
|
definePage(() => ({
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
<MkButton :link="true" to="/my/antennas/create" primary :class="$style.add"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton>
|
<MkButton :link="true" to="/my/antennas/create" primary :class="$style.add"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton>
|
||||||
|
|
||||||
<div v-if="antennas.length > 0" class="_gaps">
|
<div v-if="antennas.length > 0" class="_gaps">
|
||||||
<MkA v-for="antenna in antennas" :key="antenna.id" :class="$style.antenna" :to="`/my/antennas/${antenna.id}`">
|
<MkA v-for="antenna in antennas" :key="antenna.id" :class="$style.antenna" :to="`/timeline/antenna/${antenna.id}`">
|
||||||
<div class="name">{{ antenna.name }}</div>
|
<div class="name">{{ antenna.name }}</div>
|
||||||
</MkA>
|
</MkA>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
<MkButton primary rounded style="margin: 0 auto;" @click="create"><i class="ti ti-plus"></i> {{ i18n.ts.createList }}</MkButton>
|
<MkButton primary rounded style="margin: 0 auto;" @click="create"><i class="ti ti-plus"></i> {{ i18n.ts.createList }}</MkButton>
|
||||||
|
|
||||||
<div v-if="items.length > 0" class="_gaps">
|
<div v-if="items.length > 0" class="_gaps">
|
||||||
<MkA v-for="list in items" :key="list.id" class="_panel" :class="$style.list" :to="`/my/lists/${ list.id }`">
|
<MkA v-for="list in items" :key="list.id" class="_panel" :class="$style.list" :to="`/timeline/list/${list.id}`">
|
||||||
<div style="margin-bottom: 4px;">{{ list.name }} <span :class="$style.nUsers">({{ i18n.tsx.nUsers({ n: `${list.userIds!.length}/${$i.policies['userEachUserListsLimit']}` }) }})</span></div>
|
<div style="margin-bottom: 4px;">{{ list.name }} <span :class="$style.nUsers">({{ i18n.tsx.nUsers({ n: `${list.userIds!.length}/${$i.policies['userEachUserListsLimit']}` }) }})</span></div>
|
||||||
<MkAvatars :userIds="list.userIds!" :limit="10"/>
|
<MkAvatars :userIds="list.userIds!" :limit="10"/>
|
||||||
</MkA>
|
</MkA>
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
<template #label>{{ i18n.ts.members }}</template>
|
<template #label>{{ i18n.ts.members }}</template>
|
||||||
<template #caption>{{ i18n.tsx.nUsers({ n: `${list.userIds!.length}/${$i.policies['userEachUserListsLimit']}` }) }}</template>
|
<template #caption>{{ i18n.tsx.nUsers({ n: `${list.userIds!.length}/${$i.policies['userEachUserListsLimit']}` }) }}</template>
|
||||||
|
|
||||||
<div class="_gaps_s">
|
<div class="_gaps">
|
||||||
<MkButton rounded primary style="margin: 0 auto;" @click="addUser()">{{ i18n.ts.addUser }}</MkButton>
|
<MkButton rounded primary style="margin: 0 auto;" @click="addUser()"><i class="ti ti-plus"></i> {{ i18n.ts.addUser }}</MkButton>
|
||||||
|
|
||||||
<MkPagination :paginator="membershipsPaginator" withControl>
|
<MkPagination :paginator="membershipsPaginator">
|
||||||
<template #default="{ items }">
|
<template #default="{ items }">
|
||||||
<div class="_gaps_s">
|
<div class="_gaps_s">
|
||||||
<div v-for="item in items" :key="item.id">
|
<div v-for="item in items" :key="item.id">
|
||||||
@@ -67,12 +67,13 @@ import MkInput from '@/components/MkInput.vue';
|
|||||||
import { userListsCache } from '@/cache.js';
|
import { userListsCache } from '@/cache.js';
|
||||||
import { ensureSignin } from '@/i.js';
|
import { ensureSignin } from '@/i.js';
|
||||||
import MkPagination from '@/components/MkPagination.vue';
|
import MkPagination from '@/components/MkPagination.vue';
|
||||||
import { mainRouter } from '@/router.js';
|
import { useRouter } from '@/router.js';
|
||||||
import { prefer } from '@/preferences.js';
|
|
||||||
import { Paginator } from '@/utility/paginator.js';
|
import { Paginator } from '@/utility/paginator.js';
|
||||||
|
|
||||||
const $i = ensureSignin();
|
const $i = ensureSignin();
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
listId: string;
|
listId: string;
|
||||||
}>();
|
}>();
|
||||||
@@ -162,7 +163,7 @@ async function deleteList() {
|
|||||||
listId: list.value.id,
|
listId: list.value.id,
|
||||||
});
|
});
|
||||||
userListsCache.delete();
|
userListsCache.delete();
|
||||||
mainRouter.push('/my/lists');
|
router.push('/my/lists');
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateSettings() {
|
async function updateSettings() {
|
||||||
@@ -181,7 +182,17 @@ async function updateSettings() {
|
|||||||
|
|
||||||
watch(() => props.listId, fetchList, { immediate: true });
|
watch(() => props.listId, fetchList, { immediate: true });
|
||||||
|
|
||||||
const headerActions = computed(() => []);
|
const headerActions = computed(() => list.value ? [{
|
||||||
|
icon: 'ti ti-timeline',
|
||||||
|
text: i18n.ts.timeline,
|
||||||
|
handler: () => {
|
||||||
|
router.push('/timeline/list/:listId', {
|
||||||
|
params: {
|
||||||
|
listId: list.value!.id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}] : []);
|
||||||
|
|
||||||
const headerTabs = computed(() => []);
|
const headerTabs = computed(() => []);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user