summaryrefslogtreecommitdiff
path: root/packages/frontend/src/ui/deck.vue
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-06-24 12:58:26 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-06-24 12:58:26 +0900
commitdc27ba6f036c15ff94aaa76b3a6928e97c934fe7 (patch)
tree8f10cd7acdf3c2a456df475511a184cc63603a87 /packages/frontend/src/ui/deck.vue
parentupdate misskey-js version (diff)
downloadmisskey-dc27ba6f036c15ff94aaa76b3a6928e97c934fe7.tar.gz
misskey-dc27ba6f036c15ff94aaa76b3a6928e97c934fe7.tar.bz2
misskey-dc27ba6f036c15ff94aaa76b3a6928e97c934fe7.zip
enhance(frontend): improve ux of deck scroll
Resolve #11007
Diffstat (limited to 'packages/frontend/src/ui/deck.vue')
-rw-r--r--packages/frontend/src/ui/deck.vue17
1 files changed, 9 insertions, 8 deletions
diff --git a/packages/frontend/src/ui/deck.vue b/packages/frontend/src/ui/deck.vue
index bd5d5beb84..988fda1c2f 100644
--- a/packages/frontend/src/ui/deck.vue
+++ b/packages/frontend/src/ui/deck.vue
@@ -4,12 +4,13 @@
<div :class="$style.main">
<XStatusBars/>
- <div ref="columnsEl" :class="[$style.sections, { [$style.center]: deckStore.reactiveState.columnAlign.value === 'center', [$style.snapScroll]: snapScroll }]" @contextmenu.self.prevent="onContextmenu">
+ <div ref="columnsEl" :class="[$style.sections, { [$style.center]: deckStore.reactiveState.columnAlign.value === 'center', [$style.snapScroll]: snapScroll }]" @contextmenu.self.prevent="onContextmenu" @wheel.self="onWheel">
<!-- sectionを利用しているのは、deck.vue側でcolumnに対してfirst-of-typeを効かせるため -->
<section
v-for="ids in layout"
:class="$style.section"
:style="columns.filter(c => ids.includes(c.id)).some(c => c.flexible) ? { flex: 1, minWidth: '350px' } : { width: Math.max(...columns.filter(c => ids.includes(c.id)).map(c => c.width)) + 'px' }"
+ @wheel.self="onWheel"
>
<component
:is="columnComponents[columns.find(c => c.id === id)!.type] ?? XTlColumn"
@@ -19,6 +20,7 @@
:class="$style.column"
:column="columns.find(c => c.id === id)"
:isStacked="ids.length > 1"
+ @headerWheel="onWheel"
/>
</section>
<div v-if="layout.length === 0" class="_panel" :class="$style.onboarding">
@@ -196,15 +198,14 @@ const onContextmenu = (ev) => {
}], ev);
};
-document.documentElement.style.overflowY = 'hidden';
-document.documentElement.style.scrollBehavior = 'auto';
-window.addEventListener('wheel', (ev) => {
- if (ev.target === columnsEl && ev.deltaX === 0) {
- columnsEl.scrollLeft += ev.deltaY;
- } else if (getScrollContainer(ev.target as HTMLElement) == null && ev.deltaX === 0) {
+function onWheel(ev: WheelEvent) {
+ if (ev.deltaX === 0) {
columnsEl.scrollLeft += ev.deltaY;
}
-});
+}
+
+document.documentElement.style.overflowY = 'hidden';
+document.documentElement.style.scrollBehavior = 'auto';
loadDeck();