Skip to content

Commit d9e9fea

Browse files
authored
feat(Modal/Slideover): add after:enter event (#4187)
1 parent dae9f0b commit d9e9fea

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

src/runtime/components/Modal.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export interface ModalProps extends DialogRootProps {
5555
5656
export interface ModalEmits extends DialogRootEmits {
5757
'after:leave': []
58+
'after:enter': []
5859
'close:prevent': []
5960
}
6061
@@ -132,7 +133,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.modal || {})
132133
<DialogPortal v-bind="portalProps">
133134
<DialogOverlay v-if="overlay" :class="ui.overlay({ class: props.ui?.overlay })" />
134135

135-
<DialogContent :class="ui.content({ class: [!slots.default && props.class, props.ui?.content] })" v-bind="contentProps" @after-leave="emits('after:leave')" v-on="contentEvents">
136+
<DialogContent :class="ui.content({ class: [!slots.default && props.class, props.ui?.content] })" v-bind="contentProps" @after-enter="emits('after:enter')" @after-leave="emits('after:leave')" v-on="contentEvents">
136137
<VisuallyHidden v-if="!!slots.content && ((title || !!slots.title) || (description || !!slots.description))">
137138
<DialogTitle v-if="title || !!slots.title">
138139
<slot name="title">

src/runtime/components/Slideover.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export interface SlideoverProps extends DialogRootProps {
5555
5656
export interface SlideoverEmits extends DialogRootEmits {
5757
'after:leave': []
58+
'after:enter': []
5859
'close:prevent': []
5960
}
6061
@@ -132,7 +133,14 @@ const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.slideover ||
132133
<DialogPortal v-bind="portalProps">
133134
<DialogOverlay v-if="overlay" :class="ui.overlay({ class: props.ui?.overlay })" />
134135

135-
<DialogContent :data-side="side" :class="ui.content({ class: [!slots.default && props.class, props.ui?.content] })" v-bind="contentProps" @after-leave="emits('after:leave')" v-on="contentEvents">
136+
<DialogContent
137+
:data-side="side"
138+
:class="ui.content({ class: [!slots.default && props.class, props.ui?.content] })"
139+
v-bind="contentProps"
140+
@after-enter="emits('after:enter')"
141+
@after-leave="emits('after:leave')"
142+
v-on="contentEvents"
143+
>
136144
<VisuallyHidden v-if="!!slots.content && ((title || !!slots.title) || (description || !!slots.description))">
137145
<DialogTitle v-if="title || !!slots.title">
138146
<slot name="title">

0 commit comments

Comments
 (0)