diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-06-24 12:58:26 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-06-24 12:58:26 +0900 |
| commit | dc27ba6f036c15ff94aaa76b3a6928e97c934fe7 (patch) | |
| tree | 8f10cd7acdf3c2a456df475511a184cc63603a87 /packages/frontend/src/ui/deck.vue | |
| parent | update misskey-js version (diff) | |
| download | misskey-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.vue | 17 |
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(); |