@@ -4,7 +4,7 @@ import { tryOnUnmounted } from '@vueuse/core'
44import VueFinalModal from './components/VueFinalModal/VueFinalModal.vue'
55import type { ModalSlotOptions , UseModalOptions , UseModalOptionsPrivate , UseModalReturnType , Vfm } from './Modal'
66import { activeVfm , getActiveVfm } from './plugin'
7- import type { ComponentProps } from './Component'
7+ import type { ComponentEmit , ComponentProps } from './Component'
88import { isString , objectEntries } from '~/utils'
99
1010/**
@@ -187,32 +187,30 @@ export function isModalSlotOptions(value: unknown): value is ModalSlotOptions {
187187 return false
188188}
189189
190- export function pickModalProps ( props : any , modalProps : any ) {
191- return Object . keys ( modalProps ) . reduce ( ( acc , propName ) => {
192- acc [ propName ] = props [ propName ]
190+ export function pickModalProps ( props : Record < string , any > , modalProps : Record < string , any > ) {
191+ return Object . keys ( modalProps ) . reduce < Record < string , any > > ( ( acc , propName ) => {
192+ acc [ propName ] = props ?. [ propName ]
193193 return acc
194- } , { } as Record < string , any > )
194+ } , { } )
195195}
196196
197- export function byPassAllModalEvents ( emit ?: InstanceType < typeof VueFinalModal > [ '$emit' ] ) {
198- if ( ! emit )
199- return { }
197+ export function byPassAllModalEvents ( emit ?: ComponentEmit < typeof VueFinalModal > ) : ComponentProps < typeof VueFinalModal > {
200198 return {
201- 'onUpdate:modelValue' : ( val : boolean ) => emit ( 'update:modelValue' , val ) ,
199+ 'onUpdate:modelValue' : ( val : boolean ) => emit ?. ( 'update:modelValue' , val ) ,
202200
203- 'onBeforeClose' : ( payload : { stop : ( ) => void } ) => emit ( 'beforeClose' , payload ) ,
204- 'onClosed' : ( ) => emit ( 'closed' ) ,
205- 'onBeforeOpen' : ( payload : { stop : ( ) => void } ) => emit ( 'beforeOpen' , payload ) ,
206- 'onOpened' : ( ) => emit ( 'opened' ) ,
201+ 'onBeforeClose' : ( payload : { stop : ( ) => void } ) => emit ?. ( 'beforeClose' , payload ) ,
202+ 'onClosed' : ( ) => emit ?. ( 'closed' ) ,
203+ 'onBeforeOpen' : ( payload : { stop : ( ) => void } ) => emit ?. ( 'beforeOpen' , payload ) ,
204+ 'onOpened' : ( ) => emit ?. ( 'opened' ) ,
207205
208206 /** onClickOutside will only be emitted when clickToClose equal to `false` */
209- 'onClickOutside' : ( ) => emit ( 'clickOutside' ) ,
207+ 'onClickOutside' : ( ) => emit ?. ( 'clickOutside' ) ,
210208 }
211209}
212210
213- export function useVfmAttrs ( options : {
214- props : Record < any , any >
215- modalProps : Record < any , any >
211+ export function useVfmAttrs < TP extends Component , MP extends Component > ( options : {
212+ props : ComponentProps < TP >
213+ modalProps : ComponentProps < MP >
216214 emit ?: any
217215} ) {
218216 const { props, modalProps, emit } = options
0 commit comments