Quellcode durchsuchen

fix: dialog `opened/closed` event triggered incorrectly,fixed #4902 (#4908)

Netfan vor 10 Monaten
Ursprung
Commit
1302092798
1 geänderte Dateien mit 8 neuen und 5 gelöschten Zeilen
  1. 8 5
      packages/@core/ui-kit/shadcn-ui/src/ui/dialog/DialogContent.vue

+ 8 - 5
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<InstanceType<typeof DialogContent> | 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({