fix: prevent default event when hide dropdown (#1277)
This commit is contained in:
parent
bc08ef07d3
commit
9c82df0a7a
3 changed files with 52 additions and 1 deletions
34
composables/mask.ts
Normal file
34
composables/mask.ts
Normal file
|
@ -0,0 +1,34 @@
|
|||
import { h, render } from 'vue'
|
||||
import CommonMask from '~/components/common/CommonMask.vue'
|
||||
|
||||
export interface UseMaskOptions {
|
||||
getContainer?: () => HTMLElement
|
||||
background?: string
|
||||
zIndex?: number
|
||||
}
|
||||
|
||||
export function useMask(options: UseMaskOptions = {}) {
|
||||
const {
|
||||
background = 'transparent',
|
||||
getContainer = () => document.body,
|
||||
zIndex = 100,
|
||||
} = options
|
||||
const wrapperEl = (process.server ? null : document.createElement('div')) as HTMLDivElement
|
||||
|
||||
function show() {
|
||||
const container = getContainer()
|
||||
container?.appendChild(wrapperEl)
|
||||
const MaskComp = h(CommonMask, { background, zIndex })
|
||||
render(MaskComp, wrapperEl)
|
||||
}
|
||||
|
||||
function hide() {
|
||||
render(null, wrapperEl)
|
||||
wrapperEl.parentNode?.removeChild(wrapperEl)
|
||||
}
|
||||
|
||||
return {
|
||||
show,
|
||||
hide,
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue