From c6dd932a0b755a63e72d00942ea1ba1fa6669506 Mon Sep 17 00:00:00 2001 From: syuilo <syuilotan@yahoo.co.jp> Date: Sat, 7 Nov 2020 12:30:16 +0900 Subject: [PATCH] Improve usability --- src/client/components/ui/a.vue | 6 +++++- src/client/ui/_common_/header.vue | 6 +++--- src/client/ui/default.vue | 7 ++++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/client/components/ui/a.vue b/src/client/components/ui/a.vue index 384ee0259..f6c66257b 100644 --- a/src/client/components/ui/a.vue +++ b/src/client/components/ui/a.vue @@ -121,7 +121,11 @@ export default defineComponent({ return this.window(); } - this.$router.push(this.to); + if (this.$router.currentRoute.value.path === this.to) { + window.scroll({ top: 0, behavior: 'smooth' }); + } else { + this.$router.push(this.to); + } } } } diff --git a/src/client/ui/_common_/header.vue b/src/client/ui/_common_/header.vue index 13f6420aa..af7f1c2b6 100644 --- a/src/client/ui/_common_/header.vue +++ b/src/client/ui/_common_/header.vue @@ -1,12 +1,12 @@ <template> <div class="fdidabkb"> <transition :name="$store.state.device.animation ? 'header' : ''" mode="out-in" appear> - <button class="_button back" v-if="withBack && canBack" @click="back()"><Fa :icon="faChevronLeft"/></button> + <button class="_button back" v-if="withBack && canBack" @click.stop="back()"><Fa :icon="faChevronLeft"/></button> </transition> <template v-if="info"> <div class="titleContainer"> <template v-if="info.tabs"> - <div class="title" v-for="tab in info.tabs" :key="tab.id" :class="{ _button: tab.onClick, selected: tab.selected }" @click="tab.onClick" v-tooltip="tab.tooltip"> + <div class="title" v-for="tab in info.tabs" :key="tab.id" :class="{ _button: tab.onClick, selected: tab.selected }" @click.stop="tab.onClick" v-tooltip="tab.tooltip"> <Fa v-if="tab.icon" :icon="tab.icon" :key="tab.icon" class="icon"/> <span v-if="tab.title" class="text">{{ tab.title }}</span> </div> @@ -20,7 +20,7 @@ </div> </template> </div> - <button class="_button action" v-if="info.action" @click="info.action.handler"><Fa :icon="info.action.icon" :key="info.action.icon"/></button> + <button class="_button action" v-if="info.action" @click.stop="info.action.handler"><Fa :icon="info.action.icon" :key="info.action.icon"/></button> </template> </div> </template> diff --git a/src/client/ui/default.vue b/src/client/ui/default.vue index 0073a0c8c..7065b345f 100644 --- a/src/client/ui/default.vue +++ b/src/client/ui/default.vue @@ -3,7 +3,7 @@ <XSidebar ref="nav" class="sidebar"/> <div class="contents" ref="contents" :class="{ wallpaper }"> - <header class="header" ref="header" @contextmenu.prevent.stop="onContextmenu"> + <header class="header" ref="header" @contextmenu.prevent.stop="onContextmenu" @click="onHeaderClick"> <XHeader :info="pageInfo"/> </header> <main ref="main"> @@ -211,6 +211,10 @@ export default defineComponent({ if (window._scroll) window._scroll(); }, + onHeaderClick() { + window.scroll({ top: 0, behavior: 'smooth' }); + }, + onContextmenu(e) { const path = this.$route.path; os.contextMenu([{ @@ -292,6 +296,7 @@ export default defineComponent({ backdrop-filter: blur(32px); background-color: var(--header); border-bottom: solid 1px var(--divider); + user-select: none; } > main {