mirror of
https://git.joinsharkey.org/Sharkey/Sharkey.git
synced 2024-12-28 06:03:08 +02:00
✌️
This commit is contained in:
parent
f565e0f8a5
commit
78944bf441
1 changed files with 4 additions and 24 deletions
|
@ -233,43 +233,23 @@ watch([$$(weakBacked), $$(contentEl)], () => {
|
|||
})();
|
||||
});
|
||||
|
||||
function preventDefault(ev: Event) {
|
||||
ev.preventDefault();
|
||||
}
|
||||
|
||||
/**
|
||||
* アイテムを上に追加した場合に追加分だけスクロールを下にずらす
|
||||
* @param fn DOM操作(unshiftItemsなどで)
|
||||
*/
|
||||
function adjustScroll(fn: () => void): Promise<void> {
|
||||
const oldHeight = scrollableElement ? scrollableElement.scrollHeight : getBodyScrollHeight();
|
||||
const oldScroll = scrollableElement ? scrollableElement.scrollTop : window.scrollY;
|
||||
// スクロールをやめさせる
|
||||
try {
|
||||
// なぜかscrollableElementOrHtmlがundefinedであるというエラーが出る
|
||||
scrollableElementOrHtml.addEventListener('mousewheel', preventDefault, { passive: false });
|
||||
scrollableElementOrHtml.addEventListener('touchmove', preventDefault, { passive: false });
|
||||
// ついでにtryに入れてみる
|
||||
scroll(scrollableElement, { top: oldScroll, behavior: 'instant' });
|
||||
} catch (err) {
|
||||
console.error(err, { scrollableElementOrHtml });
|
||||
}
|
||||
|
||||
denyMoveTransition.value = true;
|
||||
|
||||
fn();
|
||||
|
||||
return nextTick(() => {
|
||||
try {
|
||||
const top = oldScroll + ((scrollableElement ? scrollableElement.scrollHeight : getBodyScrollHeight()) - oldHeight);
|
||||
scroll(scrollableElement, { top, behavior: 'instant' });
|
||||
const diff = (scrollableElement ? scrollableElement.scrollHeight : getBodyScrollHeight()) - oldHeight;
|
||||
const newScroll = scrollableElement ? scrollableElement.scrollTop : window.scrollY;
|
||||
const top = newScroll + diff;
|
||||
scroll(scrollableElement, { top, behavior: 'instant' });
|
||||
|
||||
// なぜかscrollableElementOrHtmlがundefinedであるというエラーが出る
|
||||
scrollableElementOrHtml.removeEventListener('mousewheel', preventDefault);
|
||||
scrollableElementOrHtml.removeEventListener('touchmove', preventDefault);
|
||||
} catch (err) {
|
||||
console.error(err, { scrollableElementOrHtml });
|
||||
}
|
||||
denyMoveTransition.value = false;
|
||||
return nextTick();
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue