fenghe-auction/app/components/liveMinWindow/createMinWindow.js

55 lines
1.1 KiB
JavaScript
Raw Normal View History

2025-04-10 07:47:40 +00:00
import { createApp } from 'vue'
import MinWindow from '@/components/liveMinWindow/index.vue'
let minWindowInstance = null
// 创建悬浮窗
export const showMinWindow = (snapshot, props = {}) => {
if (minWindowInstance) {
hideMinWindow()
}
const container = document.createElement('div')
container.id = 'live-min-window-container'
document.body.appendChild(container)
const defaultProps = {
snapshot,
onClose: () => hideMinWindow(),
initialPosition: {
top: '80px',
right: '16px'
}
}
const app = createApp(MinWindow, {
...defaultProps,
...props
})
app.config.errorHandler = (err) => {
hideMinWindow()
}
minWindowInstance = app.mount(container)
return minWindowInstance
}
export const hideMinWindow = () => {
if (!minWindowInstance) return
const el = minWindowInstance.$el
el.style.transform = 'translateY(100%)'
el.style.opacity = '0'
const cleanup = () => {
el.parentNode?.remove()
minWindowInstance = null
}
if (document.startViewTransition) {
document.startViewTransition(() => cleanup())
} else {
setTimeout(cleanup, 300)
}
}