41 lines
770 B
Vue
41 lines
770 B
Vue
<template>
|
|
<div ref="dom_btn" :class="$style.content" @click="handleShowPopup">
|
|
<slot />
|
|
<base-popup v-model:visible="visible" :el="dom_btn">
|
|
<slot name="content" />
|
|
</base-popup>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { ref, defineExpose } from '@common/utils/vueTools'
|
|
|
|
const visible = ref(false)
|
|
const dom_btn = ref<HTMLElement | null>(null)
|
|
|
|
const handleShowPopup = (evt: MouseEvent) => {
|
|
if (visible.value) evt.stopPropagation()
|
|
setTimeout(() => {
|
|
// if (!)
|
|
visible.value = !visible.value
|
|
}, 50)
|
|
}
|
|
|
|
defineExpose({
|
|
hide() {
|
|
visible.value = false
|
|
},
|
|
})
|
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" module>
|
|
@import '@renderer/assets/styles/layout.less';
|
|
.content {
|
|
position: relative;
|
|
display: inline-block;
|
|
}
|
|
|
|
</style>
|