diff --git a/packages/@core/ui-kit/shadcn-ui/src/ui/dialog/DialogContent.vue b/packages/@core/ui-kit/shadcn-ui/src/ui/dialog/DialogContent.vue index 367795c3..2e374683 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/ui/dialog/DialogContent.vue +++ b/packages/@core/ui-kit/shadcn-ui/src/ui/dialog/DialogContent.vue @@ -48,11 +48,14 @@ const delegatedProps = computed(() => { const forwarded = useForwardPropsEmits(delegatedProps, emits); const contentRef = ref | null>(null); -function onAnimationEnd() { - if (props.open) { - emits('opened'); - } else { - emits('closed'); +function onAnimationEnd(event: AnimationEvent) { + // 只有在 contentRef 的动画结束时才触发 opened/closed 事件 + if (event.target === contentRef.value?.$el) { + if (props.open) { + emits('opened'); + } else { + emits('closed'); + } } } defineExpose({