This commit is contained in:
syuilo 2020-02-06 19:11:14 +09:00
parent 692078f490
commit c7da2a4b5f
10 changed files with 31 additions and 11 deletions

View file

@ -1,6 +1,11 @@
ChangeLog ChangeLog
========= =========
unreleased
--------------------
### ✨Improvements
* UIのアニメーションを無効にできるように
12.1.0 (2020/02/06) 12.1.0 (2020/02/06)
-------------------- --------------------
### ✨Improvements ### ✨Improvements

View file

@ -350,6 +350,7 @@ post: "投稿"
posted: "投稿しました" posted: "投稿しました"
autoReloadWhenDisconnected: "サーバー切断時に自動リロード" autoReloadWhenDisconnected: "サーバー切断時に自動リロード"
autoNoteWatch: "ノートの自動ウォッチ" autoNoteWatch: "ノートの自動ウォッチ"
reduceUiAnimation: "UIのアニメーションを減らす"
_2fa: _2fa:
registerDevice: "デバイスを登録" registerDevice: "デバイスを登録"

View file

@ -2,10 +2,10 @@
<div class="mk-app" v-hotkey.global="keymap"> <div class="mk-app" v-hotkey.global="keymap">
<header class="header"> <header class="header">
<div class="title" ref="title"> <div class="title" ref="title">
<transition name="header" mode="out-in" appear> <transition :name="$store.state.device.animation ? 'header' : ''" mode="out-in" appear>
<button class="_button back" v-if="canBack" @click="back()"><fa :icon="faChevronLeft"/></button> <button class="_button back" v-if="canBack" @click="back()"><fa :icon="faChevronLeft"/></button>
</transition> </transition>
<transition name="header" mode="out-in" appear> <transition :name="$store.state.device.animation ? 'header' : ''" mode="out-in" appear>
<div class="body" :key="pageKey"> <div class="body" :key="pageKey">
<div class="default"> <div class="default">
<portal-target name="avatar" slim/> <portal-target name="avatar" slim/>
@ -76,7 +76,7 @@
<div class="contents"> <div class="contents">
<main ref="main"> <main ref="main">
<div class="content"> <div class="content">
<transition name="page" mode="out-in" @enter="onTransition"> <transition :name="$store.state.device.animation ? 'page' : ''" mode="out-in" @enter="onTransition">
<keep-alive :include="['index']"> <keep-alive :include="['index']">
<router-view></router-view> <router-view></router-view>
</keep-alive> </keep-alive>

View file

@ -1,9 +1,9 @@
<template> <template>
<div class="mk-modal"> <div class="mk-modal">
<transition name="bg-fade" appear> <transition :name="$store.state.device.animation ? 'bg-fade' : ''" appear>
<div class="bg" ref="bg" v-if="show" @click="close()"></div> <div class="bg" ref="bg" v-if="show" @click="close()"></div>
</transition> </transition>
<transition name="modal" appear @after-leave="() => { $emit('closed'); destroyDom(); }"> <transition :name="$store.state.device.animation ? 'modal' : ''" appear @after-leave="() => { $emit('closed'); destroyDom(); }">
<div class="content" ref="content" v-if="show" @click.self="close()"><slot></slot></div> <div class="content" ref="content" v-if="show" @click.self="close()"><slot></slot></div>
</transition> </transition>
</div> </div>

View file

@ -1,9 +1,9 @@
<template> <template>
<div class="mk-popup"> <div class="mk-popup">
<transition name="bg-fade" appear> <transition :name="$store.state.device.animation ? 'bg-fade' : ''" appear>
<div class="bg" ref="bg" @click="close()" v-if="show"></div> <div class="bg" ref="bg" @click="close()" v-if="show"></div>
</transition> </transition>
<transition name="popup" appear @after-leave="() => { $emit('closed'); destroyDom(); }"> <transition :name="$store.state.device.animation ? 'popup' : ''" appear @after-leave="() => { $emit('closed'); destroyDom(); }">
<div class="content" :class="{ fixed }" ref="content" v-if="show" :style="{ width: width ? width + 'px' : 'auto' }"><slot></slot></div> <div class="content" :class="{ fixed }" ref="content" v-if="show" :style="{ width: width ? width + 'px' : 'auto' }"><slot></slot></div>
</transition> </transition>
</div> </div>

View file

@ -1,10 +1,10 @@
<template> <template>
<div class="ulveipglmagnxfgvitaxyszerjwiqmwl"> <div class="ulveipglmagnxfgvitaxyszerjwiqmwl">
<transition name="form-fade" appear> <transition :name="$store.state.device.animation ? 'form-fade' : ''" appear>
<div class="bg" ref="bg" v-if="show" @click="close()"></div> <div class="bg" ref="bg" v-if="show" @click="close()"></div>
</transition> </transition>
<div class="main" ref="main" @click.self="close()" @keydown="onKeydown"> <div class="main" ref="main" @click.self="close()" @keydown="onKeydown">
<transition name="form" appear <transition :name="$store.state.device.animation ? 'form' : ''" appear
@after-leave="destroyDom" @after-leave="destroyDom"
> >
<x-post-form ref="form" <x-post-form ref="form"

View file

@ -1,5 +1,5 @@
<template> <template>
<transition-group <transition-group v-if="$store.state.device.animation"
name="staggered-fade" name="staggered-fade"
tag="div" tag="div"
:css="false" :css="false"
@ -11,6 +11,9 @@
> >
<slot></slot> <slot></slot>
</transition-group> </transition-group>
<div v-else>
<slot></slot>
</div>
</template> </template>
<script lang="ts"> <script lang="ts">

View file

@ -22,6 +22,11 @@
<mk-button @click="readAllUnreadNotes">{{ $t('mark-as-read-all-unread-notes') }}</mk-button> <mk-button @click="readAllUnreadNotes">{{ $t('mark-as-read-all-unread-notes') }}</mk-button>
<mk-button @click="readAllMessagingMessages">{{ $t('mark-as-read-all-talk-messages') }}</mk-button> <mk-button @click="readAllMessagingMessages">{{ $t('mark-as-read-all-talk-messages') }}</mk-button>
</div> </div>
<div class="_content">
<mk-switch v-model="reduceAnimation">
{{ $t('reduceUiAnimation') }}
</mk-switch>
</div>
</section> </section>
</template> </template>
@ -60,6 +65,11 @@ export default Vue.extend({
get() { return this.$store.state.device.autoReload; }, get() { return this.$store.state.device.autoReload; },
set(value) { this.$store.commit('device/set', { key: 'autoReload', value }); } set(value) { this.$store.commit('device/set', { key: 'autoReload', value }); }
}, },
reduceAnimation: {
get() { return !this.$store.state.device.animation; },
set(value) { this.$store.commit('device/set', { key: 'animation', value: !value }); }
},
}, },
methods: { methods: {

View file

@ -4,7 +4,7 @@
<portal to="avatar" v-if="user"><mk-avatar class="avatar" :user="user" :disable-preview="true"/></portal> <portal to="avatar" v-if="user"><mk-avatar class="avatar" :user="user" :disable-preview="true"/></portal>
<div class="remote-caution _panel" v-if="user.host != null"><fa :icon="faExclamationTriangle" style="margin-right: 8px;"/>{{ $t('remoteUserCaution') }}<a :href="user.url" rel="nofollow noopener" target="_blank">{{ $t('showOnRemote') }}</a></div> <div class="remote-caution _panel" v-if="user.host != null"><fa :icon="faExclamationTriangle" style="margin-right: 8px;"/>{{ $t('remoteUserCaution') }}<a :href="user.url" rel="nofollow noopener" target="_blank">{{ $t('showOnRemote') }}</a></div>
<transition name="zoom" mode="out-in" appear> <transition :name="$store.state.device.animation ? 'zoom' : ''" mode="out-in" appear>
<div class="profile _panel" :key="user.id"> <div class="profile _panel" :key="user.id">
<div class="banner-container" :style="style"> <div class="banner-container" :style="style">
<div class="banner" ref="banner" :style="style"></div> <div class="banner" ref="banner" :style="style"></div>

View file

@ -29,6 +29,7 @@ const defaultDeviceSettings = {
localOnly: false, localOnly: false,
themes: [], themes: [],
theme: 'light', theme: 'light',
animation: true,
}; };
export default (os: MiOS) => new Vuex.Store({ export default (os: MiOS) => new Vuex.Store({