From 150b334b1d242c6dc132193e23359c03e6f35666 Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Thu, 5 Jun 2025 17:22:42 +0200 Subject: [PATCH] fix(Modal/Slideover): don't emit `close:prevent` on `closeAutoFocus` --- src/runtime/components/Modal.vue | 6 +++--- src/runtime/components/Popover.vue | 6 +++--- src/runtime/components/Slideover.vue | 7 ++++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/runtime/components/Modal.vue b/src/runtime/components/Modal.vue index b56b5f23..d23fe18c 100644 --- a/src/runtime/components/Modal.vue +++ b/src/runtime/components/Modal.vue @@ -104,15 +104,15 @@ const contentEvents = computed(() => { } if (!props.dismissible) { - const events = ['pointerDownOutside', 'interactOutside', 'escapeKeyDown', 'closeAutoFocus'] as const - type EventType = typeof events[number] + const events = ['pointerDownOutside', 'interactOutside', 'escapeKeyDown'] + return events.reduce((acc, curr) => { acc[curr] = (e: Event) => { e.preventDefault() emits('close:prevent') } return acc - }, {} as Record void>) + }, defaultEvents as Record void>) } return defaultEvents diff --git a/src/runtime/components/Popover.vue b/src/runtime/components/Popover.vue index 3eac465f..7ee33376 100644 --- a/src/runtime/components/Popover.vue +++ b/src/runtime/components/Popover.vue @@ -75,15 +75,15 @@ const portalProps = usePortal(toRef(() => props.portal)) const contentProps = toRef(() => defu(props.content, { side: 'bottom', sideOffset: 8, collisionPadding: 8 }) as PopoverContentProps) const contentEvents = computed(() => { if (!props.dismissible) { - const events = ['pointerDownOutside', 'interactOutside', 'escapeKeyDown'] as const - type EventType = typeof events[number] + const events = ['pointerDownOutside', 'interactOutside', 'escapeKeyDown'] + return events.reduce((acc, curr) => { acc[curr] = (e: Event) => { e.preventDefault() emits('close:prevent') } return acc - }, {} as Record void>) + }, {} as Record void>) } return {} diff --git a/src/runtime/components/Slideover.vue b/src/runtime/components/Slideover.vue index 6eff0b76..858f47dc 100644 --- a/src/runtime/components/Slideover.vue +++ b/src/runtime/components/Slideover.vue @@ -103,16 +103,17 @@ const contentEvents = computed(() => { const defaultEvents = { closeAutoFocus: (e: Event) => e.preventDefault() } + if (!props.dismissible) { - const events = ['pointerDownOutside', 'interactOutside', 'escapeKeyDown', 'closeAutoFocus'] as const - type EventType = typeof events[number] + const events = ['pointerDownOutside', 'interactOutside', 'escapeKeyDown'] + return events.reduce((acc, curr) => { acc[curr] = (e: Event) => { e.preventDefault() emits('close:prevent') } return acc - }, {} as Record void>) + }, defaultEvents as Record void>) } return defaultEvents