@@ -6,13 +6,16 @@ import WrapperLike from './interfaces/wrapperLike'
6
6
import { ComponentInternalInstance , ComponentPublicInstance } from 'vue'
7
7
import { FindAllComponentsSelector , FindComponentSelector } from './types'
8
8
import { matches , find } from './utils/find'
9
- import { VueWrapper , createWrapper } from './vueWrapper'
9
+ import type { createWrapper , VueWrapper } from './vueWrapper'
10
10
11
11
export class DOMWrapper < ElementType extends Element >
12
12
extends BaseWrapper < ElementType >
13
13
implements WrapperLike
14
14
{
15
- constructor ( element : ElementType ) {
15
+ constructor (
16
+ element : ElementType ,
17
+ private createVueWrapper : typeof createWrapper
18
+ ) {
16
19
super ( element )
17
20
// plugins hook
18
21
config . plugins . DOMWrapper . extend ( this )
@@ -40,7 +43,7 @@ export class DOMWrapper<ElementType extends Element>
40
43
}
41
44
const result = this . element . querySelector ( selector )
42
45
if ( result ) {
43
- return new DOMWrapper ( result )
46
+ return new DOMWrapper ( result , this . createVueWrapper )
44
47
}
45
48
46
49
return createWrapperError ( 'DOMWrapper' )
@@ -55,7 +58,7 @@ export class DOMWrapper<ElementType extends Element>
55
58
findAll < T extends Element > ( selector : string ) : DOMWrapper < T > [ ]
56
59
findAll ( selector : string ) : DOMWrapper < Element > [ ] {
57
60
return Array . from ( this . element . querySelectorAll ( selector ) ) . map (
58
- ( x ) => new DOMWrapper ( x )
61
+ ( x ) => new DOMWrapper ( x , this . createVueWrapper )
59
62
)
60
63
}
61
64
@@ -71,7 +74,7 @@ export class DOMWrapper<ElementType extends Element>
71
74
if ( typeof selector === 'object' && 'ref' in selector ) {
72
75
const result = parentComponent . refs [ selector . ref ]
73
76
if ( result && ! ( result instanceof HTMLElement ) ) {
74
- return createWrapper ( null , result as T )
77
+ return this . createVueWrapper ( null , result as T )
75
78
} else {
76
79
return createWrapperError ( 'VueWrapper' )
77
80
}
@@ -81,15 +84,15 @@ export class DOMWrapper<ElementType extends Element>
81
84
matches ( parentComponent . vnode , selector ) &&
82
85
this . element . contains ( parentComponent . vnode . el as Node )
83
86
) {
84
- return createWrapper ( null , parentComponent . proxy ! )
87
+ return this . createVueWrapper ( null , parentComponent . proxy ! )
85
88
}
86
89
87
90
const result = find ( parentComponent . subTree , selector ) . filter ( ( v ) =>
88
91
this . element . contains ( v . $el )
89
92
)
90
93
91
94
if ( result . length ) {
92
- return createWrapper ( null , result [ 0 ] )
95
+ return this . createVueWrapper ( null , result [ 0 ] )
93
96
}
94
97
95
98
return createWrapperError ( 'VueWrapper' )
@@ -101,7 +104,7 @@ export class DOMWrapper<ElementType extends Element>
101
104
102
105
return find ( parentComponent . subTree , selector )
103
106
. filter ( ( v ) => this . element . contains ( v . $el ) )
104
- . map ( ( c ) => createWrapper ( null , c ) )
107
+ . map ( ( c ) => this . createVueWrapper ( null , c ) )
105
108
}
106
109
107
110
private async setChecked ( checked : boolean = true ) {
@@ -173,6 +176,8 @@ export class DOMWrapper<ElementType extends Element>
173
176
parentElement = parentElement . parentElement !
174
177
}
175
178
176
- return new DOMWrapper ( parentElement ) . trigger ( 'change' )
179
+ return new DOMWrapper ( parentElement , this . createVueWrapper ) . trigger (
180
+ 'change'
181
+ )
177
182
}
178
183
}
0 commit comments