element-plus/packages/hooks/use-prevent-global/index.ts
三咲智子 55348b30b6
style: use prettier (#3228)
* style: use prettier

* style: just prettier format, no code changes

* style: eslint fix
object-shorthand, prefer-const

* style: fix no-void

* style: no-console
2021-09-04 19:29:28 +08:00

28 lines
512 B
TypeScript

import { watch } from 'vue'
import { on, off } from '@element-plus/utils/dom'
import type { Ref } from 'vue'
export default (
indicator: Ref<boolean>,
evt: string,
cb: (e: Event) => boolean
) => {
const prevent = (e: Event) => {
if (cb(e)) {
e.stopImmediatePropagation()
}
}
watch(
() => indicator.value,
(val) => {
if (val) {
on(document, evt, prevent, true)
} else {
off(document, evt, prevent, true)
}
},
{ immediate: true }
)
}