Skip to content

Commit 7bb6b6d

Browse files
authored
refactor(utils): drop off/on/once, use EventListener instead (element-plus#8960)
* refactor(utils): drop off/on/once, use EventListener instead * refactor(utils): use useEventListener * refactor(utils): use useEventListener * style(components): [roving-focus-group] useEventListener pass ref
1 parent 16eab65 commit 7bb6b6d

File tree

6 files changed

+22
-76
lines changed

6 files changed

+22
-76
lines changed

packages/components/color-picker/src/draggable.ts

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { isClient } from '@vueuse/core'
2-
import { off, on } from '@element-plus/utils'
32

43
let isDragging = false
54

@@ -17,10 +16,10 @@ export default function (element: HTMLElement, options: IOptions) {
1716
}
1817

1918
const upFn = function (event: Event) {
20-
off(document, 'mousemove', moveFn)
21-
off(document, 'mouseup', upFn)
22-
off(document, 'touchmove', moveFn)
23-
off(document, 'touchend', upFn)
19+
document.removeEventListener('mousemove', moveFn)
20+
document.removeEventListener('mouseup', upFn)
21+
document.removeEventListener('touchmove', moveFn)
22+
document.removeEventListener('touchend', upFn)
2423
document.onselectstart = null
2524
document.ondragstart = null
2625

@@ -34,16 +33,16 @@ export default function (element: HTMLElement, options: IOptions) {
3433
event.preventDefault()
3534
document.onselectstart = () => false
3635
document.ondragstart = () => false
37-
on(document, 'mousemove', moveFn)
38-
on(document, 'mouseup', upFn)
39-
on(document, 'touchmove', moveFn)
40-
on(document, 'touchend', upFn)
36+
document.addEventListener('mousemove', moveFn)
37+
document.addEventListener('mouseup', upFn)
38+
document.addEventListener('touchmove', moveFn)
39+
document.addEventListener('touchend', upFn)
4140

4241
isDragging = true
4342

4443
options.start?.(event)
4544
}
4645

47-
on(element, 'mousedown', downFn)
48-
on(element, 'touchstart', downFn)
46+
document.addEventListener('mousedown', downFn)
47+
document.addEventListener('touchstart', downFn)
4948
}

packages/components/dropdown/src/useDropdown.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// @ts-nocheck
22
import { computed, inject, ref } from 'vue'
3-
import { addClass, generateId, on } from '@element-plus/utils'
3+
import { addClass, generateId } from '@element-plus/utils'
44
import { EVENT_CODE } from '@element-plus/constants'
55
import { useNamespace } from '@element-plus/hooks'
66
import type { Nullable } from '@element-plus/utils'
@@ -96,8 +96,8 @@ export const initDropdownDomEvent = (
9696
}
9797

9898
function initEvent() {
99-
on(triggerElm, 'keydown', handleTriggerKeyDown)
100-
on(dropdownElm.value, 'keydown', handleItemKeyDown, true)
99+
triggerElm?.addEventListener('keydown', handleTriggerKeyDown)
100+
dropdownElm.value?.addEventListener('keydown', handleItemKeyDown, true)
101101
}
102102

103103
function initDomOperation() {

packages/components/message-box/src/index.vue

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,6 @@ import {
178178
TypeComponents,
179179
TypeComponentsMap,
180180
isValidComponentSize,
181-
off,
182-
on,
183181
} from '@element-plus/utils'
184182
import { ElIcon } from '@element-plus/components/icon'
185183
import ElFocusTrap from '@element-plus/components/focus-trap'
@@ -371,13 +369,13 @@ export default defineComponent({
371369
onMounted(async () => {
372370
await nextTick()
373371
if (props.closeOnHashChange) {
374-
on(window, 'hashchange', doClose)
372+
window.addEventListener('hashchange', doClose)
375373
}
376374
})
377375
378376
onBeforeUnmount(() => {
379377
if (props.closeOnHashChange) {
380-
off(window, 'hashchange', doClose)
378+
window.removeEventListener('hashchange', doClose)
381379
}
382380
})
383381

packages/components/roving-focus-group/src/roving-focus-group-impl.vue

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,15 @@ import {
77
computed,
88
defineComponent,
99
inject,
10-
onBeforeUnmount,
11-
onMounted,
1210
provide,
1311
readonly,
1412
ref,
1513
toRef,
1614
unref,
1715
watch,
1816
} from 'vue'
19-
import { composeEventHandlers, off, on } from '@element-plus/utils'
17+
import { useEventListener } from '@vueuse/core'
18+
import { composeEventHandlers } from '@element-plus/utils'
2019
import {
2120
ROVING_FOCUS_COLLECTION_INJECTION_KEY,
2221
rovingFocusGroupProps,
@@ -148,15 +147,7 @@ export default defineComponent({
148147
}
149148
)
150149
151-
onMounted(() => {
152-
const rovingFocusGroupEl = unref(rovingFocusGroupRef)!
153-
on(rovingFocusGroupEl, ENTRY_FOCUS_EVT, handleEntryFocus)
154-
})
155-
156-
onBeforeUnmount(() => {
157-
const rovingFocusGroupEl = unref(rovingFocusGroupRef)!
158-
off(rovingFocusGroupEl, ENTRY_FOCUS_EVT, handleEntryFocus)
159-
})
150+
useEventListener(rovingFocusGroupRef, ENTRY_FOCUS_EVT, handleEntryFocus)
160151
},
161152
})
162153
</script>

packages/components/tree/src/model/useKeydown.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// @ts-nocheck
2-
import { onBeforeUnmount, onMounted, onUpdated, shallowRef, watch } from 'vue'
3-
import { off, on } from '@element-plus/utils'
2+
import { onMounted, onUpdated, shallowRef, watch } from 'vue'
3+
import { useEventListener } from '@vueuse/core'
44
import { EVENT_CODE } from '@element-plus/constants'
55
import { useNamespace } from '@element-plus/hooks'
66
import type TreeStore from './tree-store'
@@ -19,11 +19,6 @@ export function useKeydown({ el$ }: UseKeydownOption, store: Ref<TreeStore>) {
1919

2020
onMounted(() => {
2121
initTabIndex()
22-
on(el$.value, 'keydown', handleKeydown)
23-
})
24-
25-
onBeforeUnmount(() => {
26-
off(el$.value, 'keydown', handleKeydown)
2722
})
2823

2924
onUpdated(() => {
@@ -110,6 +105,8 @@ export function useKeydown({ el$ }: UseKeydownOption, store: Ref<TreeStore>) {
110105
}
111106
}
112107

108+
useEventListener(el$, 'keydown', handleKeydown)
109+
113110
const initTabIndex = (): void => {
114111
treeItems.value = Array.from(
115112
el$.value.querySelectorAll(`.${ns.is('focusable')}[role=treeitem]`)

packages/utils/dom/event.ts

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,3 @@
1-
/** @deprecated use `element.addEventListener` instead */
2-
export const on = (
3-
element: HTMLElement | Document | Window | Element,
4-
event: string,
5-
handler: EventListenerOrEventListenerObject,
6-
useCapture = false
7-
): void => {
8-
if (element && event && handler) {
9-
element?.addEventListener(event, handler, useCapture)
10-
}
11-
}
12-
13-
/** @deprecated use `element.addEventListener` instead */
14-
export const off = (
15-
element: HTMLElement | Document | Window | Element,
16-
event: string,
17-
handler: EventListenerOrEventListenerObject,
18-
useCapture = false
19-
): void => {
20-
if (element && event && handler) {
21-
element?.removeEventListener(event, handler, useCapture)
22-
}
23-
}
24-
25-
/** @deprecated use `element.addEventListener` instead */
26-
export const once = (
27-
el: HTMLElement,
28-
event: string,
29-
fn: EventListener
30-
): void => {
31-
const listener = function (this: any, ...args: any) {
32-
if (fn) {
33-
fn.apply(this, args)
34-
}
35-
off(el, event, listener)
36-
}
37-
on(el, event, listener)
38-
}
39-
401
export const composeEventHandlers = <E>(
412
theirsHandler?: (event: E) => boolean | void,
423
oursHandler?: (event: E) => void,

0 commit comments

Comments
 (0)