@@ -17,6 +17,7 @@ interface ManagedOverlayOptionsPrivate<T extends Component> {
17
17
id : symbol
18
18
isMounted : boolean
19
19
isOpen : boolean
20
+ originalProps ?: ComponentProps < T >
20
21
resolvePromise ?: ( value : any ) => void
21
22
}
22
23
export type Overlay = OverlayOptions < Component > & ManagedOverlayOptionsPrivate < Component >
@@ -26,7 +27,6 @@ type OverlayInstance<T extends Component> = Omit<ManagedOverlayOptionsPrivate<T>
26
27
open : ( props ?: ComponentProps < T > ) => OpenedOverlay < T >
27
28
close : ( value ?: any ) => void
28
29
patch : ( props : Partial < ComponentProps < T > > ) => void
29
-
30
30
}
31
31
32
32
type OpenedOverlay < T extends Component > = Omit < OverlayInstance < T > , 'open' | 'close' | 'patch' | 'modelValue' | 'resolvePromise' > & {
@@ -37,15 +37,16 @@ function _useOverlay() {
37
37
const overlays = shallowReactive < Overlay [ ] > ( [ ] )
38
38
39
39
const create = < T extends Component > ( component : T , _options ?: OverlayOptions < ComponentProps < T > > ) : OverlayInstance < T > => {
40
- const { props : props , defaultOpen, destroyOnClose } = _options || { }
40
+ const { props, defaultOpen, destroyOnClose } = _options || { }
41
41
42
42
const options = reactive < Overlay > ( {
43
43
id : Symbol ( import . meta. dev ? 'useOverlay' : '' ) ,
44
44
isOpen : ! ! defaultOpen ,
45
45
component : markRaw ( component ! ) ,
46
46
isMounted : ! ! defaultOpen ,
47
47
destroyOnClose : ! ! destroyOnClose ,
48
- props : props || { }
48
+ originalProps : props || { } ,
49
+ props : { }
49
50
} )
50
51
51
52
overlays . push ( options )
@@ -64,6 +65,8 @@ function _useOverlay() {
64
65
// If props are provided, update the overlay's props
65
66
if ( props ) {
66
67
patch ( overlay . id , props )
68
+ } else {
69
+ patch ( overlay . id , overlay . originalProps )
67
70
}
68
71
69
72
overlay . isOpen = true
0 commit comments