enhance(frontend): チャンネル周りのUIの整理 (#16743)
* enhance(frontend): チャンネル周りのUIの整理 * fix: 共通要素間の一貫性を保つ * Update Changelog * fix: チャンネル新規作成を管理タブに移動・上部ボタン削除
This commit is contained in:
parent
0abe021640
commit
0edb0133fc
|
|
@ -5,6 +5,7 @@
|
||||||
- Enhance: DockerのNode.jsが24.10.0に更新されました
|
- Enhance: DockerのNode.jsが24.10.0に更新されました
|
||||||
|
|
||||||
### Client
|
### Client
|
||||||
|
- Enhance: 管理しているチャンネルの見分けがつきやすくなるように
|
||||||
- Fix: 紙吹雪エフェクトがアニメーション設定を考慮せず常に表示される問題を修正
|
- Fix: 紙吹雪エフェクトがアニメーション設定を考慮せず常に表示される問題を修正
|
||||||
- Fix: ナビゲーションバーのリアルタイムモード切替ボタンの状態をよりわかりやすく表示するように
|
- Fix: ナビゲーションバーのリアルタイムモード切替ボタンの状態をよりわかりやすく表示するように
|
||||||
- Fix: ページのタイトルが長いとき、はみ出る問題を修正
|
- Fix: ページのタイトルが長いとき、はみ出る問題を修正
|
||||||
|
|
|
||||||
|
|
@ -5605,6 +5605,10 @@ export interface Locale extends ILocale {
|
||||||
* 技術的なお問い合わせの際に、以下の情報を併記すると問題の解決に役立つことがあります。
|
* 技術的なお問い合わせの際に、以下の情報を併記すると問題の解決に役立つことがあります。
|
||||||
*/
|
*/
|
||||||
"deviceInfoDescription": string;
|
"deviceInfoDescription": string;
|
||||||
|
/**
|
||||||
|
* あなたは管理者です
|
||||||
|
*/
|
||||||
|
"youAreAdmin": string;
|
||||||
"_compression": {
|
"_compression": {
|
||||||
"_quality": {
|
"_quality": {
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1396,6 +1396,7 @@ scheduled: "予約"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
deviceInfo: "デバイス情報"
|
deviceInfo: "デバイス情報"
|
||||||
deviceInfoDescription: "技術的なお問い合わせの際に、以下の情報を併記すると問題の解決に役立つことがあります。"
|
deviceInfoDescription: "技術的なお問い合わせの際に、以下の情報を併記すると問題の解決に役立つことがあります。"
|
||||||
|
youAreAdmin: "あなたは管理者です"
|
||||||
|
|
||||||
_compression:
|
_compression:
|
||||||
_quality:
|
_quality:
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,10 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</template>
|
</template>
|
||||||
</I18n>
|
</I18n>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-if="$i != null && $i.id === channel.userId" style="color: var(--MI_THEME-warn)">
|
||||||
|
<i class="ti ti-user-star ti-fw"></i>
|
||||||
|
<span style="margin-left: 4px;">{{ i18n.ts.youAreAdmin }}</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<article v-if="channel.description">
|
<article v-if="channel.description">
|
||||||
|
|
@ -48,6 +52,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, ref, watch } from 'vue';
|
import { computed, ref, watch } from 'vue';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
|
import { $i } from '@/i.js';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import { miLocalStorage } from '@/local-storage.js';
|
import { miLocalStorage } from '@/local-storage.js';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<div :class="$style.bannerStatus">
|
<div :class="$style.bannerStatus">
|
||||||
<div><i class="ti ti-users ti-fw"></i><I18n :src="i18n.ts._channel.usersCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.usersCount }}</b></template></I18n></div>
|
<div><i class="ti ti-users ti-fw"></i><I18n :src="i18n.ts._channel.usersCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.usersCount }}</b></template></I18n></div>
|
||||||
<div><i class="ti ti-pencil ti-fw"></i><I18n :src="i18n.ts._channel.notesCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.notesCount }}</b></template></I18n></div>
|
<div><i class="ti ti-pencil ti-fw"></i><I18n :src="i18n.ts._channel.notesCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.notesCount }}</b></template></I18n></div>
|
||||||
|
<div v-if="$i != null && channel != null && $i.id === channel.userId" style="color: var(--MI_THEME-warn)"><i class="ti ti-user-star ti-fw"></i><span style="margin-left: 4px;">{{ i18n.ts.youAreAdmin }}</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="channel.isSensitive" :class="$style.sensitiveIndicator">{{ i18n.ts.sensitive }}</div>
|
<div v-if="channel.isSensitive" :class="$style.sensitiveIndicator">{{ i18n.ts.sensitive }}</div>
|
||||||
<div :class="$style.bannerFade"></div>
|
<div :class="$style.bannerFade"></div>
|
||||||
|
|
|
||||||
|
|
@ -44,8 +44,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</div>
|
</div>
|
||||||
</MkPagination>
|
</MkPagination>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="tab === 'owned'">
|
<div v-else-if="tab === 'owned'" class="_gaps">
|
||||||
<MkButton class="new" @click="create()"><i class="ti ti-plus"></i></MkButton>
|
<MkButton link primary rounded to="/channels/new"><i class="ti ti-plus"></i> {{ i18n.ts.createNew }}</MkButton>
|
||||||
<MkPagination v-slot="{items}" :paginator="ownedPaginator">
|
<MkPagination v-slot="{items}" :paginator="ownedPaginator">
|
||||||
<div :class="$style.root">
|
<div :class="$style.root">
|
||||||
<MkChannelPreview v-for="channel in items" :key="channel.id" :channel="channel"/>
|
<MkChannelPreview v-for="channel in items" :key="channel.id" :channel="channel"/>
|
||||||
|
|
@ -126,15 +126,7 @@ async function search() {
|
||||||
key.value = query + type;
|
key.value = query + type;
|
||||||
}
|
}
|
||||||
|
|
||||||
function create() {
|
const headerActions = computed(() => []);
|
||||||
router.push('/channels/new');
|
|
||||||
}
|
|
||||||
|
|
||||||
const headerActions = computed(() => [{
|
|
||||||
icon: 'ti ti-plus',
|
|
||||||
text: i18n.ts.create,
|
|
||||||
handler: create,
|
|
||||||
}]);
|
|
||||||
|
|
||||||
const headerTabs = computed(() => [{
|
const headerTabs = computed(() => [{
|
||||||
key: 'search',
|
key: 'search',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue