Files
element-plus/packages/hooks/use-prevent-global/index.ts
Noblet Ouways 2f17df1209 style(eslint-config): newline before import type (#21036)
* perf: change to import-x

* feat: add rules

* chore: fix rule

* chore: fix

* chore: fix

* chore: fix

* style: `pnpm lint:fix`

* Revert "style: `pnpm lint:fix`"

This reverts commit db0116a288.

* Revert "chore: fix"

This reverts commit 69c82a90c0.

* chore: fix

* style: `pnpm lint:fix`

* fix: lint

* chore: `pnpm format`
2025-06-16 15:37:12 +08:00

27 lines
615 B
TypeScript

import { watch } from 'vue'
import { useEventListener } from '@vueuse/core'
import type { Ref } from 'vue'
export const usePreventGlobal = <E extends keyof DocumentEventMap>(
indicator: Ref<boolean>,
evt: E,
cb: (e: DocumentEventMap[E]) => boolean
) => {
const prevent = (e: DocumentEventMap[E]) => {
if (cb(e)) e.stopImmediatePropagation()
}
let stop: (() => void) | undefined = undefined
watch(
() => indicator.value,
(val) => {
if (val) {
stop = useEventListener(document, evt, prevent, true)
} else {
stop?.()
}
},
{ immediate: true }
)
}