mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
@@ -31,17 +31,28 @@
|
||||
@mouseenter="onContentEnter"
|
||||
@mouseleave="onContentLeave"
|
||||
>
|
||||
<slot />
|
||||
<el-visually-hidden :id="id" role="tooltip">
|
||||
{{ ariaLabel }}
|
||||
</el-visually-hidden>
|
||||
<!-- Workaround bug #6378 -->
|
||||
<template v-if="!destroyed">
|
||||
<slot />
|
||||
<el-visually-hidden :id="id" role="tooltip">
|
||||
{{ ariaLabel }}
|
||||
</el-visually-hidden>
|
||||
</template>
|
||||
</el-popper-content>
|
||||
</transition>
|
||||
</teleport>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { computed, defineComponent, inject, ref, unref, watch } from 'vue'
|
||||
import {
|
||||
computed,
|
||||
defineComponent,
|
||||
inject,
|
||||
onBeforeUnmount,
|
||||
ref,
|
||||
unref,
|
||||
watch,
|
||||
} from 'vue'
|
||||
import { onClickOutside } from '@vueuse/core'
|
||||
import { ElPopperContent } from '@element-plus/components/popper'
|
||||
import { ElVisuallyHidden } from '@element-plus/components/visual-hidden'
|
||||
@@ -64,6 +75,7 @@ export default defineComponent({
|
||||
const intermediateOpen = ref(false)
|
||||
const entering = ref(false)
|
||||
const leaving = ref(false)
|
||||
const destroyed = ref(false)
|
||||
const {
|
||||
controlled,
|
||||
id,
|
||||
@@ -85,6 +97,10 @@ export default defineComponent({
|
||||
return props.persistent
|
||||
})
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
destroyed.value = true
|
||||
})
|
||||
|
||||
const shouldRender = computed(() => {
|
||||
return unref(persistentRef) ? true : unref(open)
|
||||
})
|
||||
@@ -121,11 +137,11 @@ export default defineComponent({
|
||||
|
||||
const onBeforeEnter = () => {
|
||||
contentRef.value?.updatePopper?.()
|
||||
onBeforeShow()
|
||||
onBeforeShow?.()
|
||||
}
|
||||
|
||||
const onBeforeLeave = () => {
|
||||
onBeforeHide()
|
||||
onBeforeHide?.()
|
||||
}
|
||||
|
||||
const onAfterShow = () => {
|
||||
@@ -167,6 +183,7 @@ export default defineComponent({
|
||||
intermediateOpen,
|
||||
contentStyle,
|
||||
contentRef,
|
||||
destroyed,
|
||||
shouldRender,
|
||||
shouldShow,
|
||||
open,
|
||||
|
||||
Reference in New Issue
Block a user