@@ -4,7 +4,7 @@ import { tryOnUnmounted } from '@vueuse/core'
4
4
import VueFinalModal from './components/VueFinalModal/VueFinalModal.vue'
5
5
import type { ModalSlotOptions , UseModalOptions , UseModalOptionsPrivate , UseModalReturnType , Vfm } from './Modal'
6
6
import { activeVfm , getActiveVfm } from './plugin'
7
- import type { ComponentProps } from './Component'
7
+ import type { ComponentEmit , ComponentProps } from './Component'
8
8
import { isString , objectEntries } from '~/utils'
9
9
10
10
/**
@@ -187,32 +187,30 @@ export function isModalSlotOptions(value: unknown): value is ModalSlotOptions {
187
187
return false
188
188
}
189
189
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 ]
193
193
return acc
194
- } , { } as Record < string , any > )
194
+ } , { } )
195
195
}
196
196
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 > {
200
198
return {
201
- 'onUpdate:modelValue' : ( val : boolean ) => emit ( 'update:modelValue' , val ) ,
199
+ 'onUpdate:modelValue' : ( val : boolean ) => emit ?. ( 'update:modelValue' , val ) ,
202
200
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' ) ,
207
205
208
206
/** onClickOutside will only be emitted when clickToClose equal to `false` */
209
- 'onClickOutside' : ( ) => emit ( 'clickOutside' ) ,
207
+ 'onClickOutside' : ( ) => emit ?. ( 'clickOutside' ) ,
210
208
}
211
209
}
212
210
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 >
216
214
emit ?: any
217
215
} ) {
218
216
const { props, modalProps, emit } = options
0 commit comments