Files
element-plus/packages/utils/vue/global-node.ts
thinkasany b1b69ed235 chore(utils): improve code style for global-node (#17675)
refactor: improve code style for global-node
2024-07-30 15:07:59 +08:00

35 lines
730 B
TypeScript

import { isClient } from '../browser'
const globalNodes: HTMLElement[] = []
let target: HTMLElement | undefined = !isClient ? undefined : document.body
export function createGlobalNode(id?: string) {
const el = document.createElement('div')
if (id !== undefined) {
el.setAttribute('id', id)
}
if (target) {
target.appendChild(el)
globalNodes.push(el)
}
return el
}
export function removeGlobalNode(el: HTMLElement) {
globalNodes.splice(globalNodes.indexOf(el), 1)
el.remove()
}
export function changeGlobalNodesTarget(el: HTMLElement) {
if (el === target) return
target = el
globalNodes.forEach((el) => {
if (target && !el.contains(target)) {
target.appendChild(el)
}
})
}