From c4f8cda4aa1cec9d1eb97557145f3ad3d2d0e469 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Fri, 2 May 2025 13:46:26 +0900 Subject: [PATCH] test --- .../frontend/src/components/MkPullToRefresh.vue | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/frontend/src/components/MkPullToRefresh.vue b/packages/frontend/src/components/MkPullToRefresh.vue index 22ae563d13..38a8bea68e 100644 --- a/packages/frontend/src/components/MkPullToRefresh.vue +++ b/packages/frontend/src/components/MkPullToRefresh.vue @@ -39,7 +39,6 @@ const isPullEnd = ref(false); const isRefreshing = ref(false); const pullDistance = ref(0); -let supportPointerDesktop = false; let startScreenY: number | null = null; const rootEl = useTemplateRef('rootEl'); @@ -58,10 +57,11 @@ const emit = defineEmits<{ }>(); function getScreenY(event) { - if (supportPointerDesktop) { + if (event.touches && event.touches[0] && event.touches[0].screenY != null) { + event.touches[0].screenY; + } else { return event.screenY; } - return event.touches[0].screenY; } function moveStart(event) { @@ -129,7 +129,7 @@ function moveEnd() { function moving(event: TouchEvent | PointerEvent) { if (!isPullStart.value || isRefreshing.value || disabled) return; - if ((scrollEl?.scrollTop ?? 0) > (supportPointerDesktop ? SCROLL_STOP : SCROLL_STOP + pullDistance.value) || isHorizontalSwipeSwiping.value) { + if ((scrollEl?.scrollTop ?? 0) > SCROLL_STOP + pullDistance.value || isHorizontalSwipeSwiping.value) { pullDistance.value = 0; isPullEnd.value = false; moveEnd(); @@ -186,14 +186,18 @@ function onScrollContainerScroll() { function registerEventListenersForReadyToPull() { if (rootEl.value == null) return; + rootEl.value.addEventListener('mousedown', moveStart, { passive: true }); rootEl.value.addEventListener('touchstart', moveStart, { passive: true }); rootEl.value.addEventListener('touchmove', moving, { passive: false }); // passive: falseにしないとpreventDefaultが使えない + window.addEventListener('pointermove', moving, { passive: true }); } function unregisterEventListenersForReadyToPull() { if (rootEl.value == null) return; + rootEl.value.removeEventListener('mousedown', moveStart); rootEl.value.removeEventListener('touchstart', moveStart); rootEl.value.removeEventListener('touchmove', moving); + window.removeEventListener('pointermove', moving); } onMounted(() => { @@ -205,6 +209,7 @@ onMounted(() => { scrollEl.addEventListener('scroll', onScrollContainerScroll, { passive: true }); rootEl.value.addEventListener('touchend', moveEnd, { passive: true }); + window.addEventListener('pointerup', moveEnd, { passive: true }); registerEventListenersForReadyToPull(); });