Skip to content

Commit 2700e88

Browse files
authored
chore: remove circular import (#1093)
1 parent fdf67c0 commit 2700e88

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

src/domWrapper.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@ import WrapperLike from './interfaces/wrapperLike'
66
import { ComponentInternalInstance, ComponentPublicInstance } from 'vue'
77
import { FindAllComponentsSelector, FindComponentSelector } from './types'
88
import { matches, find } from './utils/find'
9-
import { VueWrapper, createWrapper } from './vueWrapper'
9+
import type { createWrapper, VueWrapper } from './vueWrapper'
1010

1111
export class DOMWrapper<ElementType extends Element>
1212
extends BaseWrapper<ElementType>
1313
implements WrapperLike
1414
{
15-
constructor(element: ElementType) {
15+
constructor(
16+
element: ElementType,
17+
private createVueWrapper: typeof createWrapper
18+
) {
1619
super(element)
1720
// plugins hook
1821
config.plugins.DOMWrapper.extend(this)
@@ -40,7 +43,7 @@ export class DOMWrapper<ElementType extends Element>
4043
}
4144
const result = this.element.querySelector(selector)
4245
if (result) {
43-
return new DOMWrapper(result)
46+
return new DOMWrapper(result, this.createVueWrapper)
4447
}
4548

4649
return createWrapperError('DOMWrapper')
@@ -55,7 +58,7 @@ export class DOMWrapper<ElementType extends Element>
5558
findAll<T extends Element>(selector: string): DOMWrapper<T>[]
5659
findAll(selector: string): DOMWrapper<Element>[] {
5760
return Array.from(this.element.querySelectorAll(selector)).map(
58-
(x) => new DOMWrapper(x)
61+
(x) => new DOMWrapper(x, this.createVueWrapper)
5962
)
6063
}
6164

@@ -71,7 +74,7 @@ export class DOMWrapper<ElementType extends Element>
7174
if (typeof selector === 'object' && 'ref' in selector) {
7275
const result = parentComponent.refs[selector.ref]
7376
if (result && !(result instanceof HTMLElement)) {
74-
return createWrapper(null, result as T)
77+
return this.createVueWrapper(null, result as T)
7578
} else {
7679
return createWrapperError('VueWrapper')
7780
}
@@ -81,15 +84,15 @@ export class DOMWrapper<ElementType extends Element>
8184
matches(parentComponent.vnode, selector) &&
8285
this.element.contains(parentComponent.vnode.el as Node)
8386
) {
84-
return createWrapper(null, parentComponent.proxy!)
87+
return this.createVueWrapper(null, parentComponent.proxy!)
8588
}
8689

8790
const result = find(parentComponent.subTree, selector).filter((v) =>
8891
this.element.contains(v.$el)
8992
)
9093

9194
if (result.length) {
92-
return createWrapper(null, result[0])
95+
return this.createVueWrapper(null, result[0])
9396
}
9497

9598
return createWrapperError('VueWrapper')
@@ -101,7 +104,7 @@ export class DOMWrapper<ElementType extends Element>
101104

102105
return find(parentComponent.subTree, selector)
103106
.filter((v) => this.element.contains(v.$el))
104-
.map((c) => createWrapper(null, c))
107+
.map((c) => this.createVueWrapper(null, c))
105108
}
106109

107110
private async setChecked(checked: boolean = true) {
@@ -173,6 +176,8 @@ export class DOMWrapper<ElementType extends Element>
173176
parentElement = parentElement.parentElement!
174177
}
175178

176-
return new DOMWrapper(parentElement).trigger('change')
179+
return new DOMWrapper(parentElement, this.createVueWrapper).trigger(
180+
'change'
181+
)
177182
}
178183
}

src/vueWrapper.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ export class VueWrapper<T extends ComponentPublicInstance>
139139
: this.element.querySelector && this.element.querySelector(selector)
140140

141141
if (result) {
142-
return new DOMWrapper(result)
142+
return new DOMWrapper(result, createWrapper)
143143
}
144144

145145
return createWrapperError('DOMWrapper')
@@ -214,11 +214,13 @@ export class VueWrapper<T extends ComponentPublicInstance>
214214
? this.element.querySelectorAll(selector)
215215
: ([] as unknown as NodeListOf<Element>)
216216

217-
return Array.from(results).map((element) => new DOMWrapper(element))
217+
return Array.from(results).map(
218+
(element) => new DOMWrapper(element, createWrapper)
219+
)
218220
}
219221

220222
isVisible(): boolean {
221-
const domWrapper = new DOMWrapper(this.element)
223+
const domWrapper = new DOMWrapper(this.element, createWrapper)
222224
return domWrapper.isVisible()
223225
}
224226

0 commit comments

Comments
 (0)