From 606ff06322a342231e30b7fcadfb53bc023e4816 Mon Sep 17 00:00:00 2001 From: sea <45450994+warmthsea@users.noreply.github.com> Date: Fri, 26 Jul 2024 21:01:17 +0800 Subject: [PATCH] improvement(components): @touchstart @touchmove @wheel add passive (#16741) * perf(components): @touchstart @touchmove add passive * perf(components): update passive * perf(components): update passive * perf(components): update passive * perf(components): update passive * perf(components): update passive * style: fix lint * perf(components): update passive * perf(components): update passive * perf: delete useless code --- .../components/color-picker/src/utils/draggable.ts | 2 +- packages/components/slider/src/button.vue | 1 - .../slider/src/composables/use-slider-button.ts | 3 +++ packages/components/slider/src/slider.vue | 12 +++++++++--- .../virtual-list/src/builders/build-grid.ts | 6 +++++- .../virtual-list/src/builders/build-list.ts | 7 +++++-- .../virtual-list/src/components/scrollbar.ts | 2 +- 7 files changed, 24 insertions(+), 9 deletions(-) diff --git a/packages/components/color-picker/src/utils/draggable.ts b/packages/components/color-picker/src/utils/draggable.ts index 07455c5efb..2e612a8247 100644 --- a/packages/components/color-picker/src/utils/draggable.ts +++ b/packages/components/color-picker/src/utils/draggable.ts @@ -44,5 +44,5 @@ export function draggable(element: HTMLElement, options: DraggableOptions) { } element.addEventListener('mousedown', downFn) - element.addEventListener('touchstart', downFn) + element.addEventListener('touchstart', downFn, { passive: false }) } diff --git a/packages/components/slider/src/button.vue b/packages/components/slider/src/button.vue index 1e390769a4..3342552fad 100644 --- a/packages/components/slider/src/button.vue +++ b/packages/components/slider/src/button.vue @@ -7,7 +7,6 @@ @mouseenter="handleMouseEnter" @mouseleave="handleMouseLeave" @mousedown="onButtonDown" - @touchstart="onButtonDown" @focus="handleMouseEnter" @blur="handleMouseLeave" @keydown="onKeyDown" diff --git a/packages/components/slider/src/composables/use-slider-button.ts b/packages/components/slider/src/composables/use-slider-button.ts index 0d5f1699e7..9613d1f10c 100644 --- a/packages/components/slider/src/composables/use-slider-button.ts +++ b/packages/components/slider/src/composables/use-slider-button.ts @@ -1,5 +1,6 @@ import { computed, inject, nextTick, ref, watch } from 'vue' import { debounce } from 'lodash-unified' +import { useEventListener } from '@vueuse/core' import { EVENT_CODE, UPDATE_MODEL_EVENT } from '@element-plus/constants' import { sliderContextKey } from '../constants' @@ -273,6 +274,8 @@ export const useSliderButton = ( } ) + useEventListener(button, 'touchstart', onButtonDown, { passive: false }) + return { disabled, button, diff --git a/packages/components/slider/src/slider.vue b/packages/components/slider/src/slider.vue index 7f764bd8ab..522143354a 100644 --- a/packages/components/slider/src/slider.vue +++ b/packages/components/slider/src/slider.vue @@ -8,8 +8,6 @@ :aria-labelledby=" range && isLabeledByFormItem ? elFormItem?.labelId : undefined " - @touchstart="onSliderWrapperPrevent" - @touchmove="onSliderWrapperPrevent" >