diff --git a/packages/directives/repeat-click/index.ts b/packages/directives/repeat-click/index.ts index 4f4caa265b..d37ede516d 100644 --- a/packages/directives/repeat-click/index.ts +++ b/packages/directives/repeat-click/index.ts @@ -1,17 +1,14 @@ -// @ts-nocheck -import { on, once } from '@element-plus/utils' - import type { DirectiveBinding, ObjectDirective } from 'vue' -export default { +const RepeatClick: ObjectDirective = { beforeMount(el: HTMLElement, binding: DirectiveBinding) { - let interval = null + let interval: ReturnType | null = null let isHandlerCalled = false const handler = () => binding.value && binding.value() const clear = () => { - clearInterval(interval) + clearInterval(interval!) interval = null if (!isHandlerCalled) { @@ -20,16 +17,18 @@ export default { isHandlerCalled = false } - on(el, 'mousedown', (e: MouseEvent) => { - if ((e as any).button !== 0) return + el.addEventListener('mousedown', (e: MouseEvent) => { + if (e.button !== 0) return - once(document as any, 'mouseup', clear) + document.addEventListener('mouseup', clear, { once: true }) - clearInterval(interval) + clearInterval(interval!) interval = setInterval(() => { isHandlerCalled = true handler() }, 100) }) }, -} as ObjectDirective +} + +export default RepeatClick